Estratégia de negociação cruzada da FraMA e da MA baseada no indicador FRAMA

Autora:ChaoZhang, Data: 2024-01-15 14:38:48
Tags:

img

Resumo

Esta estratégia calcula a linha média móvel rápida ma_fast e a linha média móvel lenta ma_slow primeiro, e depois combina com a linha média móvel adaptativa FRAMA.

Estratégia lógica

  1. Calcule a média móvel simples de 13 dias ma_fast e a média móvel simples de 26 dias ma_slow.

  2. A fórmula FRAMA é complexa, a ideia principal é ajustar dinamicamente a suavidade α da média móvel com base no mais alto, mais baixo e volatilidade dos preços.

  3. Vá longo quando ma_fast cruza ma_slow. Isso indica que a média móvel de curto prazo começa a subir e corre mais rápido do que a de longo prazo, correspondendo às características da tendência.

  4. Fechar posição quando ma_slow cruza abaixo ma_fast ou FRAMA cai abaixo do preço de fechamento. Estes indicam sinais de inversão de tendência.

Análise das vantagens

  1. Combina as vantagens do sistema de média móvel dupla e do sistema de média móvel adaptativa.

  2. O indicador FRAMA ajusta automaticamente os parâmetros, evitando a subjetividade do ajuste manual dos parâmetros.

  3. O uso de dois sinais de saída permite a detecção oportuna de inversões de tendência.

Análise de riscos

  1. Crossovers de média móvel dupla podem ter whipssaws, resultando em perdas intermitentes.

  2. As médias móveis adaptativas introduzem mais parâmetros, correndo o risco de sobreajuste.

  3. Considera apenas os fatores de preço sem filtro de volume de negociação, podendo, por conseguinte, perder oportunidades.

Optimização

  1. Teste diferentes períodos de MA para encontrar a combinação ideal.

  2. Adicionar confirmação de volume para evitar sinais falsos, por exemplo, exigindo picos de volume.

  3. Otimizar as regras de entrada e saída para tornar a estratégia mais robusta, por exemplo, tomando apenas sinais em padrões de continuação.

Conclusão

Esta estratégia combina crossover de média móvel dupla e média móvel adaptativa FRAMA, adaptando-se automaticamente às condições do mercado ajustando dinamicamente os parâmetros.


/*backtest
start: 2023-01-14 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Fractal Adaptive Moving Average",shorttitle="FRAMA",overlay=true)


ma_fast = sma(close,13)

ma_slow = sma(close,26)
plot(ma_fast,color = green)
plot(ma_slow, color = yellow)
price = input(hl2)
len = input(defval=16,minval=1)
FC = input(defval=1,minval=1)
SC = input(defval=198,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price
plot(out,title="FRAMA",color=purple,transp=0)
entry() => crossover(ma_fast, ma_slow) and (out < close)
exit() => crossover(ma_slow, ma_fast) or crossunder(out, close)

strategy.entry(id= "MA cross", long = true, when = entry())
strategy.close(id= "MA cross", when = exit())

Mais.