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.
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:
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 de cette stratégie sont les suivants:
Quelques risques de cette stratégie:
Quelques façons d'améliorer la stratégie:
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