Esta estratégia combina uma abordagem contrária (compra de quedas) com lógica de tendência (apenas quando o preço está acima do MA200).
Esta estratégia calcula a mudança porcentual geral do preço durante o período de retrospectiva para determinar se o preço está em uma queda relativa. Quando a porcentagem de mudança global está abaixo de -3%, o preço é considerado na queda. Além disso, a estratégia também define a média móvel simples de 200 dias como um indicador para julgar a tendência. Os sinais de compra são acionados apenas quando o preço está acima da média móvel de 200 dias. Utilizando tanto o princípio de reversão média quanto o emparelhamento longo-curto, a estratégia compra a queda durante uma tendência ascendente para obter lucro.
Esta estratégia combina as vantagens da negociação de tendência e da negociação contrária. Por um lado, usar a média móvel de longo prazo para determinar a tendência evita a compra cega durante uma tendência de queda. Por outro lado, comprar quedas fornece melhores oportunidades de entrada durante correções de curto prazo. A combinação garante segurança comercial e maior probabilidade de lucro. Além disso, a estratégia tem grande espaço de otimização para parâmetros que podem ser ajustados para se adequar a diferentes mercados, dando-lhe forte adaptabilidade.
O maior risco é que o preço possa continuar a diminuir após o desencadeamento do sinal de compra, levando a perdas ampliadas. Além disso, se o mercado permanecer limitado ao intervalo por um longo tempo e o preço não conseguir quebrar a média móvel, a estratégia também falhará. Para mitigar esses riscos, o período da média móvel pode ser encurtado em conformidade e os critérios de compra podem ser otimizados para garantir uma margem de segurança suficiente.
A estratégia pode ser otimizada em vários aspectos: 1) otimizar o período de média móvel para se adaptar a diferentes mercados; 2) otimizar os critérios de compra para garantir uma margem suficiente; 3) adicionar stop loss para controlar as perdas; 4) combinar outros indicadores para julgar tendências e quedas para melhorar a precisão.
Em geral, esta é uma estratégia típica que combina ideias de negociação de tendência e contrária. Ela garante segurança de negociação e maior probabilidade de ganhar, com forte valor prático.
/*backtest start: 2023-12-08 00:00:00 end: 2024-01-07 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Buy The Dips - MA200 Optimised", overlay=false) //Moving average MAinp = input(defval = 100, title = "MA", type = input.integer, minval = 1, step = 1) MA=sma(close, MAinp) //Percent change inp_lkb = input(1, title='Lookback Period') perc_change(lkb) => overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100 // Call the function overall = perc_change(inp_lkb) // === INPUT BACKTEST RANGE === fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" //Entry/Exit strategy.entry(id="long", long = true, when = window() and overall<-3 and close > MA) strategy.close(id="long", when = window() and overall>1) bgcolor(color = showDate and window() ? color.gray : na, transp = 90) plot(overall, color=color.black, title='Overall Percentage Change', linewidth=3) band1 = hline(1, "Upper Band", color=#C0C0C0) band0 = hline(-2, "Lower Band", color=#C0C0C0) fill(band1, band0, color=#9915FF, transp=90, title="Background") hline(0, title='Center Line', color=color.orange, linestyle=hline.style_solid, linewidth=2)