Esta estratégia primeiro calcula a média móvel rápida ma_fast e a média móvel lenta ma_slow, em seguida, combina a média móvel adaptada FRAMA, fazendo um excesso quando se usa ma_slow em ma_fast, e fazendo uma posição de equilíbrio quando se usa ma_fast em ma_slow ou quando se usa o preço de fechamento em 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 de cálculo do FRAMA é mais complexa, e a ideia principal é ajustar a linha média de acordo com os valores máximos, mínimos e a dinâmica de flutuação do preço.
Faça mais quando você usa ma_slow em ma_fast. Isso significa que a média curta começa a subir e a média longa ganha, de acordo com a característica da tendência.
A tendência é invertida quando o ma_slow é ultrapassado pelo ma_fast ou quando o preço de fechamento é ultrapassado pelo FRAMA.
A combinação dos benefícios do sistema de dupla equação e do sistema de dupla equação auto-adaptável. O sistema de dupla equação é bom em capturar tendências, e o sistema de dupla equação auto-adaptável pode filtrar melhor o ruído.
O indicador FRAMA pode ajustar os parâmetros automaticamente, evitando a subjetividade dos parâmetros selecionados manualmente.
A utilização de dois sinais de saída ao mesmo tempo permite a captura de uma reversão de tendência em tempo hábil.
É possível que haja um equilíbrio entre as duas linhas de cruzamento, o que pode gerar perdas intermitentes.
A adaptação das médias móveis aumenta a quantidade de parâmetros da estratégia, o que pode levar a otimização excessiva.
Se considerarmos apenas o fator preço e não filtrarmos o volume de transações, podemos perder uma oportunidade.
É possível testar combinações de linhas médias de diferentes períodos para encontrar o melhor parâmetro.
Pode-se adicionar a confirmação de volume de transação, para evitar sinais de invalidez. Por exemplo, a condição de aumento do aumento de volume de transação.
Pode-se otimizar as condições de abertura e de negociação para tornar a estratégia mais estável. Por exemplo, abrir posições somente quando a forma de continuidade é rompida.
Esta estratégia combina a dupla linha de equilíbrio cruzada e a linha de equilíbrio auto-adaptável FRAMA, que adapta automaticamente os parâmetros ao ambiente de mercado através de ajustes dinâmicos. A dupla linha de equilíbrio é boa em capturar tendências e a FRAMA pode filtrar o ruído.
/*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())