Stratégie de croisement de flèches à double moyenne mobile


Date de création: 2023-11-21 17:00:49 Dernière modification: 2023-11-21 17:00:49
Copier: 0 Nombre de clics: 604
1
Suivre
1617
Abonnés

Stratégie de croisement de flèches à double moyenne mobile

Aperçu

La stratégie détermine le moment de l’achat et de la vente en calculant le croisement bi-égal de l’indicateur MACD. Elle dessine une forme de flèche sur le graphique pour indiquer un signal de transaction.

Le principe

La stratégie commence par calculer les écarts de la ligne rapide (EMA 12), de la ligne lente (EMA 26) et du MACD. Elle juge ensuite le moment d’acheter et de vendre en fonction des écarts de la ligne rapide et de la ligne lente, ainsi que des écarts positifs et négatifs du MACD:

  1. Un signal d’achat est donné lorsque la ligne rapide traverse la ligne lente et que la différence MACD traverse 0.
  2. Un signal de vente est donné lorsque la ligne rapide traverse la ligne lente (dead fork) et que la différence MACD est inférieure à 0.

Pour filtrer les faux signaux, le code détermine également le signal de la ligne K précédente. Le signal actuel ne sera déclenché que si la ligne K actuelle est un signal inversé (achat converti en vente ou vente converti en achat).

En outre, un graphique en forme de flèche est dessiné dans le code pour indiquer le moment de l’achat et de la vente en ligne K.

Les avantages

Cette stratégie présente les avantages suivants:

  1. L’utilisation d’un jugement biunivoque peut filtrer efficacement le bruit du marché et identifier les tendances
  2. Le calcul de l’écart entre les valeurs de la MACD permet d’éviter les omissions et les erreurs de jugement
  3. Les flèches indiquent le moment de l’achat et de la vente, ce qui rend les opérations plus claires.
  4. Les règles sont simples, claires, faciles à comprendre et à reproduire.

Risques et solutions

Cette stratégie comporte aussi des risques:

  1. Les croisements bi-équivalents sont susceptibles de générer de faux signaux, ce qui peut entraîner des transactions excessives. Les paramètres de l’équivalent peuvent être ajustés de manière appropriée ou d’autres conditions de filtrage peuvent être ajoutées pour réduire les faux signaux
  2. Il est possible d’éviter cela en combinant des indicateurs de tendance tels que l’ADX.
  3. Les conditions d’achat et de vente fixes rendent la stratégie mécanisée et ne peuvent pas s’adapter aux changements du marché. Des méthodes d’adaptation telles que l’apprentissage automatique peuvent être essayées pour optimiser

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Tester différentes combinaisons de paramètres pour trouver les meilleurs paramètres pour les lignes rapides, les lignes lentes et le MACD
  2. Augmentation des conditions d’entrée, telles que le dépassement du volume des transactions pour filtrer les signaux
  3. Augmentation des mécanismes de coupe-perte pour contrôler les pertes individuelles
  4. Indicateurs de volatilité tels que le VIX pour déterminer les préférences en matière de risque
  5. L’expérimentation de modèles d’apprentissage automatique pour remplacer les règles fixes et optimiser l’adaptation des stratégies

Résumer

Cette stratégie de flèche de croisement bi-équilibrée est généralement simple et pratique. Grâce au jugement bi-équilibré et au filtrage de la différence MACD, il est possible d’identifier les points d’achat et de vente dans les tendances de la ligne moyenne et longue et d’éviter les virages de prix manqués. Les avertissements de la flèche rendent également l’opération plus claire et claire.

Code source de la stratégie
/*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