平均回帰戦略

SMA DEV MA
作成日: 2024-06-17 14:57:59 最終変更日: 2024-06-17 14:57:59
コピー: 0 クリック数: 600
1
フォロー
1617
フォロワー

平均回帰戦略

概要

この戦略は,平均回帰の原理に基づいて,価格が移動平均から偏った状況を利用して取引決定を行う.価格が上位から上位に偏ると空売り,下位から下位に偏ると多売り,価格が移動平均に戻ると平売りする.この戦略の核心は,価格が常に平均レベルに戻ると仮定する.

戦略原則

  1. 価格の平均値として指定周期 ((デフォルト20) の単純移動平均 ((SMA) を計算する.
  2. 価格の標準差 ((DEV) を計算し,これにより上下軌道を構築する。上線はSMA加算標準差の倍数 ((デフォルト1.5)),下線はSMA減算標準差の倍数である。
  3. 価格が上向きで上線を突破するときに空け,下向きで下線を突破するときに空け.
  4. 値がSMAを横切ると空き値が空き値となる.
  5. 移動平均,上線,下線,買取信号をグラフに表示する.

優位分析

  1. 平均回帰戦略は,価格が常に平均値に戻るという統計的原理に基づいており,長期的には一定の利益の確率がある.
  2. 上下軌道の設定は,実行と管理に便利な,入場と出口の明確な位置を提供します.
  3. 戦略の論理はシンプルで明快で,理解し,実行しやすい.
  4. 平均回帰特性が顕著な品種と周期に適用する.

リスク分析

  1. 市場動向が変化すると,価格が長期にわたって平均から偏って戻らない可能性があり,策略が失敗する.
  2. 標準差の倍数設定が正しくない場合,取引頻度が高すぎるとか低すぎると,収益に影響を与える.
  3. 極端な状況では,価格が激しく変動し,上下線が機能しなくなる可能性があります.
  4. 品種や周期が均等回帰の特性を有しない場合,この戦略は収益性がない可能性があります.

最適化の方向

  1. SMAの周期と標準差倍数の最適化テストを行い,最適なパラメータを見つけます.
  2. トレンド判断の指標を導入し,トレンドがはっきりしたときに逆転取引を避ける.
  3. 標準差を超えてATRなどの波動率指標を加え,ダイナミックな軌道を構築する.
  4. スライドポイント,手数料などの取引コストを考慮して,反測の真偽を制御する.
  5. 風制御モジュールを追加します. ストープ・ストープ,仓位管理など.

要約する

平均回帰策は,統計学原理に基づく量化取引策で,価格の平均値の上下を構成して取引決定を行う.この策の論理は単純で,実行は明確だが,品種の選択とパラメータの最適化に注意する.実用的な応用では,戦略の安定性と収益性を高めるために,傾向,取引コスト,リスク管理などの要因も考慮する必要がある.要するに,平均回帰策は,量化取引の分野でよくある,深く研究に値する策である.

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

//@version=5
strategy("Mean Regression Strategy", overlay=true)

// Define the lookback period for the moving average
length = input.int(20, title="Moving Average Length")
mult = input.float(1.5, title="Standard Deviation Multiplier")

// Calculate the moving average and standard deviation
ma = ta.sma(close, length)
dev = mult * ta.stdev(close, length)

// Calculate upper and lower bands
upper_band = ma + dev
lower_band = ma - dev

// Plot the moving average and bands
plot(ma, color=color.blue, linewidth=2, title="Moving Average")
plot(upper_band, color=color.red, linewidth=2, title="Upper Band")
plot(lower_band, color=color.green, linewidth=2, title="Lower Band")

// Entry conditions
long_condition = ta.crossover(close, lower_band)
short_condition = ta.crossunder(close, upper_band)

// Exit conditions
exit_long_condition = ta.crossunder(close, ma)
exit_short_condition = ta.crossover(close, ma)

// Strategy orders
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

if (exit_long_condition)
    strategy.close("Long")
if (exit_short_condition)
    strategy.close("Short")

// Plot signals on the chart
plotshape(series=long_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=short_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")