FRAMA et stratégie de négociation croisée des moyennes mobiles basée sur une moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-12-22 16h08 et 23 min
Les étiquettes:

img

Résumé

Cette stratégie calcule d'abord les moyennes mobiles simples de 13 périodes et de 26 périodes, puis calcule l'indicateur FRAMA.

Principe de stratégie

La stratégie utilise principalement le croisement de la moyenne mobile pour générer des signaux de trading. Lorsque la moyenne mobile à court terme traverse la moyenne mobile à long terme de bas en haut, elle indique que la tendance passe de la baisse à la hausse et va long. Lorsque la moyenne mobile à court terme traverse en dessous de la moyenne mobile à long terme, elle indique un renversement imminent et ferme la position.

Pendant ce temps, l'indicateur FRAMA est introduit comme un jugement auxiliaire. L'indicateur FRAMA est une ligne moyenne mobile adaptative améliorée sur la base de l'hypothèse du marché fractal. En calculant le taux de changement logarithmique de l'amplitude de fluctuation des prix sur différentes périodes, il a estimé la dimension fractale du marché en temps réel pour ajuster dynamiquement la douceur de la moyenne mobile. Lorsque l'indicateur FRAMA traverse le prix de clôture, il indique un signal d'inversion de tendance. Combiné avec le signal de croisement de la moyenne mobile, il améliore la précision du jugement.

Analyse des avantages

La stratégie combine le double croisement de la moyenne mobile et l'indicateur FRAMA, qui peut filtrer efficacement les faux signaux de rupture et améliorer la qualité des signaux de négociation.

Comparée à un seul indicateur et modèle, cette stratégie peut améliorer considérablement la qualité du signal et réduire la probabilité d'erreur de jugement.

Analyse des risques

Les principaux risques de cette stratégie résident dans le fait que les moyennes mobiles doubles peuvent produire plus de faux signaux de rupture et que les paramètres de l'indicateur FRAMA auront également une incidence sur l'efficacité.

Pour contrôler les risques ci-dessus, des paramètres tels que les périodes moyennes mobiles peuvent être ajustés en conséquence ou filtrés avec d'autres indicateurs.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Testez plus de combinaisons et de périodes de moyennes mobiles pour trouver la paire de paramètres optimale.

  2. Ajoutez une stratégie de stop loss pour contrôler une seule perte.

  3. Combiner les indicateurs de volume de négociation pour éviter une fausse rupture sous faible volume.

  4. Ajouter des modèles d'apprentissage automatique pour évaluer l'état du marché en temps réel et ajuster dynamiquement les paramètres.

  5. Combiner des indicateurs de sentiment, des nouvelles et d'autres facteurs multiples pour améliorer la qualité des décisions.

Conclusion

Cette stratégie préliminaire combine l'application du double croisement des moyennes mobiles et de l'indicateur FRAMA. Sur la base de la simplicité et de l'intuition, elle a amélioré efficacement la qualité du signal et vaut la peine d'être testée et optimisée.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-16 00:00:00
period: 30m
basePeriod: 15m
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())

Plus de