Comprar Dips - MA200 Estratégia Otimizada

Autora:ChaoZhang, Data: 2024-01-08 16:54:21
Tags:

img

Resumo

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).

Princípio da estratégia

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.

Análise das vantagens

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.

Análise de riscos

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.

Orientações de otimização

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.

Resumo

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)

Mais.