La moyenne de tendance mobile récursive combinée à la stratégie de modèle d'inversion 123

Auteur:ChaoZhang est là., Date: le 21 février 2024 à 16h02
Les étiquettes:

img

Résumé

Cette stratégie combine la moyenne de tendance mobile récursive et le modèle d'inversion 123 en un signal composite pour améliorer la stabilité et la rentabilité.

Principe

123 Modèle d'inversion

Cette partie est inspirée du livre How I Triple My Money in the Futures Market d'Ulf Jensen. Il achète lorsque le prix de clôture augmente pendant deux jours consécutifs et que le STO SLOWK de 9 jours est inférieur à 50. Il vend lorsque le prix de clôture tombe pendant deux jours consécutifs et que le STO FASTK de 9 jours est supérieur à 50.

Moyenne de tendance mobile récursive

Cette technique s'appelle recursive polynomial fitting. Elle utilise les prix des derniers jours et le prix d'aujourd'hui pour prédire le prix de demain. Elle court lorsque le prix prédit est supérieur au prix réel d'hier, et va long sinon.

Les avantages

La stratégie combinée exploite les forces des deux stratégies pour éviter les limitations d'une seule. Le modèle d'inversion 123 peut capturer les tendances majeures lorsque l'inversion de prix se produit. La moyenne de tendance mobile récursive peut juger plus précisément de la direction du mouvement des prix. Ensemble, ils forment des signaux composites plus forts.

Risques et solutions

  • Le modèle d'inversion 123 peut générer de faux signaux en raison de fluctuations de prix à court terme.
  • La moyenne de tendance mobile récursive peut réagir lentement à des événements soudains.
  • Les deux stratégies peuvent parfois donner des signaux incohérents. Une solution consiste à ouvrir des positions uniquement lorsque des signaux doubles émergent, ou à suivre un seul signal basé sur les conditions du marché.

Conseils pour améliorer

  • Testez différentes combinaisons de paramètres de période pour trouver la paire optimale.
  • Mettre en place des mécanismes d'arrêt automatique.
  • Ajuster les paramètres en fonction des différents produits et des différents environnements du marché.
  • Considérez la combinaison avec d'autres stratégies ou indicateurs pour former des systèmes plus robustes.

Conclusion

Cette stratégie combine deux types différents de stratégies et génère des signaux composites pour améliorer la stabilité.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 01/06/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Taken from an article "The Yen Recused" in the December 1998 issue of TASC, 
// written by Dennis Meyers. He describes the Recursive MA in mathematical terms 
// as "recursive polynomial fit, a technique that uses a small number of past values 
// of the estimated price and today's price to predict tomorrows price."
// Red bars color - short position. Green is long.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


RMTA(Length) =>
    pos = 0.0
    Bot = 0.0
    nRes = 0.0
    Alpha = 2 / (Length+1)
    Bot := (1-Alpha) * nz(Bot[1],close) + close
    nRes := (1-Alpha) * nz(nRes[1],close) + (Alpha*(close + Bot - nz(Bot[1], 0)))
    pos:= iff(nRes > close[1], -1,
    	     iff(nRes < close[1], 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Recursive Moving Trend Average", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Recursive Moving Trend Average ----")
LengthRMTA = input(21, minval=3)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRMTA = RMTA(LengthRMTA)
pos = iff(posReversal123 == 1 and posRMTA == 1 , 1,
	   iff(posReversal123 == -1 and posRMTA == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Plus de