MACDトレンドフォロー戦略は,MACD指標に基づいた定量的な取引戦略である.この戦略の主な考え方は,トレンドの方向性を決定し,適切なタイミングでロングまたはショートポジションを確立するためにMACD指標のゴールデンクロスとデスクロス信号を使用することである.MACD線がシグナル線上からゼロ軸上を通過すると,ロングポジションが開かれ,MACD線がシグナルライン下からゼロ軸下を通過すると,ショートポジションが開かれ.この戦略は,ロングポジションのストップ損失として最も最近の低点,ショートポジションのストップ損失として最も最近の高点を使用する.閉じる条件は,MACD線が反対方向にシグナルラインを横切るときである.
MACDトレンドフォロー戦略の基本原則は,トレンドの形成と逆転を把握するためにMACD指標を使用することである.MACD指標は2つの移動平均値 (高速と遅い) の違いで構成され,シグナルラインと組み合わせて取引シグナルを生成する.MACD線がシグナルラインの上からゼロ軸上を通過すると,上向きのトレンドが形成され,ロングポジションが開かれることを示唆する.MACD線がシグナルライン下からゼロ軸下を通過すると,下向きのトレンドが形成され,ショートポジションが開かれることを示唆する.戦略は,ロングポジションのストップ損失として最も最近の有意な低点と,リスクを制御するためのショートポジションのストップ損失として最も最近の有意な高点を使用する.MACD線が反対方向にトレンドを横断すると,現在のポジションは閉鎖される.
MACDトレンドフォロー戦略は,トレンド形成の初期にポジションを確立し,トレンドの勢いを完全に利用することで,トレンドの機会を効果的に把握することができます.
この戦略では,MACDの黄金/死亡クロスとゼロ軸の両方をフィルタリング条件として使用し,振動する市場で誤った信号をよりうまくフィルタリングすることができます.
ストップ・ロスのレベルとして,最も最近の重要な高値と低値を使用し,単一の取引のリスクを制御することができます.
戦略の論理は明確で,理解し実行しやすいので,初心者が学ぶのに適しています.
MACD指標は本質的に遅れの指標であり,トレンド逆転の開始時に大幅な引き下げを経験する可能性があります.
この戦略は,変動する市場で頻繁に取引を促し,高額な取引コストを引き起こす可能性があります.
ストップ・ロスのレベルは,最近の重要な高値と低値に依存し,特定の状況で早期または遅延したストップ・ロスを引き起こす可能性があります.
戦略は,ポジションのサイズとマネーマネジメントを考慮していないが,実用的な応用における特定の状況に基づいて最適化する必要がある.
他の技術指標や価格行動パターンをフィルタリング条件として導入することを検討し,信号の信頼性と精度を向上させる.
リスクをより適切に制御するために,ATRまたは百分比ベースのストップ損失などのストップ損失レベルを設定する方法を最適化します.
ポジションのサイズとマネーマネジメントのメカニズムを導入し,市場の変動と口座資本に基づいてポジションのサイズを動的に調整する.
最適なパラメータの組み合わせを見つけるために,異なる市場や取引手段のためのパラメータを最適化し調整する.
MACDトレンドフォロー戦略は,MACD指標の特徴を活用してトレンド機会を把握するシンプルで効果的な定量的な取引戦略である.この戦略は明確な論理を持ち,理解し,実装しやすく,初心者向けに適している.しかし,実用的な応用では,リスク管理に注意を払う必要があるし,より強力な取引パフォーマンスを達成するために,最適化および改善のための他の方法と組み合わせられるべきである.
/*backtest start: 2023-03-23 00:00:00 end: 2024-03-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MACD trendfollow", shorttitle="MACD TF", overlay=true) // switch = input(true, title="Enable MACD Bar Color") // X001TK MACD trendfollow Strategy // // // This strategy combines the non standart approach in MACD strategy to buy once to buy when the MACD value goes above Signal line and a zero line, to sell on the opposite condition. // // // This strategy goes long if the MACD (3,9,5) goes above its Signal and above zero // // You can set Stop loss on the recent lowest low when long position is opened and recent highest hugh in short // // // Exit rule is simple. We close the LONG position once MACD goes below Signal line and close SHORT on the opposite condition // // // // // Input fastMAlen = input(3, minval=1, title="MACD fast moving average") slowMAlen = input(9,minval=1, title="MACD slow moving average") signalMACDlen = input(5,minval=1, title="MACD signal line moving average") // switch = input(true, title="Enable MACD Bar Color") length = input(1, minval=1) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2002, title = "From Year", minval = 2000) ToMonth = input(defval = 3, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2029, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 00, 00) // backtest finish window window() => true // create function "within window of time" // MACD Calculation MACD = ema(close, fastMAlen) - ema(close, slowMAlen) signalMACD = ema(MACD, signalMACDlen) delta = MACD - signalMACD fastMA = ema(close,fastMAlen) slowMA = ema(close,slowMAlen) // Colors //bartrendcolor = MACD > signalMACD and MACD > 0? green : MACD < signalMACD and MACD < 0? red : MACD < signalMACD? gray : gray //barcolor(switch?bartrendcolor:na) barcolour=(MACD > signalMACD and MACD > 0)?#53B987:(MACD < signalMACD and MACD < 0)?#EB4D5C:na barcolor(color=barcolour) // === STRATEGY === // conditions longCond = MACD > signalMACD and MACD > 0 XlongCond = MACD < signalMACD ShortCond = MACD < signalMACD and MACD < 0 XShortCond = MACD > signalMACD strategy.entry("long", strategy.long, when=longCond==true and window()==true ) //strategy.exit(id="Close Long", stop=longStop)//, limit=longTake) strategy.close("long", when=XlongCond==true and window()==true) strategy.entry("short", strategy.short, when=ShortCond==true and window()==true ) //strategy.exit(id="Close Short", stop=shortStop)//, limit=shortTake) strategy.close("short", when=XShortCond==true and window()==true) // === /STRATEGY ===