SMA移動平均クロスオーバーに基づく定量取引戦略


作成日: 2024-01-12 10:51:33 最終変更日: 2024-01-12 10:51:33
コピー: 0 クリック数: 684
1
フォロー
1617
フォロワー

SMA移動平均クロスオーバーに基づく定量取引戦略

概要

この戦略は,異なる周期のSMA平均線を計算して,平均線の金叉と死叉の形状を実現し,その後買入と売却の信号を生成し,典型的なトレンド追跡戦略の1つである.

戦略原則

  1. 5日線 ((sma5)),20日線 ((sma20)),200日線 ((sma200) の3つの異なる周期のSMA平均を計算する
  2. 短期平均線が長期平均線を下から突破すると,買い信号が生成されます.
  3. 短周期が長周期平均線を上から下へと下落すると,売り込み信号が生成されます.
  4. 買入・売却のシグナルで取引する

5日線と200日線の交差を例に挙げると,5日線が200日線を横切るときは,市場が短線看板に踏み入って買入シグナルを生じることを示し,5日線が200日線を横切るときは,市場が短線看板に踏み入って売出シグナルを生じることを示し.異なる周期平均線の交差形状を捉えることで,順調に市場のトレンドを捉えることができる.

戦略的優位性

  1. 操作は簡単で実行しやすい.いくつかの異なる周期のSMA平均線を計算するだけで,簡単な平均線交差形状によって入場と出場を判断する.
  2. 市場の大動向に比較的敏感で,トレンド効果を利用できる。例えば5日線で200日線を突破する時,市場は中長線看板状態にあるので,株を購入して上昇する。
  3. 撤回と損失のリスクは小さい.市場が大きな調整を起こすとき,均線交差戦略は,時宜に売り信号を発し,撤回を効果的に制御することができる.

リスクと対策

  1. ミスシグナルが生じやすい.市場が揺れ動いているとき,均線が繰り返しミス・クロスされ,不必要な取引頻度とコストが生じることがあります.所持周期を適切に調整して,いくつかのショートラインのノイズをフィルターすることができます.
  2. 調整周期の選択は重要な.均線パラメータの選択が不適切であれば,信号の生成効果は望ましくないかもしれない.異なる品種に応じて適切な均線周期の組み合わせを決定すべきである.
  3. 超大震災に対応できない.重大な黒天事件に遭遇すると,均線交差戦略は大きな損失を被る可能性がある.このとき,戦略を一時停止し,人工操作に移すべきである.

戦略最適化の方向性

1.他の指標のフィルタを追加する.均線交差信号が発生した場合は,MACD,KDJなどの他の技術指標を参照して,震動状況で誤信号を生じないようにする.

  1. トレンド判断指標と組み合わせる.例えば,例の5日線と200日線を使って買賣点を構築する.また,例えばADX指標と組み合わせてトレンド判断は強弱で,トレンドが sufficientである場合にのみシグナルを実行する.

  2. 適応平均線を使用する.市場状況と変動率に応じて,平均線パラメータをリアルタイムで調整し,取引シグナルをより実用的にする.

  3. 多品種組合せ 戦略の効果を高めるには,戦略を様々な種類の株式や外貨品種に合わせて戦略組合せを行う.

要約する

この戦略は,単純なSMA平均線交差形状によって市場の動きを判断し,典型的なトレンド追跡戦略を実現する. 優点は,操作が簡単で,大きなトレンドを効果的に捕捉できる; 欠点は,誤ったシグナルを生成しやすいこと,市場の大きな揺れに対応できないことにある. 将来のフィルター信号,最適化パラメータなどの面で戦略の改変と最適化を行うことができる.

ストラテジーソースコード
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SMA Crossover Strategy", overlay=true)

// Define SMAs
sma5 = sma(close, 5)
sma10 = sma(close, 10)
sma20 = sma(close, 20)
sma50 = sma(close, 50)
sma130 = sma(close, 130)
sma200 = sma(close, 200)

// Plot SMAs on the chart
plot(sma5, color=color.blue, title="5 SMA")
plot(sma10, color=color.orange, title="10 SMA")
plot(sma20, color=color.red, title="20 SMA")
plot(sma50, color=color.green, title="50 SMA")
plot(sma130, color=color.purple, title="130 SMA")
plot(sma200, color=color.black, title="200 SMA")

// Generating the buy and sell signals
buySignal = crossover(sma5, sma200)
sellSignal = crossunder(sma5, sma200)

// Execute trades based on signals
if (buySignal)
    strategy.entry("Buy", strategy.long)

if (sellSignal)
    strategy.close("Sell")