
La estrategia genera una señal de negociación calculando el último precio de parada y el último precio de bajada, combinado con el precio actual para determinar si el precio ha entrado en un área determinada. Hacer más cuando el precio supera un cierto porcentaje del precio de parada anterior y hacer menos cuando el precio es inferior a un cierto porcentaje del precio de bajada anterior.
La estrategia primero calcula el precio de la última parada lastbull y el precio de la última parada lastbear. Luego calcula el precio actual close en relación con el cambio de lastbull en proporción ddl, y el cambio de lastbear en proporción dds.
Cuando ddl está por debajo del umbral de señal de acopio configurado signallong produce una señal de acopio up, y cuando dds está por encima del umbral de señal de acopio configurado signalshort produce una señal de acopio dn。
Cuando se reciba una señal de hacer más, se abrirán más posiciones si se necesita hacer más parámetros needlong para verdad, y cuando se reciba una señal de hacer a la baja, se abrirán posiciones vacías si se necesita hacer parámetros needshort para verdad.
La condición de la posición plana es que el aumento de precios después de abrir más posiciones significa más posiciones, y la caída de precios después de abrir posiciones vacías significa posiciones vacías.
La estrategia combina la tendencia y el juicio de la franja, tanto puede capturar la tendencia y puede utilizar la ruptura de la franja para generar señales de comercio, hacer más flexibilidad de cambio de posición libre. En comparación con la simple estrategia de seguimiento de la tendencia, que puede capturar rápidamente la nueva dirección de la tendencia después de la ruptura de la franja de composición.
Los parámetros se pueden configurar de forma espaciosa y se pueden ajustar con flexibilidad para hacer más parámetros de vacío, adaptándose a diferentes variedades. Se puede configurar un período de tiempo de vaciado para evitar nodos de tiempo importantes.
La estrategia no tiene un mecanismo de parada de pérdidas, por lo que no puede controlar eficazmente las pérdidas individuales. Cuando el rango de comercio de variedades es más volátil, el cálculo de la posición es susceptible a la influencia del precio.
Se puede establecer un stop loss para limitar las pérdidas individuales. Se puede establecer una posición más estable de acuerdo con los diferentes tipos de algoritmos de posición.
La estrategia integra el juicio de la tendencia y la ruptura de la franja para generar señales de comercio, que pueden capturar nuevas direcciones de tendencia y aprovechar las características de la oscilación de la franja. La configuración de los parámetros es flexible y el espacio se puede ajustar para adaptarse a diferentes variedades. La estrategia tiene un gran espacio de optimización y se puede mejorar desde múltiples ángulos para adaptarse a un entorno de mercado más complejo.
/*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)