ダブル・ムービング・アベア・トレンド・トラッキング・ストラテジー (Dual Moving Average Trend Tracking Strategy) は,市場のトレンド方向を決定するために,異なる期間の2つの移動平均を使用する定量的な取引戦略である.トレンドを特定し,トレンド方向に沿って取引を行うために,高速および遅い移動平均の長/短の状態を使用する.
この戦略は,高速移動平均 (例えば10期) と遅い移動平均 (例えば30期) を含む2つの移動平均を使用する.両方の移動平均が上向きである場合,上昇傾向を示します.両方の移動平均が下向きである場合,下向きを示します.
具体的には,戦略はまず高速移動平均と遅い移動平均を計算します.その後,現在の高速移動平均を前期と比較して,現在の平均が前期よりも大きいかどうかを確認します.もしそうであれば,上昇傾向を示す値1を割り当てます.そうでなければ,ダウン傾向のために -1を割り当てます.遅い移動平均も同じことをしてください.
最後に,2つの移動平均値の値でトレンドを決定する.両値が1である場合,最終決定は1であり,上昇傾向を示す.両値が-1である場合,最終決定は-1であり,下落傾向を示す.値が異なる場合,以前のトレンド決定を維持する.
トレンド方向が特定されると,戦略は上昇傾向でロング,下落傾向でショートになります.
この戦略には以下の側面があります.
この戦略にはいくつかのリスクもあります.
リスクを減らすために,移動平均のパラメータをより合理的に設定し,他の指標を導入し,ストップ損失と収益を設定し,ポジションサイズをそれに応じて調整することができます.
この戦略は,次の側面においてさらに最適化することができる.
ダブル・ムービング・平均トレンド・トラッキング戦略は,ノイズをフィルターし,トレンドを特定し,トレンド方向に沿って取引するためにダブル・ムービング・平均を使用するという明確な論理を持っています.これはトレンドをフォローする典型的な戦略です.トレーダーは好みに基づいてのみロングまたはショートを選択できます.戦略にはまだいくつかのリスクがあります.リスクを管理するために追加の指標,ストップ・ロスト/テイク・プロフィートを追加する必要があります.そうすることで,長期的な安定した利益を達成することができます.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © noro // 2020 //@version=4 strategy(title = "Noro's TrendMA Strategy", shorttitle = "TrendMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1) //Settings needlong = input(true, title = "Long") needshort = input(true, title = "Short") fast = input(10, minval = 1, title = "MA Fast (red)") slow = input(30, minval = 2, title = "MA Slow (blue)") type = input(defval = "SMA", options = ["SMA", "EMA"], title = "MA Type") src = input(ohlc4, title = "MA Source") showma = input(true, title = "Show MAs") showbg = input(false, title = "Show Background") //MAs fastma = type == "EMA" ? ema(src, fast) : sma(src, fast) slowma = type == "EMA" ? ema(src, slow) : sma(src, slow) //Lines colorfast = showma ? color.red : na colorslow = showma ? color.blue : na plot(fastma, color = colorfast, title = "MA Fast") plot(slowma, color = colorslow, title = "MA Slow") //Trend trend1 = fastma > fastma[1] ? 1 : -1 trend2 = slowma > slowma[1] ? 1 : -1 trend = 0 trend := trend1 == 1 and trend2 == 1 ? 1 : trend1 == -1 and trend2 == -1 ? -1 : trend[1] //Backgrouns colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na bgcolor(colbg, transp = 80) //Trading if trend == 1 if needlong strategy.entry("Long", strategy.long) if needlong == false strategy.close_all() if trend == -1 if needshort strategy.entry("Short", strategy.short) if needshort == false strategy.close_all()