La stratégie s'appelle
Le noyau de cette stratégie repose sur l'indicateur Super Trend pour juger de la direction de la tendance actuelle. L'indicateur Super Trend calcule les bandes supérieures et inférieures en fonction de la plage moyenne vraie (ATR). Lorsque les prix franchissent la bande supérieure, c'est un signal haussier et lorsque les prix franchissent la bande inférieure, c'est un signal baissier.
Lorsque l'indicateur Super Trend détermine une tendance haussière, si le chandelier est un corps rouge (close below open), allez long. Lorsque l'indicateur Super Trend détermine une tendance à la baisse, si le chandelier est un corps vert (close above open), allez court. Cela permet d'atteindre la tendance après le momentum de rupture du trading.
Cette stratégie combine le jugement de tendance et les caractéristiques de l'élan pour filtrer efficacement les fausses ruptures et améliorer la validité des signaux de trading.
Les principaux avantages sont résumés comme suit:
Les principaux risques de cette stratégie sont les suivants:
Les contre-mesures sont les suivantes:
Cette stratégie peut être optimisée dans les aspects suivants:
En général, cette stratégie est très appropriée pour les positions à moyen et court terme. En combinant le jugement de tendance et la dynamique de rupture, elle peut filtrer efficacement le bruit et améliorer le taux de gain.
/*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 //2018 //@version=2 strategy("Noro's SuperTrend Strategy v1.0", shorttitle = "ST str 1.0", 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 = "Lot, %") cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR") Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100) ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100) centr = input(true, defval = true, title = "need center of ATR?") border = input(false, defval = false, title = "need border?") 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") //Super Trend ATR 1 src = close Up=hl2-(Factor*atr(ATR)) Dn=hl2+(Factor*atr(ATR)) TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1) Tsl1 = Trend==1? TUp: TDown Tsl2 = Trend==1? TDown: TUp limit = (Tsl1 - Tsl2) / 100 * cloud upcloud = Tsl1 - limit dncloud = Tsl2 + limit //Cloud linecolor = Trend == 1 ? green : red centercolor = centr == true ? blue : na cloudcolor = Trend == 1 ? green : red cline = (Tsl1 + Tsl2) / 2 P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1") P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2") P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center") P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1") P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1") fill(P1, P4, color = linecolor == red ? red : lime, transp = 50) fill(P2, P5, color = linecolor == red ? red : lime, transp = 50) //Signals up = Trend == 1 and close < open //and low < cline dn = Trend == -1 and close > open //and high > cline //Trading size = strategy.position_size lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up strategy.entry("Long", strategy.long, needlong ? lot : 0) if dn strategy.entry("Short", strategy.short, needshort ? lot : 0)