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.
Calcule a média móvel simples de 13 dias ma_fast e a média móvel simples de 26 dias ma_slow.
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.
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.
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.
Combina as vantagens do sistema de média móvel dupla e do sistema de média móvel adaptativa.
O indicador FRAMA ajusta automaticamente os parâmetros, evitando a subjetividade do ajuste manual dos parâmetros.
O uso de dois sinais de saída permite a detecção oportuna de inversões de tendência.
Crossovers de média móvel dupla podem ter whipssaws, resultando em perdas intermitentes.
As médias móveis adaptativas introduzem mais parâmetros, correndo o risco de sobreajuste.
Considera apenas os fatores de preço sem filtro de volume de negociação, podendo, por conseguinte, perder oportunidades.
Teste diferentes períodos de MA para encontrar a combinação ideal.
Adicionar confirmação de volume para evitar sinais falsos, por exemplo, exigindo picos de volume.
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.
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())