O recurso está a ser carregado... Carregamento...

Ichimoku Kumo Estratégia de Negociação

Autora:ChaoZhang, Data: 2024-05-29 17:23:36
Tags:

img

Resumo

Esta estratégia usa o indicador Ichimoku Kumo para determinar tendências de mercado e sinais de negociação. A estratégia vai longo quando o preço está abaixo da nuvem Kumo e vai curto quando o preço está acima da nuvem Kumo. A estratégia usa o indicador ATR para stop-loss e confirma sinais de entrada com quebras das linhas Kijun-sen e Senkou Span. A estratégia visa capturar oportunidades de negociação em tendências fortes, controlando o risco.

Princípio da estratégia

  1. Use as linhas Kijun-sen, Tenkan-sen e Senkou Span do indicador Ichimoku para determinar as tendências do mercado.
  2. Gerar um sinal longo quando o preço de fechamento estiver abaixo da linha Senkou Span e a linha Kijun-sen estiver acima da nuvem Kumo.
  3. Gerar um sinal curto quando o preço de fechamento estiver acima da linha Senkou Span e a linha Kijun-sen estiver abaixo da nuvem Kumo.
  4. Calcular a posição de stop-loss utilizando o indicador ATR, que é o ponto mais alto/mais baixo das últimas 5 velas menos/mais 3 vezes o ATR.
  5. Fechar a posição quando o preço ultrapassar o nível de stop-loss.

Vantagens da estratégia

  1. A estratégia baseia-se no indicador Ichimoku, que fornece uma análise abrangente das tendências do mercado.
  2. A estratégia considera a relação entre o preço, a linha Kijun-sen e a linha Senkou Span, melhorando a confiabilidade dos sinais de entrada.
  3. A utilização do ATR para o stop-loss permite um ajustamento dinâmico da posição de stop-loss, melhorando o controlo do risco.
  4. A definição de stop-loss tem em conta a volatilidade do mercado, adaptando-se às diferentes condições do mercado.

Riscos estratégicos

  1. A estratégia pode gerar numerosos sinais falsos em mercados agitados, levando a trocas frequentes e perdas de capital.
  2. O desempenho da estratégia depende da selecção dos parâmetros do indicador Ichimoku, e diferentes parâmetros podem produzir resultados comerciais diferentes.
  3. Em mercados voláteis, os preços podem ultrapassar rapidamente a posição de stop-loss, causando deslizamentos e perdas significativos.

Orientações para a otimização da estratégia

  1. Introduzir outros indicadores técnicos ou análises preço-volume para ajudar a determinar tendências e calendários de entrada, melhorando a precisão do sinal.
  2. Otimizar a configuração de stop-loss, como considerar stop-loss atrasados ou movidos, para proteger melhor a segurança da conta.
  3. Incorporar o dimensionamento das posições na estratégia, ajustando o tamanho de cada operação com base na volatilidade do mercado e no risco da conta.
  4. Realizar a otimização dos parâmetros da estratégia para encontrar a combinação de parâmetros mais adequada às condições atuais do mercado.

Resumo

Esta estratégia utiliza vários componentes do indicador Ichimoku para analisar de forma abrangente as tendências do mercado. Ao mesmo tempo, a estratégia usa o stop-loss ATR para controlar o risco, aumentando a robustez da estratégia. No entanto, a estratégia pode ter um desempenho inferior em mercados variados e depende da seleção de parâmetros. No futuro, o desempenho da estratégia pode ser melhorado introduzindo outros métodos de análise, otimizando o stop-loss e o dimensionamento de posição e outros meios.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © muratatilay

//@version=5
strategy(
     "Kumo Trade Concept", 
     overlay=true,
     initial_capital=10000,
     currency=currency.USDT,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=30,
     commission_type=strategy.commission.percent,
     commission_value=0.1,
     margin_long=10, 
     margin_short=10)


// ICHIMOKU Lines 
//  INPUTS
tenkanSenPeriods = input.int(9, minval=1, title="Tenkan-sen")
kijunSenPeriods = input.int(26, minval=1, title="Kijun-sen")
senkouBPeriod = input.int(52, minval=1, title="Senkou span B")
displacement = input.int(26, minval=1, title="Chikou span")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
tenkanSen = donchian(tenkanSenPeriods)
kijunSen = donchian(kijunSenPeriods)
senkouA = math.avg(tenkanSen, kijunSen)
senkouB = donchian(senkouBPeriod)

// Other Indicators
float   atrValue    = ta.atr(5)

// Calculate Senkou Span A 25 bars back
senkouA_current = math.avg(tenkanSen[25], kijunSen[25])
// Calculate Senkou Span B 25 bars back
senkouB_current = math.avg(ta.highest(senkouBPeriod)[25], ta.lowest(senkouBPeriod)[25])

// Kumo top bottom 
senkou_max = (senkouA_current >= senkouB_current) ? senkouA_current : senkouB_current
senkou_min = (senkouB_current >= senkouA_current) ? senkouA_current : senkouB_current

// Trade Setups
long_setup = (kijunSen > senkou_max) and (close < senkou_min) 
short_setup = (kijunSen < senkou_min ) and ( close > senkou_max ) 

// Check long_setup for the last 10 bars
long_setup_last_10 = false
for i = 0 to 50
    if long_setup[i]
        long_setup_last_10 := true
short_setup_last_10 = false
for i = 0 to 50
    if short_setup[i]
        short_setup_last_10 := true


closeSenkouCross = (close > senkou_max) and barstate.isconfirmed 
closeKijunCross = (close > kijunSen ) 

senkouCloseCross = close < senkou_min
kijunCloseCross = close < kijunSen


// Handle Trades
// Enter Trade
var float trailStopLong = na
var float trailStopShort = na
if ( closeSenkouCross and long_setup_last_10 and closeKijunCross ) 
    strategy.entry(id="Buy", direction = strategy.long)
    trailStopLong := na
if senkouCloseCross and short_setup_last_10 and kijunCloseCross
    strategy.entry(id="Sell", direction = strategy.short)
    trailStopShort := na


// Update trailing stop
float temp_trailStop_long = ta.highest(high, 5) - (atrValue * 3)
float temp_trailStop_short = ta.lowest(low, 5) + (atrValue * 3)
if strategy.position_size > 0
    if temp_trailStop_long > trailStopLong or na(trailStopLong)
        trailStopLong := temp_trailStop_long
if strategy.position_size < 0
    if temp_trailStop_short < trailStopShort or na(trailStopShort)
        trailStopShort := temp_trailStop_short

// Handle strategy exit
if close < trailStopLong and barstate.isconfirmed
    strategy.close("Buy", comment="Stop Long")
if close > trailStopShort and barstate.isconfirmed
    strategy.close("Sell", comment="Stop Short")


// PRINT ON CHART
plot(kijunSen, color=color.rgb(214, 58, 30), title="Kijun-sen", linewidth=2)
p1 = plot(senkouA, offset=displacement - 1, color=#A5D6A7, title="Senkou span A")
p2 = plot(senkouB, offset=displacement - 1, color=#EF9A9A, title="Senkou Span B")
fill(p1, p2, color=senkouA > senkouB ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))
// PRINT SETUPS
plotshape(long_setup , style=shape.circle, color=color.green, location=location.belowbar, size=size.small)
plotshape(short_setup, style=shape.circle, color=color.red, location=location.abovebar, size=size.small)

// Trail Stop
plot(strategy.position_size[1] > 0 ? trailStopLong : na, style=plot.style_linebr, color=color.purple, title="Stop Loss")
plot(strategy.position_size[1] < 0 ? trailStopShort : na, style=plot.style_linebr, color=color.purple, title="Stop Loss")


Mais.