ダブル・ムービング・平均逆転戦略は,トレンドフォロー戦略である.価格トレンドが逆転するかどうかを判断するために,異なる期間の移動平均を計算し,ターニングポイントを把握し,低価格で購入し,高値で販売する.
この戦略は,まず異なる期間の移動平均の2組を計算する. 1組は長期移動平均で,全体的な傾向を決定するために使用される. もう1組は短期移動平均で,地域的な傾向を決定するために使用される. 2組の移動平均の関係を比較することによって,戦略は全体的な傾向が逆転したかどうかを判断する.
具体的には,この戦略は最初に60日間の単純な移動平均と60日間の重度の移動平均である2つの長期間の60日間の移動平均を計算する.この移動平均のセットは,全体的なトレンドを決定するために使用される.さらに,この戦略は5日間の単純な移動平均と5日間の重度の移動平均である2つの短期間の5日間の移動平均を計算する.この移動平均のセットは,地元のトレンドを決定するために使用される.
短期移動平均値が長期移動平均値を超えると,価格はダウントレンドからアップトレンドに逆転したことを示します. 戦略はロングポジションを開きます. 短期移動平均値が長期移動平均値を下回ると,価格はアップトレンドからダウントレンドに逆転したことを示します. 戦略はショートポジションを開きます.
具体的なステップは次のとおりです.
60日間の単純な移動平均 nma と60日間の重度の移動平均 n2ma を計算する.
5日間の単純な移動平均 nma1と5日間の重度の移動平均 n2ma1を計算する.
n2ma1とnma1を比較する: n2ma1がnma1を超えると,ロングポジションを開く.n2ma1がnma1を下回ると,ショートポジションを開く.
n2ma と nma を比較する.n2ma が nma を越え,ロング ポジションが開く場合,ロング ポジションを継続する.n2ma が nma を越え,ショート ポジションをオープンする場合は,ショート ポジションを継続する.
価格がストップ・ロスを超えたり,収益を上げるとポジションを閉じる
上記のプロセスを繰り返して,トレンド逆転を把握し,低価格で購入し,高価格で販売します.
この戦略の利点は,二重移動平均の組み合わせが価格動向の逆転を敏感に捉えるという点にある.二重移動平均のクロスオーバーは,クラシックな技術指標信号である.また,異なる期間の移動平均の組み合わせは,全体的な傾向と局所的な傾向の両方を判断し,トレンドフォローを達成することができる.
この戦略のリスクは,二重移動平均のクロスオーバーに誤った信号があり,ポジションに入る時または出る時に誤ったタイミングが発生し,その結果取引リスクが増加することにある.また,移動平均システムはレンジ・バインド市場では誤った信号を受けやすい.最後に,二重移動平均システムにはパラメータ設定の安定性を検証するために比較的長いバックテスト期間が必要である.
戦略は以下の側面で最適化できます.
最適なパラメータ組み合わせを見つけるために移動平均期間の最適化
誤ったブレイクを避けるために他の技術指標フィルターを追加します.
単一の取引リスクを制御するためにストップ・ロスを追加し,利益を取ります.
横向市場での誤った取引を避けるために,トレンド取引のタイミングと組み合わせる
変動する市場変動に適応するために,ポジションサイズを動的に調整する
結論として,ダブル移動平均逆転戦略は,異なる期間の移動平均を比較することによって,価格傾向のターニングポイントを把握し,低価格の購入と高価格の販売を達成する.パラメータ設定を最適化,フィルターを追加,リスクを制御することは戦略を改善するための方向性です.正しく使用すると,傾向逆転を定量的に把握するための効果的なツールになります.
/*backtest start: 2022-10-10 00:00:00 end: 2023-06-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // //////////////// Attempt to Reduced ReDraw version ///////////////////// // // Microcana.com strategy by pilotgsms - version 4.20b <<<< Edited by Seaside420 >>>> special thanks to 55cosmicpineapple // Hull_MA_cross added to script strategy("M&H_v420b", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001) dd = input(defval=1, title="Post Signal Bar Delay", type=float, step=1) df = input(defval=5, title="Close Position Bar Delay", type=float, step=1) keh=input(title="Double HullMA Cross",defval=7, minval=1) confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1]) prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1] n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma,sqn=round(sqrt(keh)) n2ma1=2*wma(close[2],round(keh/2)) nma1=wma(close[2],keh) diff1=n2ma1-nma1,sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) openlong=prediction[dd] and n1>n2 and strategy.opentrades<1 if (openlong) strategy.entry("Long", strategy.long) openshort=not prediction[dd] and n2>n1 and strategy.opentrades<1 if (openshort) strategy.entry("Short", strategy.short) closeshort=prediction and close<low[df] if (closeshort) strategy.close("Short") closelong=not prediction and close>high[df] if (closelong) strategy.close("Long")