MACD移動平均牛熊変換戦略は,市場トレンドが逆転したかどうかを判断するために,MACD指標のDIFFとDEAラインを計算し,それによって取引信号を生成する.DIFFがDEAを超えると長くなり,DIFFがDEAを下回ると短くなります.この戦略には,偽のブレイクを避けるために価格EMAフィルターも含まれています.
この戦略は主にMACD指標のDIFFとDEA線に基づいている.MACDはDIFF,DEA,MACD線で構成される移動平均収束差を表す.その中でも,DIFFは短期EMAと長期EMAの差を表し,DEAはDIFF信号を確認するために使用されるDIFFのEMAであり,MACDはDIFFとDEAの差を表し,差異を特定するために使用される.
DIFFがDEAを突破すると,短期移動平均が強化し始め,市場は上昇傾向になります.DIFFがDEAを下回ると,短期移動平均が弱まり,市場は下落傾向になります.したがって,DIFFがDEAを突破するとこの戦略は長続きし,DEAを下回ると短縮されます.
さらに,この戦略は偽のブレイクを避けるために価格EMAフィルターを組み込む.DIFFがDEAを突破し,価格が前のロング価格を下回るときのみ,DIFFがDEAを下回り,価格が前のショート価格を下回るときのみ,ロングに行く.
MACD移動平均牛熊変換戦略は,MACDのみによって生成される偽信号を避けるために,MACD指標と価格EMAフィルターを組み合わせ,取引パフォーマンスを向上させる.この戦略は市場の傾向の変化を迅速に特定し,短期取引に適しています.
主な利点は以下の通りです.
MACD 移動平均牛熊換算戦略には,いくつかのリスクもあります.
リスクを最適化するための主な方法は以下の通りです.
MACD 移動平均牛熊変換戦略は,次の次元でさらに最適化することができます:
MACD移動平均ブルベア変換戦略は,DIFFとDEAクロスオーバー信号による上昇/下落の市場参入を特定し,誤った信号を削除するために価格EMAフィルターを使用し,市場のトレンド逆転点を効果的に決定する.シンプルで明確な論理により,短期および中期取引に適した変換点を迅速に特定する.最適化するための次のステップには,パラメータを調整し,フィルターを強化し,戦略をより堅牢にするために取引頻度を制御する.
/*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)))))