
A estratégia usa duas médias móveis, uma média móvel de 8 e uma média móvel de 21 períodos. Quando a média móvel de curto prazo é coberta pela média móvel de longo prazo, faça mais; quando a média móvel de curto prazo é coberta pela média móvel de longo prazo, faça menos.
A estratégia também introduziu um indicador de inclinação de médias móveis para filtrar intervalos sem tendência, gerando sinais de negociação apenas quando a tendência é mais evidente.
O núcleo da estratégia está no cruzamento de médias móveis de curto prazo e médias móveis de longo prazo. As médias móveis de curto prazo capturam tendências de mudanças de preços mais rapidamente, enquanto as médias móveis de longo prazo têm um melhor efeito de filtragem do ruído. Quando a linha curta atravessa a linha longa, mostra a formação de tendências de múltiplos pontos, fazendo mais lucro; Quando a linha curta atravessa a linha longa, mostra a formação de tendências de vazio, fazendo lucro.
A estratégia também configura um limite de inclinação. O sinal de fazer mais só é gerado quando o inclinação é maior do que o limite positivo, e o sinal de fazer menos só é gerado quando o inclinação é menor do que o limite negativo. Isso pode filtrar alguns intervalos sem uma tendência óbvia, deixando a qualidade do sinal de negociação mais alta.
A lógica de geração de sinais de negociação da estratégia é a seguinte:
A estratégia tem as seguintes vantagens:
A estratégia também apresenta alguns riscos:
Para esses riscos, pode-se fazer otimizar as seguintes coisas:
A estratégia pode ser melhorada em várias direções:
A estratégia de média móvel dupla é simples e prática em geral, capta diferentes características de tendência por meio dos parâmetros dos dois períodos de difusão e combina-se para gerar sinais de negociação. Ao mesmo tempo, a introdução de um limite de inclinação melhora a qualidade do sinal. A estratégia pode ser usada como uma estratégia básica e ser ampliada, com muito espaço para otimização e expansão.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//written by sixpathssenin
//@version=4
strategy(title="Dual Moving Average",initial_capital=10000,overlay=true)
ma1= sma(close,8)
ma2= sma(close,21)
angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13)
i_lookback = input(2, "Angle Period", input.integer, minval = 1)
i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1)
i_angleLevel = input(6, "Angle Level", input.integer, minval = 1)
i_maSource = input(close, "MA Source", input.source)
f_angle(_src, _lookback, _atrPeriod) =>
rad2degree = 180 / 3.141592653589793238462643 //pi
ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback)
ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)
plot(ma1,color=#FF0000)
plot(ma2,color=#00FF00)
crosso=crossover(ma1,ma2)
crossu=crossunder(ma1,ma2)
_lookback = 15
f_somethingHappened(_cond, _lookback) =>
bool _crossed = false
for i = 1 to _lookback
if _cond[i]
_crossed := true
_crossed
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)
long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)
if(long)
strategy.entry("Long",strategy.long)
if(short)
strategy.entry("short",strategy.short)