移動平均スパンに基づく反転取引戦略


作成日: 2024-01-25 14:16:28 最終変更日: 2024-01-25 14:16:28
コピー: 0 クリック数: 526
1
フォロー
1617
フォロワー

移動平均スパンに基づく反転取引戦略

概要

この策略は移動平均の跨度反転と名付けられており,異なる周期的な移動平均の間の交差を計算して,トレードが逆転するタイミングを判断し,適切な多空操作を行う.

戦略原則

この戦略は3つの移動平均を同時に計算します.

  1. 急速移動平均 ((周期参数flenght):最新の価格変化を反映する
  2. スローモーション平均 ((周期パラメータllength): 中期価格動きを反映する
  3. 最低速度移動平均 ((周期パラメータsslenght):長期の価格トレンドを反映する

急速移動平均線が下からゆっくり移動平均線を通るときは,短期的な動きが多頭部に逆転し始めることを示す.急速移動平均線が上から下からゆっくり移動平均線を通るときは,短期的な動きが空頭部に逆転し始めることを示す.

偽の突破をフィルターするために,戦略は第4の移動平均,すなわち長期トレンドフィルター ((周期パラメータtlenght) を導入した.価格が移動平均線上にある場合にのみ,多信号を考慮し,価格が移動平均線の下にある場合にのみ,空信号を考慮する.

取引の具体的ルールは以下の通りです.

  1. 急速移動平均線上には遅い移動平均線を穿い,そして遅い移動平均線上には最も遅い移動平均線を穿いするときに (短期多頭シグナル) 価格が長期トレンドフィルターよりも高いとき,多頭ポジションを平らにする.

  2. 急速移動平均線の下からゆっくり移動平均線を通過し,そしてゆっくり移動平均線が最もゆっくり移動平均線を下を通過するときに (短期空頭シグナル),そして価格が長期トレンドフィルターより低いとき,空頭ポジションを平らにする. 急速移動平均線上からゆっくり移動平均線を通過するときに空頭ポジションを平らにする.

優位分析

この戦略の利点は以下の通りです.

  1. 多時間枠分析により,短期,中期,長期の価格動向の変化を効果的に識別し,偽信号を減らすことができます.
  2. 長期トレンドフィルターの導入により,長期トレンドが変化する前の誤差取引を回避できます.
  3. 取引規則はシンプルでわかりやすく,理解しやすく,量的な取引に適しています.
  4. 逆転戦略は正偏帰率と利益の優位性がある.
  5. 円盤模擬回測は良好で,収益と収益因子も良好でした.

リスク分析

この戦略には以下のリスクもあります.

  1. 移動平均戦略はパラメータに敏感であり,異なるパラメータによって異なる結果が得られます.
  2. 逆転信号は偽の突破を招き,取引損失を招く可能性があります.
  3. 長期的変動が起こり,利益がゼロになる可能性もあります.
  4. 逆転後,価格が強烈に突破し,時折退出を止めることができません.

解決策は

  1. パラメータを最適化して,最適なパラメータの組み合わせを見つけます.
  2. 逆転信号の確認時間を適切に延長し,偽突破を避ける.
  3. ストップ・ローンを拡大し,損失のリスクを減らす.

最適化の方向

この戦略は,以下の点で最適化できます.

  1. 複数のパラメータの組み合わせをテストし,最適なパラメータを探します.
  2. 低量の偽突破を防ぐために,輸送量フィルタリングを増やす.
  3. 他の指標と組み合わせた入力確認信号
  4. 動的にストップポジションを調整し,退出メカニズムを最適化する.
  5. 資金管理戦略の最適化とリスク管理

要約する

この戦略は,移動平均の金叉死叉をベースに逆転取引を行い,同時に長期トレンドフィルターを導入し,取引方向を指引し,市場逆転のタイミングを効果的に識別することができる.回測結果からすると,この戦略は収益性が優れ,一定の現金市場適用価値がある.その後,パラメータ選択,指標フィルター,止損機構などから最適化することができ,戦略をより安定して実用的にすることができる.

ストラテジーソースコード
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy("Moving Average Trap", overlay=true)

flenght = input.int(title="Fast MA Period", minval=1, maxval=2000, defval=3)
llenght = input.int(title="Slower MA Period", minval=1, maxval=2000, defval=5)
sslenght = input.int(title="Slowest MA Period", minval=1, maxval=2000, defval=8)
tlenght = input.int(title="Trend Filter MA Period", minval=1, maxval=2000, defval=200)

ssma = ta.sma(close, sslenght)
fma = ta.sma(close, flenght)
sma = ta.sma(close, llenght)
tma = ta.sma(close, tlenght)

plot(fma, color=color.red)
plot(sma, color=color.white)
plot(ssma, color=color.green)
plot(tma, color=color.maroon, linewidth=2)

short =  (fma > sma and sma > ssma) and close < tma
long = (fma < sma and sma < ssma) and close > tma
closeshort = fma < sma and sma < ssma
closelong = fma > sma and sma > ssma

if long
	strategy.entry("long", strategy.long)
if closelong
	strategy.close("long")
if short
	strategy.entry("short", strategy.short)
if closeshort
	strategy.close("short")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)