
La estrategia se basa en el indicador de la vía donchiana para realizar operaciones de tendencia. Se realiza un seguimiento de la tendencia cuando el precio supera la vía donchiana; se realiza un cierre de pérdida cuando el precio regresa a la vía donchiana.
Calcula los precios máximos y mínimos de un período determinado, formando un canal de Dongxian. La línea media del canal es el promedio de los precios máximos y mínimos del período.
Cuando el precio se rompe en la parte superior del canal, se abren posiciones de más cabeza; cuando el precio se rompe en la parte inferior del canal, se abren posiciones de cabeza vacía.
Una vez abierta la posición, la línea de parada sigue la línea media del canal; la línea de parada sigue el precio de una cierta proporción del canal de ruptura.
Cuando el precio vuelve a entrar en el corredor, se realiza una parada de pérdidas.
La estrategia utiliza el canal de Dongxian para determinar la dirección de la tendencia y capturar rápidamente las brechas en el mercado.
El uso de la línea media de seguimiento de pérdidas en el canal permite la protección de las ganancias.
Ampliar el margen de ganancias de acuerdo con la amplitud de frenado que el usuario haya configurado.
Capacidad de adaptarse a diferentes situaciones de juego, como reajuste, ruptura, reajuste, etc., para ajustar las posiciones con flexibilidad.
La lógica de la estrategia de negociación es simple, clara y fácil de entender.
Las estrategias basadas únicamente en la negociación de la ruptura de la vía no pueden responder eficazmente a la consolidación de los mercados.
Existe el riesgo de una falsa señal de penetración, que debe ser verificada junto con otros indicadores.
La inadecuada configuración para detener las ganancias y pérdidas puede conducir a una pérdida prematura o a una ganancia insuficiente.
La configuración incorrecta de los ciclos de canal puede afectar la precisión de las señales de negociación.
Las posiciones demasiado grandes amplifican el impacto de las fluctuaciones del mercado en la cuenta.
El riesgo de interrupciones inesperadas en el comercio de robots es la necesidad de asegurar la estabilidad y la fiabilidad del sistema.
En combinación con los indicadores de volumen de transacciones, evita seguir brechas falsas.
Aumentar el conocimiento de los indicadores de tendencia y mejorar la precisión de las señales de apertura de posiciones.
Optimización de los algoritmos de stop loss y ajuste dinámico.
Adaptar las estrategias de gestión de posiciones en tiempo real a las condiciones del mercado.
Estudiar los datos de las partidas nocturnas y previas a las partidas, buscando mejores oportunidades de ingreso.
Prueba diferentes parámetros de ciclo para encontrar la combinación óptima de parámetros.
Añadir módulos de verificación de modelos para evitar sobreajustes.
La estrategia en general es una estrategia de tendencia de adaptación más simple y práctica. Tiene características como la captura rápida de brechas de tendencia y la protección de ganancias. También hay algunas desventajas, como la ineficacia de la corrección de la corrección, la falsa brecha conlleva pérdidas. La dirección de optimización futura consiste en combinar más señales de filtración de indicadores y ajustar dinámicamente la estrategia de parada de pérdidas, para adaptarse a más condiciones de mercado.
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy(title = "Noro's Donchian Strategy", shorttitle = "Donchian str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
tp = input(defval = 10, minval = 1, title = "Take profit")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
pclen = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
showof = input(true, defval = true, title = "Show Offset")
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")
//Price Channel
h = highest(high, pclen)
l = lowest(low, pclen)
center = (h + l) / 2
tpl = h * (100 + tp) / 100
tps = l * (100 - tp) / 100
//Lines
tpcol = showll ? color.lime : na
pccol = showll ? color.blue : na
slcol = showll ? color.red : na
offset = showof ? 1 : 0
plot(tpl, offset = offset, color = tpcol, title = "TP Long")
plot(h, offset = offset, color = pccol, title = "Channel High")
plot(center, offset = offset, color = slcol, title = "Cannel Center")
plot(l, offset = offset, color = pccol, title = "Channel Low")
plot(tps, offset = offset, color = tpcol, title = "TP Short")
//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)
//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
mo = 0
mo := strategy.position_size != 0 ? 0 : high >= center and low <= center ? 1 : mo[1]
if h > 0
strategy.entry("Long", strategy.long, lot, stop = h, when = strategy.position_size <= 0 and needlong and truetime and mo)
strategy.exit("TP Long", "Long", limit = tpl, stop = center)
strategy.entry("Short", strategy.short, lot, stop = l, when = strategy.position_size >= 0 and needshort and truetime and mo)
strategy.exit("TP Short", "Short", limit = tps, stop = center)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")