
La stratégie de conversion en hausse et en baisse du MACD est basée sur le calcul du DIFF et du DEA du MACD pour déterminer si la tendance du marché est en train de s’inverser, ce qui génère un signal de transaction. Lorsque le DIFF est en hausse, faites plus; lorsque le DIFF est en baisse, faites moins.
La stratégie est principalement basée sur les moyennes DIFF et DEA de l’indicateur MACD. La MACD représente la différence entre les moyennes mobiles de l’indicateur et se compose de lignes DIFF, DEA et MACD. La ligne DIFF représente la différence entre la moyenne EMA à court terme et la moyenne EMA à long terme.
Lorsque le DIFF monte au-dessus du DEA, la courte moyenne commence à se renforcer et le marché entre en hausse. Lorsque le DIFF descend au-dessus du DEA, la courte moyenne commence à s’affaiblir et le marché entre en baisse.
En même temps, la stratégie est combinée avec la moyenne EMA du prix pour filtrer les fausses ruptures. La rupture est effectuée uniquement lorsque le DIFF a franchi le DEA à la hausse et que le prix est inférieur au prix de la plus-value précédente. La rupture est effectuée uniquement lorsque le DIFF a franchi le DEA à la baisse et que le prix est supérieur au prix de la plus-value précédente.
La stratégie de conversion en hausse ou en baisse de la MACD, combinant l’indicateur MACD et la moyenne des prix EMA, évite les faux signaux produits uniquement par l’indicateur MACD et améliore l’efficacité des transactions. Cette stratégie juge que les tendances du marché changent rapidement et convient aux opérations en ligne courte.
Les principaux avantages sont les suivants:
La stratégie de conversion en hausse ou en baisse du MACD présente également des risques, principalement:
Ces risques peuvent être optimisés principalement dans les domaines suivants:
La stratégie de conversion en hausse ou en baisse du MACD a également de la place pour l’optimisation et peut être optimisée à partir des dimensions suivantes:
La stratégie de conversion de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la courbe de la
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("macd_strategy",
shorttitle="macd",
overlay=true,
pyramiding=1,
max_bars_back=5000,
calc_on_order_fills = false,
calc_on_every_tick=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type =strategy.commission.percent,
commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]
cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
cross_over_price := price[1]
cross_over_signal := diff
if (crossunder(diff,dea))
cross_under_price := price[1]
cross_under_signal := diff
if dea > 0
cross_over_price = na
cross_over_signal = na
else
cross_under_price = na
cross_under_signal = na
if diff > 0
if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
strategy.entry("S", strategy.short, comment="S")
else
if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
strategy.entry("B", strategy.long, comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))