Stratégie de suivi de tendance inversée


Date de création: 2024-01-03 16:34:28 Dernière modification: 2024-01-03 16:34:28
Copier: 0 Nombre de clics: 654
1
Suivre
1621
Abonnés

Stratégie de suivi de tendance inversée

Aperçu

La stratégie de suivi de tendance inverse est une stratégie de trading de tendance basée sur des moyennes mobiles et des extrêmes de prix. La stratégie utilise deux moyennes mobiles pour suivre la tendance des prix et ouvrir une position inverse lorsque la tendance est inversée.

Principe de stratégie

La stratégie utilise des moyennes mobiles hma et lma de 3 longueurs de haut et bas pour suivre la tendance des prix. Interprète comme haussière lorsque le prix est en hausse et comme baisse lorsque le prix est en baisse.

La stratégie permet également de calculer les hauts et les bas de la courbe de prix en fonction des plus récents prix de la ligne de la racine de barres K. Uplevel et dnlevel。uplevel ajoutent un coefficient de redressement corr sur la base du plus récent prix de la ligne de la racine de barres K; dnlevel soustrait un coefficient de redressement corr sur la base du plus récent prix de la ligne de la racine de barres K.

Lorsque vous ouvrez un ordre en plus, le prix d’arrêt est le canal supérieur; lorsque vous ouvrez un ordre vide, le prix d’arrêt est le canal inférieur. Cela permet de contrôler efficacement le risque de perte causé par le renversement des prix.

Quand un signal de revers apparaît, la stratégie ouvre immédiatement une position de revers pour suivre la nouvelle tendance des prix. C’est le principe de suivi de revers.

Avantages stratégiques

  • La stratégie exploite pleinement les avantages de la traçabilité des moyennes mobiles pour capturer rapidement les tendances des prix.
  • L’utilisation de la porte de prix et de la position inversée pour maîtriser les risques et verrouiller efficacement les bénéfices;
  • La logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre.
  • Des paramètres personnalisables, tels que la longueur de la tendance, le coefficient de rétroaction, etc., s’adaptent à différentes variétés;
  • Les investisseurs doivent être en mesure d’exploiter pleinement les opportunités offertes par la tendance.

Risque stratégique

  • La période de volatilité des prix peut générer de faux signaux.
  • La reprise de la tendance ne déclenche pas forcément un arrêt des pertes, et les pertes maximales ne sont pas maîtrisées.
  • Une mauvaise configuration des paramètres peut entraîner une sursensibilité ou une lenteur;
  • Il faut choisir la bonne variété et la bonne période pour être efficace.

Comment optimiser:

  1. Le filtre est invalide en combinaison avec d’autres indicateurs;
  2. L’augmentation des stop-loss mobiles afin de bloquer les bénéfices et de réduire les retraits maximaux;
  3. Test et optimisation des paramètres pour différentes variétés et cycles.

Orientation de l’optimisation de la stratégie

Il y a encore de la place pour optimiser cette stratégie:

  1. Il est possible d’introduire une combinaison d’autres indicateurs pour filtrer certains signaux invalides. Par exemple, MACD, KD, etc.

  2. Des logiques d’arrêt adaptatives, telles que l’arrêt mobile, l’arrêt de solde, etc., peuvent être ajoutées pour contrôler davantage le risque.

  3. Il est possible de tester l’impact de différents paramètres sur l’efficacité de la stratégie, d’optimiser la combinaison de paramètres. Par exemple, la longueur du cycle MA, la taille du coefficient de rétroaction, etc.

  4. La stratégie est actuellement pour les transactions à intervalles réguliers, mais peut être adaptée pour les transactions tout au long de la journée. Cela peut nécessiter d’autres règles de filtrage.

Résumer

Cette stratégie est une stratégie de trading de renversement de tendance qui utilise la chaîne de prix combinée à des moyennes mobiles. Elle permet de suivre efficacement les mouvements de prix en suivant la tendance et en ouvrant des positions de renversement en temps opportun.

Code source de la stratégie
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's 3Bars Strategy by Larry Williams", shorttitle = "3Bars", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showos = input(true, defval = true, title = "Show Levels one side")
showcl = input(false, defval = false, title = "Show Levels continuous line")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

len = input(3)

hma = sma(high, len)
lma = sma(low, len)
plot(hma)
plot(lma)

//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)

//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] and showcl == false ? na : showos and trend[1] == 1 ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] and showcl == false ? na : showos and trend[1] == -1 ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)

//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Long stop", strategy.short, 0, stop = lma)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)
    strategy.entry("Short stop", strategy.long, 0, stop = hma)
    
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()