
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.
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.
Comment optimiser:
Il y a encore de la place pour optimiser cette stratégie:
Il est possible d’introduire une combinaison d’autres indicateurs pour filtrer certains signaux invalides. Par exemple, MACD, KD, etc.
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.
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.
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.
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.
/*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()