Stratégie de croisement de moyenne mobile de gain de stylo relatif


Date de création: 2023-10-18 11:16:53 Dernière modification: 2023-10-18 11:16:53
Copier: 0 Nombre de clics: 644
1
Suivre
1617
Abonnés

Stratégie de croisement de moyenne mobile de gain de stylo relatif

Aperçu

Cette stratégie utilise principalement le rapport de la ligne de soleil par rapport au corps de la plume (RB) pour juger de la tendance et effectuer des transactions automatiques avec des arrêts et des arrêts. La ligne de la plume par rapport au corps de la plume dans le nom de la stratégie fait référence à la ligne de la plume par rapport au corps de la plume calculée.

Principe de stratégie

La stratégie est basée sur l’indicateur RBI de Vitelot, qui est la moyenne mobile du rapport de masse par penne (RB) de la ligne K du jour. La méthode de calcul de RB est la suivante:

Dans la formule, RB équivaut au rapport entre la longueur de l’entier de la ligne Y et la longueur de la ligne K entière, pour une valeur positive; le RB de la ligne Y pour une valeur négative. La plage de valeurs de RB est comprise entre -1 et 1 [2].

L’indicateur RBI filtre le bruit à travers la moyenne mobile de la RB, capturant les caractéristiques essentielles du marché. Il génère un signal d’achat lorsque l’indicateur RBI traverse sa ligne de signal et un signal de vente lorsque l’indicateur RBI traverse sa ligne de signal.

Afin de filtrer les faux signaux des phases d’incertitude à plusieurs têtes, la stratégie détermine également si le prix de clôture est supérieur à la moyenne de l’EMA de 13 cycles lorsque le signal est traversé sur l’indicateur RBI. La stratégie à plusieurs têtes est exécutée si elle est supérieure à la moyenne de l’EMA de 13 cycles pour produire un véritable signal d’achat.

La stratégie met également en place des mécanismes de stop-loss et de stop-loss pour contrôler le risque et bloquer les bénéfices. Après l’ouverture de la position, le trail suit le nombre de points de stop-loss définis, tout en définissant un nombre de points de stop-loss fixe.

Analyse des avantages

  • L’indicateur de la RBI filtre les bruits et capte les caractéristiques des tendances du marché pour éviter d’être induit en erreur par les fausses signaux des marchés en mouvement.

  • La combinaison de filtrage homogène permet d’éviter efficacement les fausses signaux de périodes d’incertitude de plusieurs têtes et de réduire les pertes de têtes vides.

  • Le paramètre de stop loss aide à réduire le risque de perte de positions individuelles, tout en bloquant les bénéfices et en augmentant le taux de profit global.

  • Cette stratégie est moins paramétrable, plus facile à comprendre et plus adaptée aux transactions automatisées.

Analyse des risques

  • La stratégie est basée uniquement sur les indicateurs de la RBI, et si les indicateurs eux-mêmes donnent un mauvais signal, la stratégie globale échouera également.

  • Une mauvaise configuration des paramètres de l’indicateur peut également entraîner une baisse de la qualité du signal de trading.

  • Les indicateurs techniques peuvent être inefficaces dans certaines conditions de marché et ne peuvent pas éviter complètement les pertes.

  • Un stop loss trop petit peut entraîner des arrêts trop fréquents; un stop loss trop grand peut augmenter les pertes individuelles.

  • Les retraits insuffisamment contrôlés peuvent entraîner un risque de rupture de position.

Direction d’optimisation

  • Il est possible de tester différentes combinaisons de paramètres pour optimiser les paramètres de l’indicateur RBI.

  • Il est possible d’ajouter d’autres indicateurs auxiliaires pour filtrer et améliorer la qualité du signal.

  • Les paramètres d’arrêt de perte peuvent être optimisés par l’entraînement de l’apprentissage automatique.

  • La stratégie de gestion de fonds peut être ajoutée pour contrôler la position globale et l’exposition au risque.

  • Il est possible d’essayer différentes stratégies de tenue de position, comme la tenue de position pendant la nuit ou la négociation à court terme.

Résumer

Cette stratégie est une stratégie de suivi de tendance simple et directe. Elle permet de juger de la direction de la tendance en calculant le croisement de la ligne moyenne du rapport jour/pièce, tout en ajoutant un filtre uniforme et un stop loss pour contrôler les risques, ce qui permet d’éviter efficacement les faux signaux des marchés oscillants.

Code source de la stratégie
/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("RBI Backtest /w TSSL", shorttitle="RBI Strategy", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
// RBI:
//  The EMA of the relative body (RB) of Japanese candles is evaluated.
//  The RB of a candle (my definition) is simply the ratio of the body with respect to its full length
//  and taken positive for bull candles and negative for bear candles:
//      e.g. a bull "marubozo" has RB=1 a bear "marubozo" has RB=-1;
//      a "doji" has RB=0.
//  This simple indicator grasps the essence of the market by filtering out a great deal of noise.
//
//  A flag can be selected to calculate its very basic binary version, where a bull candle counts as a one
//  and a bear candle counts as a minus one.
//
//  Enter (or exit) the market when the signal line crosses the base line.
//  When the market is choppy we have a kind of alternating bear and bull candles so that
//  RBI is FLAT and usually close to zero. 
//  Therefore avoid entering the market when RBI is FLAT and INSIDE the Exclusion level.
//  The exclusion level is to be set by hand: go back in history and check when market was choppy; a good
//  way to set it is to frame the oscillations of RBI whe price was choppy.
//
//  RBI is more effective when an EMA of price is used as filtering. I found EMA(13) to be
//  a decent filter: go long when base crosses signal upwards AND closing price is above EMA(13);
//  same concept for going short.
//
//  As any other indicator, use it with responsibility: THERE CAN'T BE A SINGLE MAGIC INDICATOR winning
//  all trades.
//
//  Above all, have fun.
//
// Vitelot/Yanez/Vts March 31, 2019

par1 = input(5, title="MA1 Period")
par2 = input(5, title="Signal Period")
exclusion = input(0.2, title="Exclusion level")

useBin = input(false, title="Calculate the binary version")

treshold_long = input(0, title="Treshold Long")
treshold_short = input(0, title="Treshold Short")

fixedSL = input(title="SL Activation", defval=300)
trailSL = input(title="SL Trigger", defval=1)
fixedTP = input(title="TP Activation", defval=120)
trailTP = input(title="TP Trigger", defval=1)

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 6, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 19, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
startTimeOk()  => true // create function "within window of time" if statement true

ynSimple(t) =>
    s = (close>open)? 1: -1
    ema(sum(s,t),t)

ynRel(t) =>
    s = (close-open)/(high-low)
    ema(sum(s,t),t)

yn = useBin? ynSimple(par1): ynRel(par1) 
sig = ema(yn,par2)


plot(yn, color=aqua, title="RBI", linewidth=3, transp=0)
plot(sig, color=orange, title="Signal", linewidth=2, transp=0)

hline(0, color=white, title="Zero level", editable=false)
hline(exclusion, color=yellow, title="Exclusion level +", editable=true, linestyle=line)
hline( 0-exclusion, color=yellow, title="Exclusion level -", editable=true, linestyle=line)

long = crossover(yn,sig) and yn < treshold_long
short = crossover(sig,yn)  and yn > treshold_short

// === STRATEGY - LONG POSITION EXECUTION ===
strategy.entry("Long", strategy.long, when= long and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) 
strategy.exit("Exit", when= short)
// === STRATEGY - SHORT POSITION EXECUTION ===
strategy.entry("Short", strategy.short, when= short and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.exit("Exit", when= long)