Sistema de trading de seguimiento de media móvil de impulso híbrido de doble cadena

EMA MA
Fecha de creación: 2024-11-29 17:04:57 Última modificación: 2024-11-29 17:04:57
Copiar: 5 Número de Visitas: 465
1
Seguir
1617
Seguidores

Sistema de trading de seguimiento de media móvil de impulso híbrido de doble cadena

Descripción general

La estrategia es un sistema de negociación innovador basado en el índice de medias móviles (EMA) para capturar oportunidades de mercado mediante la configuración de dos cadenas de negociación independientes en diferentes períodos de tiempo. La estrategia integra las ventajas del seguimiento de tendencias a largo plazo y el comercio de volúmenes de movimiento a corto plazo para generar señales de negociación a través del cruce de EMA en varios períodos de tiempo, como el semanal, el diurno, las 12 horas y las 9 horas.

Principio de estrategia

La estrategia utiliza un diseño de dos cadenas, cada una con su propia lógica de entrada y salida:

La cadena 1 ((Tendencias a largo plazo) utiliza el ciclo de la línea de circunferencia y la línea de solsticio:

  • Señales de entrada: se producen señales de multiplicación cuando el precio de cierre atraviesa el EMA en el ciclo de la línea circular
  • Señales de salida: se produce una señal de cerraje cuando el precio de cierre atraviesa el EMA bajo el ciclo de la línea de sol
  • El ciclo EMA por defecto es de 10, que se puede ajustar según sea necesario

La cadena 2 (movimiento a corto plazo) utiliza ciclos de 12 horas y 9 horas:

  • Señales de entrada: se producen señales múltiples cuando el precio de cierre atraviesa el EMA en un ciclo de 12 horas
  • Señales de salida: Se produce una señal de salida cuando el precio de cierre atraviesa un EMA en un ciclo de 9 horas
  • El ciclo EMA por defecto es de 9, pero se puede ajustar según sea necesario.

Ventajas estratégicas

  1. Análisis multidimensional del mercado: una visión global de las tendencias del mercado a través de una combinación de diferentes períodos de tiempo
  2. Flexible: las dos cadenas se pueden activar o desactivar independientemente para adaptarse a diferentes estilos de negociación
  3. Control de riesgos perfeccionado: Confirmación en múltiples ciclos de tiempo, reduciendo el riesgo de falsas señales
  4. Parámetros ajustables: el ciclo EMA y el ciclo de tiempo se pueden modificar según sea necesario
  5. Funcionalidad de retroalimentación avanzada: configuración durante la retroalimentación incorporada para facilitar la verificación y optimización de la estrategia

Riesgo estratégico

  1. Riesgo de cambio de tendencia: Posible atraso en un mercado muy volátil
  2. Configuración de riesgo de ciclo de tiempo: diferentes mercados pueden requerir diferentes combinaciones de ciclos de tiempo
  3. Riesgo de optimización de parámetros: la optimización excesiva puede conducir a una sobreadaptación
  4. Riesgo de superposición de señales: la activación simultánea de dos cadenas puede aumentar el riesgo de tenencia de posiciones

Sugerencias para el control de riesgos:

  • Establecer un límite de pérdidas razonable
  • Ajuste de parámetros según las características del mercado
  • Se realizan pruebas de retroalimentación antes de la puesta en marcha
  • Controlar el ratio de capital para cada transacción

Dirección de optimización de la estrategia

  1. Optimización del filtrado de señales:
  • Añadir mecanismo de confirmación de volumen
  • Introducción de las señales de filtración de los indicadores de fluctuación
  • Aumento de la intensidad de la tendencia confirmada
  1. Optimización del control de riesgos:
  • Desarrollo de mecanismos de detención de pérdidas dinámicas
  • Diseño de un sistema de gestión de posiciones
  • Añadido el control de retiro
  1. Optimización del ciclo de tiempo:
  • Estudiar la combinación óptima de los ciclos de tiempo
  • Desarrollo de mecanismos de ciclo de tiempo de adaptación
  • Aumentar el reconocimiento del estado del mercado

Resumir

El sistema de comercio de seguimiento de la línea media de la cantidad mixta de la cadena doble permite el análisis y la comprensión multidimensional del mercado mediante la combinación innovadora de la estrategia de la línea media de largo plazo. El diseño del sistema es flexible, se puede ajustar según las diferentes condiciones del mercado y el estilo del comerciante, y tiene una gran utilidad.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='Dual Chain Strategy', shorttitle='DualChain', overlay=true)

// User inputs for enabling/disabling chains
enableChain1 = input.bool(true, title='Enable Chain 1')
enableChain2 = input.bool(true, title='Enable Chain 2')

// User inputs for the first chain
len1 = input.int(10, minval=1, title='Length Chain 1 EMA', group="Chain 1")
src1 = input(close, title='Source Chain 1', group="Chain 1")
tf1_entry = input.timeframe("W", title='Chain 1 Entry Timeframe', group="Chain 1")
tf1_exit = input.timeframe("D", title='Chain 1 Exit Timeframe', group="Chain 1")

// Weekly timeframe EMA for Chain 1
entryEMA1 = request.security(syminfo.tickerid, tf1_entry, ta.ema(src1, len1))

// Daily timeframe EMA for Chain 1
exitEMA1 = request.security(syminfo.tickerid, tf1_exit, ta.ema(src1, len1))

// User inputs for the second chain
len2 = input.int(9, minval=1, title='Length Chain 2 EMA', group="Chain 2")
src2 = input(close, title='Source Chain 2', group="Chain 2")
tf2_entry = input.timeframe("720", title='Chain 2 Entry Timeframe (12H)', group="Chain 2")  // 12 hours
tf2_exit = input.timeframe("540", title='Chain 2 Exit Timeframe (9H)', group="Chain 2")    // 9 hours

// Entry timeframe EMA for Chain 2
entryEMA2 = request.security(syminfo.tickerid, tf2_entry, ta.ema(src2, len2))

// Exit timeframe EMA for Chain 2
exitEMA2 = request.security(syminfo.tickerid, tf2_exit, ta.ema(src2, len2))

// Plotting Chain 1 EMAs
plot(enableChain1 ? entryEMA1 : na, title='Chain 1 Entry EMA', color=color.new(color.blue, 0))
plot(enableChain1 ? exitEMA1 : na, title='Chain 1 Exit EMA', color=color.new(color.yellow, 0))

// Plotting Chain 2 EMAs
plot(enableChain2 ? entryEMA2 : na, title='Chain 2 Entry EMA', color=color.new(color.green, 0))
plot(enableChain2 ? exitEMA2 : na, title='Chain 2 Exit EMA', color=color.new(color.red, 0))

// Backtesting period
startDate = input(timestamp('2015-07-27'), title="StartDate")
finishDate = input(timestamp('2026-01-01'), title="FinishDate")
time_cond = true

// Entry Condition (Chain 1)
bullishChain1 = enableChain1 and ta.crossover(src1, entryEMA1)
bearishChain1 = enableChain1 and ta.crossunder(src1, entryEMA1)

// Exit Condition (Chain 1)
exitLongChain1 = enableChain1 and ta.crossunder(src1, exitEMA1)
exitShortChain1 = enableChain1 and ta.crossover(src1, exitEMA1)

// Entry Condition (Chain 2)
bullishChain2 = enableChain2 and ta.crossover(src2, entryEMA2)
bearishChain2 = enableChain2 and ta.crossunder(src2, entryEMA2)

// Exit Condition (Chain 2)
exitLongChain2 = enableChain2 and ta.crossunder(src2, exitEMA2)
exitShortChain2 = enableChain2 and ta.crossover(src2, exitEMA2)

// Debugging: Plot entry signals for Chain 1
plotshape(bullishChain1, color=color.new(color.green, 0), style=shape.labelup, text='BUY C1', location=location.belowbar)
plotshape(bearishChain1, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C1', location=location.abovebar)

// Debugging: Plot entry signals for Chain 2
plotshape(bullishChain2, color=color.new(color.green, 0), style=shape.labelup, text='BUY C2', location=location.belowbar)
plotshape(bearishChain2, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C2', location=location.abovebar)

// Trade Execution for Chain 1
if bullishChain1 and time_cond
    strategy.entry('BUY_Chain_1', strategy.long)

if bearishChain1 and time_cond
    strategy.entry('SELL_Chain_1', strategy.short)

// Exit trades based on daily conditions for Chain 1
if exitLongChain1 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_1', when=exitLongChain1)

if exitShortChain1 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_1', when=exitShortChain1)

// Trade Execution for Chain 2
if bullishChain2 and time_cond
    strategy.entry('BUY_Chain_2', strategy.long)

if bearishChain2 and time_cond
    strategy.entry('SELL_Chain_2', strategy.short)

// Exit trades based on daily conditions for Chain 2
if exitLongChain2 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_2', when=exitLongChain2)

if exitShortChain2 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_2', when=exitShortChain2)

// Close all positions outside the backtesting period
if not time_cond
    strategy.close_all()