Esta estratégia é baseada no indicador de padrão do gráfico de nuvem ICHIMOKU e no indicador aleatório STOCH para determinar e rastrear tendências.
A estratégia avalia principalmente a direcção da tendência actual e as situações de sobrecompra/supervenda através do gráfico das nuvens ICHIMOKU e do indicador STOCH.
Quando a linha de conversão cruza acima da linha de base e o indicador Stoch rebota da área de sobrevenda, é considerado uma tendência de alta e a estratégia toma uma direção de alta.
No código, a linha de conversão é definida como a média dos preços mais altos e mais baixos das últimas barras N1; A linha de base é definida como a média dos preços mais altos e mais baixos das últimas barras N2. Um sinal de alta é gerado quando a linha de conversão cruza acima da linha de base.
O indicador Stoch define as linhas de limiar de sobrecompra e sobrevenda, bem como os parâmetros de suavização K e D. Um sinal de alta é gerado quando o Stoch retrocede da área de sobrevenda e um sinal de baixa é gerado quando retorna da área de sobrecompra.
Ao combinar os dois indicadores, a estratégia determina a direcção da tendência.
A estratégia combina indicadores de padrão gráfico e indicadores de sobrecompra/supervenda para determinar eficazmente a direção da tendência.
Em comparação com a utilização de um único indicador de avaliação da tendência, esta estratégia considera de forma abrangente as situações de tendência e de ultrapassagem e pode determinar com mais precisão o calendário de entrada.
O gráfico de nuvens ICHIMOKU pode identificar tendências de médio e longo prazo, enquanto o indicador Stoch pode detectar situações de sobrecompra/supervenda de curto prazo.
Os principais riscos desta estratégia são:
Risco de falha do indicador em caso de eventos de cisne negro.
Há algum atraso, que pode perder parte da tendência ou reverter as posições de abertura.
O julgamento combinado de múltiplos fatores tem alguma subjetividade e configurações de parâmetros incorretas podem causar erros.
A alta frequência de negociação pode afectar os lucros devido aos custos de transacção.
Medidas de otimização correspondentes:
Combinar os acontecimentos noticiosos para evitar a negociação às cegas durante os principais acontecimentos políticos.
Redução adequada dos parâmetros do ciclo para reduzir a probabilidade de atraso.
Otimizar os parâmetros através de backtesting para melhorar as configurações científicas.
Aumentar adequadamente os intervalos de tomada de lucro e stop loss para reduzir a frequência de negociação.
As principais direcções de otimização para esta estratégia são:
Otimizar os parâmetros do ciclo da linha de conversão ICHIMOKU e da linha de base para se adequarem melhor às diferentes características do mercado.
Otimizar os parâmetros de suavização K, D e os valores-limite de sobrecompra/supervenda do indicador Stoch.
Aumentar outros indicadores para formar um modelo multifator e melhorar a fiabilidade do sistema.
Otimizar os pontos de take profit e stop loss para reduzir a frequência de negociação, garantindo a rentabilidade.
Adicionar um módulo para julgar emergências e evitar falhas durante grandes eventos.
Esta estratégia combina gráficos de nuvem ICHIMOKU e indicadores de Stoch para fazer julgamentos abrangentes sobre a direção da tendência e situações de sobrecompra / sobrevenda, que podem rastrear efetivamente os mercados em tendência.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ICHI + STOCH V1", overlay=true) length = input.int(20, minval=1) smoothK = input(5) smoothD = input(3) OverBought = input(25) OverSold = input(65) Profit = input(1800) Stop = input(1200) k = ta.sma(ta.stoch(close, high, low, length), smoothK) d = ta.sma(k, smoothD) co = ta.crossover(k,d) cu = ta.crossunder(k,d) conversionPeriods = input.int(9, minval=1, title="Conversion Line Length") basePeriods = input.int(26, minval=1, title="Base Line Length") laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length") displacement = input.int(1, minval=1, title="Lagging Span") conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods)) baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods)) leadLine1 = math.avg(conversionLine, baseLine) leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods)) TREND = ta.ema(math.avg(leadLine1,leadLine2),displacement) //plot(conversionLine, color=#2962FF, title="Conversion Line") //plot(baseLine, color=#B71C1C, title="Base Line") //plot(close, offset = -displacement + 1, color=#43A047, title="Lagging Span") plot(TREND, color=#2962FF, title="TREND") p1 = plot(leadLine1,style=plot.style_line, offset = displacement - 1, color=#A5D6A7, title="Leading Span A") p2 = plot(leadLine2,style=plot.style_line, offset = displacement - 1, color=#EF9A9A, title="Leading Span B") fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90)) close_price = ta.sma(close,1) pc = plot(close_price,style=plot.style_line, color=#2a0ab9, title="Price Close") if (not na(k) and not na(d)) if (co and k < OverSold)and(close_price > TREND) strategy.entry("BUY order", strategy.long, comment="BUY order") strategy.exit("exitBUY", "BUY order", profit = Profit, loss = Stop) if (cu and k > OverBought)and(close_price < TREND) strategy.entry("SELL order", strategy.short, comment="SELL order") strategy.exit("exitSELL", "SELL order", profit = Profit, loss = Stop) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)