Sistema de negociação Ichimoku Keltner integrado baseado na estratégia de média móvel


Data de criação: 2023-12-20 13:40:08 última modificação: 2023-12-20 13:40:08
cópia: 0 Cliques: 745
1
focar em
1621
Seguidores

Sistema de negociação Ichimoku Keltner integrado baseado na estratégia de média móvel

Visão geral

A estratégia integra estratégias de equilíbrio, gráficos da nuvem Ichimoku e indicadores técnicos do canal Keltner, que permitem o acompanhamento de tendências e negociações de ruptura, e é aplicada a negociações de algoritmos de alta frequência.

Princípio da estratégia

  1. Utilização do canal Keltner para determinar se o preço de uma ação ultrapassa o canal ascendente e descendente como sinal de construção de uma posição
  2. Mapa da nuvem de Ichimoku para determinar a direção da tendência, em conjunto com o canal Keltner
  3. A estratégia de equilíbrio emite um sinal de equilíbrio

Análise de vantagens

  1. Integração de vários indicadores técnicos, compreensão integrada e maior precisão na tomada de decisões
  2. O canal Keltner julga sobrecompra e sobrevenda para evitar a construção de posições em alta e baixa
  3. Mapa das nuvens de Ichimoku para avaliar tendências e evitar negociações adversas
  4. Estratégias de filtragem de equilíbrio para evitar oscilações sensíveis

Análise de Riscos

  1. Integração de múltiplos indicadores, configuração de parâmetros mais complexa e precisa de testes cuidadosos
  2. O cruzamento de linhas de conversão e linhas de referência do gráfico de nuvens não é sempre um sinal de negociação confiável
  3. O canal de Keltner precisa de ajustes de parâmetros para se adaptar a diferentes características de ações

Direção de otimização

  1. Avaliação do desempenho do servidor, redução apropriada do ciclo de linha média e aumento da frequência de transação
  2. Testar a sensibilidade de diferentes ações aos parâmetros, definindo parâmetros de adaptação
  3. Aumentar as estratégias de stop loss e reduzir as perdas individuais

Resumir

A estratégia integra vários indicadores técnicos do gráfico da nuvem Ichimoku, do canal Keltner e da estratégia de equilíbrio, permitindo o acompanhamento de tendências e a negociação de rupturas de alta eficiência. Em comparação com um único indicador, o julgamento da estratégia é mais abrangente e preciso, evitando certos falsos sinais.

Código-fonte da estratégia
/*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))