DMI et stratégie de combinaison de moyennes mobiles

Auteur:ChaoZhang est là., Date: le 19 septembre 2023 21:51:14
Les étiquettes:

Résumé

Cette stratégie combine la stratégie d'inversion 123, la stratégie DMI et la stratégie de moyenne mobile pour former une stratégie de combinaison efficace. Elle peut effectuer des opérations inverses aux points d'inversion de tendance et suivre la tendance lorsque la tendance se poursuit.

La logique de la stratégie

  1. 123 stratégie d'inversion: aller long lorsque le prix de clôture est supérieur à la clôture précédente pendant 2 jours consécutifs et que la ligne K lente de 9 jours est inférieure à 50; aller court lorsque le prix de clôture est inférieur à la clôture précédente pendant 2 jours consécutifs et que la ligne K rapide de 9 jours est supérieure à 50.

  2. Stratégie DMI: long lorsque +DI dépasse -DI; short lorsque -DI dépasse +DI.

  3. Stratégie de moyenne mobile: long lorsque le prix de clôture dépasse le niveau MA; short lorsque le prix de clôture dépasse le niveau MA.

  4. Ouvrir des positions lorsque trois stratégies donnent des signaux cohérents, sinon fermer des positions.

La stratégie combine des stratégies de tendance et des stratégies d'inversion, qui peuvent capturer les opportunités d'inversion et les opportunités de suivi de tendance.

Analyse des avantages

  1. La combinaison de plusieurs stratégies améliore le taux de victoire. 123 inversion pour capter les points tournants, DMI pour capter les tendances et filtre MA pour filtrer les signaux.

  2. La combinaison de stratégies d'inversion et de tendance permet de détecter les inversions et les tendances de manière flexible.

  3. Le filtre MA réduit les faux signaux des fluctuations à court terme.

  4. La combinaison de plusieurs stratégies vérifie les signaux et évite l'échec d'une seule stratégie.

  5. Plusieurs paramètres permettent une optimisation pour une meilleure combinaison de paramètres et une plus grande stabilité.

Analyse des risques

  1. Les stratégies d'inversion sont sujettes à être piégées dans des tendances liées à la plage.

  2. Le DMI peut manquer les premières opportunités de tendance et réduire les paramètres du DMI pour améliorer la sensibilité.

  3. La MA a un effet de retard et peut retarder la génération du signal.

  4. Bien que la combinaison de stratégies améliore le taux de victoire, elle augmente également la complexité.

  5. La stratégie est sensible aux coûts de transaction.

Directions d'optimisation

  1. Optimiser les paramètres de chaque stratégie pour trouver la meilleure combinaison.

  2. Ajoutez d'autres indicateurs comme MACD, RSI pour filtrer les signaux et améliorer la stabilité.

  3. Ajoutez des stratégies de stop loss comme le stop loss de suivi pour contrôler les risques.

  4. Optimiser le dimensionnement des positions comme le dimensionnement fixe/dynamique pour améliorer le rendement.

  5. Paramètres de réglage précis pour des produits spécifiques afin d'améliorer leur adaptabilité.

  6. Ajouter des modèles d'apprentissage automatique pour aider les décisions et améliorer les performances.

Conclusion

Cette stratégie forme un système de combinaison flexible en combinant efficacement les stratégies de renversement, de tendance et de filtre MA. Elle peut capturer à la fois les opportunités de renversement et de suivi de tendance et améliore la fiabilité du signal grâce à plusieurs stratégies. Il reste encore de la place pour d'autres améliorations des paramètres, du stop loss, de la taille de la position, etc. Avec une application compétente, cette stratégie pratique et évolutive peut générer des profits considérables dans le trading en direct.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-18 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/10/2019
// 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
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

DMIMA(Length_MA, Length_DMI) =>
    pos = 0.0
    xMA = sma(close, Length_MA)
    up = change(high)
    down = -change(low)
    trur = rma(tr, Length_DMI)
    xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
    xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
    nPDI = xPDI
    nNDI = xNDI
    nMA = xMA
    nPDI_1 = xPDI[1]
    nNDI_1 = xNDI[1]
    nMA_1 = xMA[1]
    bMDILong = iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
                 iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
    bMDIShort = iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
                  iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
    bMALong = iff(close > nMA and close[1] < nMA_1, true, 
                 iff(close < nMA and close[1] > nMA_1, false, false))
    bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
                 iff(close < nMA and close[1] > nMA_1, true, false))
    pos := iff(bMDILong and bMALong, 1, 
         iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & DMI & Moving Average", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDMIMA = DMIMA(Length_MA,Length_DMI)
pos = iff(posReversal123 == 1 and posDMIMA == 1 , 1,
	   iff(posReversal123 == -1 and posDMIMA == -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