Cette stratégie calcule le dernier prix le plus élevé (lastbull) et le dernier prix le plus bas (lastbear). Elle compare ensuite le prix actuel avec lastbull et lastbear pour déterminer si le prix est entré dans une certaine fourchette et génère ainsi des signaux de trading.
La stratégie calcule d'abord le dernier prix le plus élevé lastbull et le dernier prix le plus bas lastbear. puis elle calcule le pourcentage de variation ddl du prix courant proche par rapport au lastbull, et le pourcentage de variation dds par rapport au lastbear.
Lorsque ddl est inférieur au signal de long terme configuré, un signal long est généré.
Lorsqu'il reçoit un signal long, il ouvre une position longue si le paramètre needlong est vrai. Lorsqu'il reçoit un signal court, il ouvre une position courte si le paramètre needshort est vrai.
Il ferme une position longue lorsque le prix augmente après une ouverture longue, et ferme une position courte lorsque le prix chute après une ouverture courte.
Cette stratégie combine l'analyse de tendance et de fourchette. Elle peut capturer les tendances et générer des signaux de trading à partir des ruptures de fourchette. Par rapport aux stratégies de suivi de tendance simples, elle peut rapidement capturer une nouvelle direction de tendance après la rupture de fourchette.
Les paramètres sont hautement configurables pour différents produits.
Il n'y a pas de mécanisme de stop loss dans cette stratégie pour limiter la perte par transaction.
L'algorithme de dimensionnement de la position peut être personnalisé en fonction des produits pour stabiliser la taille de la position.
Cette stratégie combine l'analyse des tendances et la rupture de la fourchette pour générer des signaux de trading, qui peuvent capturer de nouvelles tendances et tirer parti des caractéristiques de la fourchette.
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's DDL Strategy", shorttitle = "DDL str", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings needlong = input(true, title = "Long") needshort = input(true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") signalshort = input(3.0, title = "Short, %") signallong = input(-3.0, title = "Long, %") 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") //Levels bull = close > close[1] ? 1 : 0 bear = close < close[1] ? 1 : 0 lastbull = 0.0 lastbull := bull ? close : lastbull[1] lastbear = 0.0 lastbear := bear ? close : lastbear[1] //Signals ddl = ((close / lastbull) - 1) * 100 up = ddl < signallong dds = ((close / lastbear) - 1) * 100 dn = dds > signalshort //Lines plot(dds, style = plot.style_area, color = color.red, transp = 0) plot(ddl, style = plot.style_area, color = color.lime, transp = 0) plot(0, color = color.black, linewidth = 2, transp = 0) //Background col = (up and needlong) or (dn and needshort) ? color.yellow : na bgcolor(col, transp = 20) //Orders lot = 0.0 lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] truetime = true if up strategy.entry("Long", strategy.long, lot, when = needlong and truetime) if dn strategy.entry("Short", strategy.short, lot, when = needshort and truetime) if strategy.position_size > 0 and close > open strategy.entry("Close", strategy.short, 0) if strategy.position_size < 0 and close < open strategy.entry("Close", strategy.long, 0)