Esta estratégia é baseada na Teoria da Onda de Elliott e tenta detectar automaticamente ondas de impulso. Ela define uma onda de impulso ascendente procurando uma combinação de 4 velas de fechamento ascendente consecutivas onde o fechamento atual é maior do que o fechamento de 9 dias atrás; uma onda de impulso descendente é definida usando a lógica oposta. Uma vez que uma onda de impulso é detectada, ela gera sinais de compra ou venda e reverte a posição, com o stop loss definido no baixo ou alto da vela de sinal. Como as ondas de impulso geralmente são acompanhadas por movimentos rápidos, este método de stop loss deve produzir resultados positivos. Além disso, o acúmulo de triângulos verdes ou vermelhos antes do início de uma tendência forte muitas vezes indica bons pontos de entrada em um mercado de tendência calmo antes do início.
Esta estratégia baseia-se na clássica Teoria das Ondas de Elliott e pode capturar fortes movimentos de tendência com alguma aplicabilidade e potencial de lucro. No entanto, a subjetividade da própria teoria das ondas e a definição de ondas de impulso podem afetar o desempenho da estratégia. Na aplicação prática, deve-se prestar atenção à otimização de parâmetros, gestão de posição, redução da frequência de negociação, etc. Ao introduzir indicadores de confirmação de tendência, trailing stops, construção gradual de posição e outros meios, o desempenho e a estabilidade desta estratégia podem ser melhorados.
/*backtest start: 2023-04-20 00:00:00 end: 2024-04-25 00:00:00 period: 1d basePeriod: 1h 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/ // © Smollet //@version=5 strategy("LW: 4-9 indicator", overlay = true) consclos = input.int(3, "Consecutive close") daysago = input.int(9, "Days ago") var int long_cc = 0 var int short_cc = 0 long_cc := 1 short_cc := 1 for i = 1 to consclos long_cc := close[i-1] > close[i] ? long_cc*1 : long_cc*0 short_cc := close[i-1] < close[i] ? short_cc*1 : short_cc*0 long_daysago = close > close[daysago] short_daysago = close < close[daysago] long = long_cc ==1 and long_daysago short = short_cc ==1 and short_daysago plotshape(long, style=shape.triangleup, location=location.belowbar, color=color.green) plotshape(short, style=shape.triangledown, location=location.abovebar, color=color.red) //Strategy code if long and strategy.position_size <= 0 strategy.entry("Long", strategy.long) strategy.exit("Long SL", "Long", stop = low) if short and strategy.position_size >= 0 strategy.entry("Short", strategy.short) strategy.exit("Short SL", "Short", stop = high)