ダブル・ムービング・平均ブレイクアウト戦略は,高速移動平均と遅い移動平均をベースとした定量的な取引戦略である. 異なる期間の2つの指数的な移動平均 (EMA) を取引シグナルとして使用する. 急速なEMAが遅いEMAを超えると,購入信号が生成される. 急速なEMAが遅いEMAを下回ると,販売信号が生成される.
この戦略の主な論理は,取引信号を形成するために,高速移動平均と遅い移動平均を使用することです. 戦略は,高速EMA期間を12日,遅いEMA期間を26日と定義します. 計算方法は以下のとおりです:
市場動向を決定し,取引シグナルを生成するために高速移動平均と遅い移動平均のクロスオーバーを使用することは,典型的な二重移動平均戦略です.
二重移動平均のブレイクアウト戦略は以下の利点があります.
二重移動平均のブレイクアウト戦略には,いくつかのリスクもあります:
解決策:
二重移動平均のブレイクアウト戦略は,次の側面で最適化することができる:
ダブル・ムービング・平均ブレイクアウト戦略は,シンプルで実用的な定量的な取引戦略です. 簡単な論理と実装などの利点があり,市場適応性の問題もあります. パラメータ最適化,シグナルフィルタリング,リスク管理などを通じて,安定した収益性の高い取引システムにすることができます. 全体的に,ダブル・ムービング・平均戦略は,定量的なトレーダーのための深層の研究と適用に値する優れた戦略プロトタイプです.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CDC Action Zone V.2", overlay=true) // CDC ActionZone V2 29 Sep 2016 // CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market // 11 Nov 2016 : Ported to Trading View with minor UI enhancement LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"]) src = input(title="Data Array",type=input.source,defval=ohlc4) prd1=input(title="Short MA period", type=input.integer,defval=12) prd2=input(title="Long MA period",type=input.integer,defval=26) AP = ema(src,2) Fast = ema(AP,prd1) Slow = ema(AP,prd2) Bullish = Fast>Slow Bearish = Fast<Slow Green = Bullish and AP>Fast Red = Bearish and AP<Fast Yellow = Bullish and AP<Fast Blue = Bearish and AP>Fast Buy = Bullish and Bearish[1] Sell = Bearish and Bullish[1] alertcondition(Buy,"Buy Signal","Buy") alertcondition(Sell,"Sell Signal","Sell") //Plot l1=plot(Fast,"Fast", linewidth=1,color=color.red) l2=plot(Slow,"Slow", linewidth=2,color=color.blue) bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na barcolor(color=bcolor) fill(l1,l2,bcolor) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2000, title = "From Year", minval = 1920) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 1921) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" if LSB == "Long only" and Buy and window() strategy.entry("L",true) if LSB == "Long only" and Sell and window() strategy.close("L",qty_percent=100,comment="TP Long") if LSB == "Both" and Buy and window() strategy.entry("L",true) if LSB == "Both" and Sell and window() strategy.entry("S",false) if LSB == "Short only" and Sell and window() strategy.entry("S",false) if LSB == "Short only" and Buy and window() strategy.close("S",qty_percent=100,comment="TP Short")