Estrategia de tendencia de adaptación del canal de Donchian

El autor:¿ Qué pasa?, Fecha: 2023-10-26 15:58:52
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el indicador del canal de Donchian para rastrear de forma adaptativa las tendencias del mercado para el comercio de tendencias.

Estrategia lógica

  1. Calcular el máximo máximo y el mínimo mínimo durante un cierto período para formar el canal de Donchian.

  2. Abre una posición larga cuando el precio se rompe por encima de la banda superior del canal.

  3. Después de abrir posiciones, el stop loss sigue la línea media del canal.

  4. Cortar pérdidas y cerrar posiciones cuando el precio vuelve a caer en el canal.

Análisis de ventajas

  1. La estrategia utiliza el canal Donchian para determinar la dirección de la tendencia y capturar rápidamente las rupturas.

  2. El uso de la línea media del canal para detener la pérdida protege los beneficios.

  3. El objetivo de ganancia se amplifica de acuerdo con el porcentaje de ganancia definido por el usuario.

  4. Se adapta a las diferentes condiciones del mercado, como la consolidación, la ruptura, el retroceso, etc., y ajusta de manera flexible el tamaño de las posiciones.

  5. Lógica comercial simple y clara, fácil de entender y dominar.

Análisis de riesgos

  1. La estrategia sólo opera con breakouts y no puede manejar eficazmente la consolidación.

  2. Existe el riesgo de falsas señales de ruptura, otros indicadores necesarios para la verificación.

  3. El establecimiento inadecuado del stop loss y del take profit puede dar lugar a una salida prematura o a un beneficio insuficiente.

  4. La configuración incorrecta del período del canal afecta la precisión de las señales comerciales.

  5. El tamaño excesivo de las posiciones amplifica los riesgos de fluctuación del mercado.

  6. Existen riesgos de interrupción inesperados del robot, asegurando la fiabilidad del sistema.

Direcciones de mejora

  1. Agregue indicadores de volumen para evitar perseguir falsos brotes.

  2. Aumentar los filtros de indicadores de tendencia para mejorar la precisión de la señal de entrada.

  3. Optimizar los algoritmos dinámicos de stop loss y take profit.

  4. Ajustar la estrategia de posicionamiento en función de las condiciones del mercado en tiempo real.

  5. Investigación durante la noche y datos previos al mercado para un mejor momento de entrada.

  6. Prueba diferentes períodos de parámetros para encontrar combinaciones óptimas.

  7. Añadir la validación del modelo para evitar el sobreajuste.

Conclusión

En general, esta es una estrategia de seguimiento de tendencias adaptativa simple y práctica. Tiene ventajas como capturar rápidamente las rupturas de tendencia y proteger las ganancias. También tiene desventajas como la ineficacia durante la consolidación y las pérdidas por rupturas falsas. Las mejoras futuras consisten en incorporar más filtrado de señales, stop loss / take profit dinámico, 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")

Más.