Stratégie de flèche croisée à moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-11-21 17h49
Les étiquettes:

img

Résumé

Cette stratégie identifie les signaux d'achat et de vente en calculant le croisement des moyennes mobiles doubles de l'indicateur MACD. Elle trace des flèches sur le graphique pour indiquer les signaux de trading.

Principaux

La stratégie calcule d'abord la ligne rapide (EMA à 12 périodes), la ligne lente (EMA à 26 périodes) et la différence MACD. Elle détermine ensuite les signaux longs et courts en fonction du croisement des lignes rapides et lentes, ainsi que la valeur positive/négative de la différence MACD:

  1. Lorsque la ligne rapide traverse au-dessus de la ligne lente (croix dorée) et que la différence MACD traverse au-dessus de 0, c'est un signal d'achat
  2. Lorsque la ligne rapide passe sous la ligne lente (croix de mort) et que la différence MACD passe sous 0, c'est un signal de vente.

Pour filtrer les faux signaux, le code vérifie également le signal du chandelier précédent. Le signal actuel n'est déclenché que si le chandelier précédent a un signal opposé (acheter vs vendre ou vice versa).

En outre, des flèches sont tracées sur le graphique pour indiquer les signaux d'achat et de vente.

Les avantages

Les avantages de cette stratégie sont les suivants:

  1. L'utilisation d'un double croisement des moyennes mobiles permet d'identifier les tendances et de filtrer le bruit du marché
  2. L'intégration de la différence MACD évite les transactions manquantes et les faux signaux
  3. Les flèches indiquent clairement les entrées et les sorties
  4. Des règles simples et faciles à comprendre facilitent la réplication

Risques et solutions

Quelques risques de cette stratégie:

  1. Les crossovers peuvent générer de faux signaux et provoquer un sur-trading.
  2. L'incapacité de discerner les fourchettes dans une tendance, conduisant potentiellement à des pertes.
  3. Les règles fixes ne peuvent pas s'adapter à l'évolution des marchés.

Des possibilités d'amélioration

Quelques façons d'améliorer la stratégie:

  1. Testez différentes combinaisons de paramètres pour trouver les paramètres optimaux pour la ligne rapide, la ligne lente et le MACD
  2. Ajoutez des conditions d'entrée supplémentaires comme des pannes de volume aux signaux filtrés
  3. Incorporer le stop loss pour contrôler les pertes d'une seule transaction
  4. Utiliser des indicateurs de volatilité comme le VIX pour mesurer l'appétit pour le risque
  5. Essayez des modèles d'apprentissage automatique au lieu de règles fixes pour créer une optimisation adaptative

Résumé

La stratégie de la flèche croisée de la moyenne mobile double est assez simple et pratique. En utilisant le croisement de deux moyennes mobiles et le filtrage des différences MACD, il identifie les entrées et les sorties pendant les tendances à moyen et à long terme, évitant les renversements de prix manquants. Les signaux de flèche fournissent également des conseils d'exploitation clairs. Des améliorations supplémentaires de la stabilité et de la rentabilité peuvent être obtenues grâce à l'ajustement des paramètres, à des filtres supplémentaires et à une optimisation adaptative.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Daniels stolen code
strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0)

//Define MACD Variables
fast = 12, slow = 26
fastMACD = ema(hlc3, fast)
slowMACD = ema(hlc3, slow)
macd = fastMACD - slowMACD
signal = sma(macd, 9)
hist = macd - signal
currMacd = hist[0]
prevMacd = hist[1]
currPrice = hl2[0]
prevPrice = hl2[1]

buy = currPrice > prevPrice and currMacd > prevMacd
sell = currPrice < prevPrice and currMacd < prevMacd
neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd)
//Plot Arrows

timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1))
timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1))

plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup)
plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown)
//plotshape(neutral, color=black, location=location.belowbar, style=shape.circle)


//Test Strategy
// strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high
// strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01))

strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01))
strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01))



// strategy.entry(id = "Short", long = false, when = enterShort())
// strategy.close(id = "Short", when = exitShort())

//strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high
// strategy.exit("exit", "long", profit = 10, loss = 5) // ge

Plus de