Estratégia de acompanhamento da tendência da média móvel cruzada

Autora:ChaoZhang, Data: 2024-01-03 17:01:38
Tags:

img

Resumo

Esta estratégia julga a tendência do preço calculando o cruzamento de médias móveis duplas e emite sinais de compra e venda com certas restrições de parâmetros.

Princípio da estratégia

O núcleo desta estratégia reside no cálculo de médias móveis rápidas e lentas. A média móvel rápida tem um período de metade do período da média móvel total, que é mais sensível às mudanças de preço; a média móvel lenta tem um período do período da média móvel total, que reflete as mudanças de preço de forma mais suave.

Além disso, a estratégia estabelece certos parâmetros para evitar trocas erradas. Por exemplo, o limiar de decisão é para garantir que os sinais sejam emitidos apenas quando a diferença entre as duas médias móveis exceder um certo nível; o parâmetro de confiança é usado para filtrar pequenas flutuações de preços.

Finalmente, o stop profit e o stop loss são empregados para controlar os riscos. Se o openprofit for menor que o ponto de stop loss ou maior que o ponto de stop profit, as posições serão fechadas. Isso limita efetivamente a perda de uma única negociação.

Análise das vantagens

A maior vantagem desta estratégia é combinar o julgamento da tendência de preços e as características de volatilidade através de indicadores de média móvel. O cruzamento de médias móveis duplas é uma abordagem técnica clássica e eficaz para determinar as tendências de preços. Com a otimização de parâmetros, ele pode capturar com precisão as tendências. O parâmetro de confiança pode efetivamente filtrar mercados agitados e evitar negócios errados frequentes.

Além disso, parâmetros como o limiar de decisão, o stop profit e o stop loss também podem reduzir muito os riscos de negociação, evitando perseguir máximos e vender mínimos.

Análise de riscos

O principal risco desta estratégia é a possibilidade de sinais errados das médias móveis duplas. Tanto as médias móveis rápidas quanto as lentas são médias móveis ponderadas que reagem lentamente a eventos repentinos, perdendo assim inversões de preços de curto prazo. Neste momento, o parâmetro de confiança pode fornecer uma confirmação dupla.

Além disso, configurações inadequadas dos pontos de stop profit e stop loss também aumentam os riscos. O objetivo de lucro excessivamente alto e o ponto de stop loss baixo podem levar a perdas além das expectativas. Parâmetros razoáveis precisam ser definidos de acordo com as características de diferentes produtos de negociação e volatilidade.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os períodos de média móvel, definir médias móveis adaptativas para melhor modelar as flutuações de preços de diferentes ciclos;

  2. Estabelecer mecanismos dinâmicos de acompanhamento para a obtenção de resultados e perdas, calcular a volatilidade em tempo real com base nas condições de mercado, de modo a que os pontos de parada possam mudar de forma dinâmica;

  3. Aumentar os modelos de aprendizado de máquina para julgar as direções da tendência dos preços, utilizar mais dados históricos para determinar os movimentos atuais dos preços e reduzir sinais errados.

Conclusão

Em geral, esta é uma estratégia clássica de negociação de tendências simples e eficaz. Ele usa o cruzamento duplo da média móvel para determinar tendências, define parâmetros para controlar riscos e tem alta configurabilidade para negociação de múltiplos produtos.


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

//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Trade Signal", shorttitle="Trade Alert", overlay=true )
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001)
SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
    strategy.entry("Short",strategy.short)

//alerts
alertcondition(closelong, title='Close Buy Position', message='Close Buy Position')
alertcondition(closeshort, title='Close Short Position', message='Close Short Position')
alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert')
alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert')

//a1=plot(n1,color=c)
//a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
//plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green,  title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red,  title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart

Mais.