En la carga de los recursos... Cargando...

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

El autor:¿ Qué pasa?, fecha: 2023-12-20 13:40:08
Las etiquetas:

img

Resumen general

Esta estrategia integra la estrategia de promedio móvil, los gráficos de la nube de Ichimoku y los indicadores técnicos del canal Keltner para lograr el seguimiento de tendencias y la negociación de avance, que es adecuada para la negociación algorítmica de alta frecuencia.

Principio de la estrategia

  1. Utilice el canal de Keltner para juzgar si el precio de las acciones excede los rieles superior e inferior del canal como señal para abrir posiciones
  2. Los gráficos de las nubes de Ichimoku juzgan la dirección de la tendencia y utilizan el canal de Keltner
  3. La estrategia de media móvil envía señales de cierre

Análisis de ventajas

  1. Integrar múltiples indicadores técnicos para un juicio exhaustivo para mejorar la precisión de la decisión
  2. El canal de Keltner juzga las condiciones de sobrecompra y sobreventa para evitar perseguir máximos y eliminar mínimos al abrir posiciones
  3. Los gráficos de las nubes de Ichimoku juzgan las tendencias principales para evitar el comercio contra la tendencia
  4. La estrategia de media móvil filtra las perturbaciones y previene la sensibilidad excesiva

Análisis de riesgos

  1. La integración de múltiples indicadores hace que la configuración de parámetros sea más compleja y requiere pruebas cuidadosas
  2. El cruce de la línea de conversión y la línea de base de los gráficos de nubes no siempre es una señal comercial confiable
  3. El canal de Keltner necesita ajustar los parámetros para adaptarse a las características de las diferentes poblaciones

Direcciones de optimización

  1. Evaluar el rendimiento del servidor y acortar adecuadamente los ciclos de promedio móvil para aumentar la frecuencia de negociación
  2. Prueba de la sensibilidad de las diferentes poblaciones a los parámetros y fija parámetros adaptativos
  3. Aumentar la estrategia de stop loss para reducir las pérdidas individuales

Resumen de las actividades

Esta estrategia integra gráficos de la nube Ichimoku, canales de Keltner y estrategias de promedio móvil con múltiples indicadores técnicos para lograr el seguimiento de tendencias y el comercio de avance eficiente. En comparación con un solo indicador, el juicio de esta estrategia es más completo y preciso, evitando ciertas señales falsas. Al mismo tiempo, también hay problemas que las configuraciones de parámetros son más complejas y deben optimizarse para acciones individuales. En general, esta estrategia es adecuada para el comercio algorítmico de alta frecuencia con efectos significativos.


/*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))

Más.