Esta estrategia calcula el último precio más alto (lastbull) y el último precio más bajo (lastbear). Luego compara el precio actual con lastbull y lastbear para determinar si el precio ha entrado en un cierto rango y, por lo tanto, genera señales comerciales.
La estrategia calcula primero el último precio más alto lastbull y el último precio más bajo lastbear, luego calcula el porcentaje de cambio ddl del precio actual cerrado en relación con lastbull y el porcentaje de cambio dds en relación con lastbear.
Cuando ddl es inferior al límite de señal larga configurado, se genera una señal larga. Cuando dds es superior al límite de señal corta configurado, se genera una señal corta dn.
Al recibir la señal larga, abre una posición larga si el parámetro needlong es verdadero. Al recibir la señal corta, abre una posición corta si el parámetro needshort es verdadero.
Cierra una posición larga cuando el precio aumenta después de abrir una posición larga, y cierra una posición corta cuando el precio cae después de abrir una posición corta.
Esta estrategia combina el análisis de tendencia y rango. Puede capturar tendencias y generar señales comerciales de rupturas de rango. En comparación con las estrategias simples de seguimiento de tendencias, puede capturar rápidamente una nueva dirección de tendencia después de la ruptura de rango.
Los parámetros son altamente configurables para diferentes productos.
No hay un mecanismo de stop loss en esta estrategia para limitar la pérdida por operación.
El algoritmo de dimensionamiento de posición se puede personalizar en función de los productos para estabilizar el tamaño de la posición.
Esta estrategia combina el análisis de tendencias y la ruptura de rango para generar señales comerciales, que pueden capturar nuevas tendencias y aprovechar las características de rango.
/*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)