ダブル・ムービング・アベア・クロスオーバー・リバース戦略は,トレンドを追跡する典型的な定量的な取引戦略である.この戦略は,二重移動平均指標の9日線と14日線からのクロスオーバー信号を利用して,買い売り信号を構築する.9日線が14日線を下から突破して黄金十字を形成すると購入し,9日線が上から14日線を突破して死十字を形成すると販売する.偽信号をフィルタリングするために,戦略は50日線指標も導入し,価格が突破するかどうかを判断する.
この戦略は,主に双動平均指標からの黄金十字と死亡十字信号に基づいて取引する.双動平均値では,9日線は短期トレンド,14日線は中期トレンドを表し,そのクロスオーバーは市場のトレンドの転換を判断するための効果的な技術指標である.短期トレンドラインが中期トレンドラインを下から破って黄金十字を形成すると,短期トレンドラインが強くなっていることを示す.上から破って死亡クロスを形成すると,短期トレンドラインが弱くなっていることを示す.
また,戦略は誤った信号をフィルタリングするために50日線も導入している.価格は50日線を超える場合にのみ購入を発生させ,価格は50日線以下である場合にのみ売却を発生させる.50日線は中長期トレンドを表す.中長期トレンドが一致する場合にのみ,短期取引が行われる.
基本的な論理は次のとおりです
// Buy condition: 9-day line crosses above 14-day line and close price is above 50-day line
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// Sell condition: 9-day line crosses below 14-day line and close price is below 50-day line
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
二重移動平均戦略の利点は明らかです.
二重移動平均戦略には,いくつかのリスクもあります.
リスクに対処するために,以下のような最適化を行うことができます.
二重移動平均戦略は,いくつかの側面で最適化することができます:
ダブル移動平均戦略は,一般的に効率的な利益を生む戦略である.傾向を継続的にフォローすることで利益を得ることができる.同時に,特定のリスクがあり,さらなる改善が必要である.パラメータ,ストップ方法,戦略組み合わせを最適化することによって,この戦略の効果はさらに強化することができる.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true) // Define the length for the SMAs sma9Length = input(9, title="SMA 9 Length") sma14Length = input(14, title="SMA 14 Length") sma50Length = input(50, title="SMA 50 Length") // Add input for SMA 50 // Calculate SMAs sma9 = ta.sma(close, sma9Length) sma14 = ta.sma(close, sma14Length) sma50 = ta.sma(close, sma50Length) // Calculate SMA 50 // Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50 buyCondition = ta.crossover(sma9, sma14) and close > sma50 // Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50 sellCondition = ta.crossunder(sma9, sma14) and close < sma50 // Track the time since position was opened var float timeElapsed = na if (buyCondition) timeElapsed := 0 else timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1 // Close the buy position after 5 minutes if (timeElapsed >= 5) strategy.close("Buy") // Track the time since position was opened var float timeElapsedSell = na if (sellCondition) timeElapsedSell := 0 else timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1 // Close the sell position after 5 minutes if (timeElapsedSell >= 5) strategy.close("Sell") // Plot the SMAs on the chart plot(sma9, title="SMA 9", color=color.blue) plot(sma14, title="SMA 14", color=color.red) plot(sma50, title="SMA 50", color=color.green) // Plot SMA 50 on the chart // Strategy entry and exit conditions using if statements if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short)