Potencial de mercado Ichimoku Estratégia de nuvem de alta

Autora:ChaoZhang, Data: 2024-02-02 16:57:46
Tags:

img

Resumo

Esta estratégia é uma estratégia de negociação de nuvem Ichimoku de longo prazo. Ela fica longa quando a linha de conversão cruza acima da linha de base e fecha a posição quando a linha de base cruza abaixo da linha de conversão. Além disso, ao abrir ou fechar posições, ela também verifica o Lagging Span para ver se está acima ou abaixo da nuvem.

Estratégia lógica

A estratégia utiliza várias linhas do indicador Ichimoku.

  1. Linha de conversão: a média do máximo e do mínimo nos últimos 9 dias, representando a conversão da tendência de curto prazo.

  2. Linha de base: a média dos altos e baixos dos últimos 26 dias, representando o movimento médio dos preços durante esse período.

  3. Duração de vida A: média da conversão e das linhas de base.

  4. Leading Span B: A média dos altos e baixos nos últimos 52 dias, um indicador principal para tendências de médio a longo prazo.

  5. Lagging Span: O preço de fechamento atrasado 26 dias atrás, representando o ímpeto da tendência.

Para abrir uma posição, a linha de conversão precisa cruzar acima da linha de base E o Lagging Span precisa estar acima da nuvem.

Para fechar uma posição, a linha de base precisa cruzar abaixo da linha de conversão E o Lagging Span precisa estar abaixo da nuvem.

Vantagens da estratégia

  1. Usa a nuvem de Ichimoku para determinar a direção da tendência com precisão.

  2. Combinar várias linhas evita sinais falsos.

  3. O longo só corresponde às tendências ascendentes de longo prazo da maioria das criptomoedas.

  4. A filtragem de condições rigorosa dá sinais de alta qualidade.

Riscos da Estratégia

  1. Só permite posição completa ou plana, não pode ajustar o tamanho da posição.

  2. Performa-se muito bem no mercado de alta, mas corre o risco de grandes perdas no mercado de baixa.

  3. Os parâmetros padrão ajustados para criptomoedas podem precisar de ajustes para outros ativos.

  4. Menos sinais comerciais significam que algumas oportunidades podem ser perdidas.

Melhorias

  1. Adicionar a funcionalidade de dimensionamento de posição para fechar parte da posição quando a perda atingir um limiar.

  2. Adicionar sinais de venda a curto prazo quando os níveis de suporte chave quebrar para reduzir as perdas.

  3. Otimizar os parâmetros para acomodar mais símbolos e melhorar a robustez.

  4. Adicionar stop loss quando a perda atingir um nível para conter o risco de queda.

Resumo

Como uma estratégia Ichimoku de longo prazo, esta abordagem determina de forma confiável as inversões de tendência combinando várias linhas Ichimoku.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Simple long-only Ichimoku Cloud Strategy
// Enter position when conversion line crosses base line up, and close it when the opposite happens. 
// Additional condition for open / close the trade is lagging span, it should be higher than cloud to open position and below - to close it.
//@version=4
strategy("Ichimoku Cloud Strategy Long Only", shorttitle="Ichimoku Cloud Strategy (long only)", overlay=true )

conversion_length = input(9, minval=1, title="Conversion Line Periods"),
base_length = input(26, minval=1, title="Base Line Periods")
lagging_length = input(52, minval=1, title="Lagging Span 2 Periods"),
delta = input(26, minval=1, title="Delta")

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

conversion_line = average(conversion_length) // tenkan sen - trend
base_line = average(base_length) // kijun sen - movement
lead_line_a = avg(conversion_line, base_line) // senkou span A
lead_line_b = average(lagging_length) // senkou span B
lagging_span = close // chikou span - trend / move power

plot(conversion_line, color=color.blue, linewidth=2, title="Conversion Line")
plot(base_line, color=color.white, linewidth=2, title="Base Line")
plot(lagging_span, offset = -delta, color=color.purple, linewidth=2, title="Lagging Span")

lead_line_a_plot = plot(lead_line_a, offset = delta, color=color.green, title="Lead 1")
lead_line_b_plot = plot(lead_line_b, offset = delta, color=color.red, title="Lead 2")
fill(lead_line_a_plot, lead_line_b_plot, color = lead_line_a > lead_line_b ? color.green : color.red)

// Strategy logic

long_signal = crossover(conversion_line,base_line) and ((lagging_span) > (lead_line_a)) and ((lagging_span) > (lead_line_b))
short_signal = crossover(base_line, conversion_line) and ((lagging_span) < (lead_line_a)) and ((lagging_span) < (lead_line_b))

strategy.entry("LONG", strategy.long, when=strategy.opentrades == 0 and long_signal, alert_message='BUY')
strategy.close("LONG", when=strategy.opentrades > 0 and short_signal, alert_message='SELL')
    
    // === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2021, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() => true
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()

Mais.