Sistema de trading integrado Ichimoku Keltner basado en la estrategia de media móvil


Fecha de creación: 2023-12-20 13:40:08 Última modificación: 2023-12-20 13:40:08
Copiar: 0 Número de Visitas: 745
1
Seguir
1621
Seguidores

Sistema de trading integrado Ichimoku Keltner basado en la estrategia de media móvil

Descripción general

Esta estrategia integra estrategias de línea media, gráficos de la nube de Ichimoku y indicadores técnicos del canal de Keltner, que permiten el seguimiento de tendencias y el comercio de rupturas, que se aplican a la negociación de algoritmos de alta frecuencia.

Principio de estrategia

  1. Utiliza el canal de Keltner para determinar si el precio de las acciones supera la subida y bajada del canal como una señal para la construcción de una posición
  2. Mapa de la nube de Ichimoku para determinar la dirección de la tendencia, en colaboración con el canal de Keltner
  3. La estrategia de línea media emite una señal de posición cerrada

Análisis de las ventajas

  1. Integración de varios indicadores técnicos, análisis integrado y mayor precisión en la toma de decisiones
  2. El canal Keltner analiza sobrecompra y sobreventa para evitar que los inversores se fijen en las altas y bajas
  3. El mapa de la nube de Ichimoku para evaluar las tendencias y evitar el cambio negativo
  4. Estrategia de filtración de la línea media para evitar vibraciones demasiado sensibles

Análisis de riesgos

  1. Integración de múltiples indicadores, configuración de parámetros más compleja, que requiere pruebas cuidadosas
  2. Las líneas de conversión del gráfico de nubes y las líneas de referencia no siempre son señales de transacción confiables
  3. El canal Keltner necesita ajustar los parámetros para adaptarse a las diferentes características de las acciones

Dirección de optimización

  1. Evaluar el rendimiento de los servidores, reducir el ciclo promedio adecuadamente y aumentar la frecuencia de las transacciones
  2. Prueba de la sensibilidad de las diferentes acciones a los parámetros, estableciendo parámetros de adaptación
  3. Aumentar las estrategias de detener las pérdidas y reducir las pérdidas individuales

Resumir

La estrategia integra varios indicadores técnicos de los mapas de la nube de Ichimoku, el canal de Keltner y la estrategia de línea uniforme, lo que permite el seguimiento de tendencias y la negociación de brechas de alta eficiencia. En comparación con un solo indicador, el juicio de la estrategia es más completo y preciso, evitando ciertas falsas señales.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Author: Persio Flexa
// Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading 
strategy("Ichimoku Keltner Strategy", overlay=true) 

// -- Keltner ------------------------------------------------------------------
source = close

useTrueRange = input(true)
length = input(18, minval=1) 
mult = input(1.8)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

plot(ma, title="BASE", color=orange,transp=85)
plot(upper, title="UPPER", color=red)
plot(lower, title="LOWER", color=green)

//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
crossUpper = source > upper
crossLower = source  < lower

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

// ---------------------------------------------------------------------


// -- Ichimoku

ATRlength = input(200, minval=1)
ATRMult = input(2.272, minval=1)

ATR = rma(tr(true), ATRlength)

len = input(26, minval=1, title="EMA Length")
src = input(close, title="Source")
out = ema(src, len)

emaup = out+(ATR*ATRMult)
emadw = out-(ATR*ATRMult)

conversionPeriods = input(15, minval=1),
basePeriods = input(35, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement, color=green,transp=85, title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2")
fill(p1, p2,silver) 

longCond    = crossover(conversionLine, baseLine)
shortCond   = crossunder(conversionLine, baseLine)
// -------------------------------------------------------------------------

if (crossUpper and (conversionLine > baseLine))
    strategy.entry("long", strategy.long, stop=bprice, comment="LONG")

if (crossLower and (conversionLine < baseLine))
    strategy.entry("short", strategy.short, stop=sprice, comment="SHORT")
    
strategy.close("long", when = (shortCond and source < lower))
strategy.close("short", when = (longCond and source > upper))