
La stratégie génère un signal de transaction en calculant le dernier prix d’arrêt et le dernier prix de baisse, combiné au prix actuel pour déterminer si le prix est entré dans un certain domaine. Faites plus lorsque le prix est supérieur à un certain pourcentage du dernier prix d’arrêt et faites moins lorsque le prix est inférieur à un certain pourcentage du dernier prix de baisse.
La stratégie commence par calculer le dernier arrêt de prix lastbull et le dernier arrêt de prix lastbear. Ensuite, elle calcule le taux de variation de la close actuelle par rapport à lastbull (ddl) et le taux de variation de la close actuelle par rapport à lastbear (dds).
Un signal de commutation up est généré lorsque ddl est inférieur au seuil de commutation de signal configuré signallong, et un signal de commutation dn。 lorsque dds est supérieur au seuil de commutation de signal configuré signalshort.
Si vous recevez un signal de multiplication, ouvrez une position plus longue si vous avez besoin de plusieurs paramètres (needlong) et ouvrez une position vide si vous avez besoin de paramètres (needshort) si vous recevez un signal de dépréciation. Le coefficient de capital d’ouverture est calculé par les intérêts du compte.
La condition de placement est que l’augmentation du prix après l’ouverture d’une position plus élevée entraîne une plus grande placement, et la baisse du prix après l’ouverture d’une position vide entraîne une position vide.
La stratégie combine la tendance et le jugement de la plage, permettant à la fois de capturer la tendance et de générer des signaux de négociation en utilisant des ruptures de plage, ce qui permet une plus grande flexibilité de commutation. Par rapport à la simple stratégie de suivi de la tendance, elle permet de capturer rapidement la nouvelle direction de la tendance après la rupture de la plage.
Les paramètres peuvent être configurés de manière spatiale, avec une flexibilité pour les paramètres de stockage multiple, adaptés aux différentes variétés. Les périodes de stockage peuvent être configurées pour éviter les nœuds importants.
Il n’y a pas de mécanisme de stop loss dans la stratégie, ce qui ne permet pas de contrôler efficacement les pertes individuelles.
Il est possible de définir un stop-loss pour limiter les pertes individuelles. Il est possible de définir des algorithmes de position de différentes variétés pour rendre les positions plus stables.
La stratégie intègre le jugement de la tendance et la rupture de la zone pour générer des signaux de négociation, permettant à la fois de capturer de nouvelles directions de tendance et d’utiliser les caractéristiques de la secousse de la zone. La configuration des paramètres est flexible, l’espace peut être ajusté pour s’adapter à différentes variétés. La stratégie a un grand espace d’optimisation et peut être améliorée sous plusieurs angles pour s’adapter à un environnement de marché plus complexe.
/*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)