二重移動平均ブレイクアウト戦略


作成日: 2023-11-21 11:34:09 最終変更日: 2023-11-21 11:34:09
コピー: 0 クリック数: 561
1
フォロー
1617
フォロワー

二重移動平均ブレイクアウト戦略

概要

双移動平均突破策は,より典型的なトレンド追跡策である.これは,2つの異なる周期の移動平均を計算し,その交差を買入と売却の信号として使って,市場トレンドの方向と強さを捉える.

戦略原則

この戦略は主に2つの移動平均に基づいています.最初の移動平均は周期が短いので,価格の変化により迅速に反応できます.第二の移動平均は周期が長いので,一部のノイズをフィルターできます.短期移動平均の上に長期移動平均を穿越すると,買いの信号とみなされ,短期移動平均の下にある長期移動平均を穿越すると,売り切りの信号とみなされます.

具体的には,この戦略は10周期の指数移動平均 ((price1) と20周期の指数移動平均 ((price2)) を計算する.現在のK線の開値と閉値が両移動平均より高い場合,買入シグナルを生成し,現在のK線の開値と閉値が両移動平均より低い場合,売り出しシグナルを生成する.

このような設計によって,トレンドが形成される前に市場に入ることができ,トレンドを追跡することができます.トレンドが逆転するときに,市場から早めに退出することもでき,リスクを効果的に制御することもできます.

戦略的優位性

  • トレンドを早期に捉え,強みのあるトレンドを追跡する
  • 双均線フィルターで,部分的な偽突破を防ぐ
  • Kラインの開値と閉値の二重確認,無効取引の減少

戦略リスク

  • 双対平線戦略は反転取引を多く生み出す傾向がある
  • 双均線走行時,交差信号が頻繁に発生する可能性があります.
  • パラメータの最適化スペースが大きい.不適切な最適化により過適合が起こりうる.

戦略最適化の方向性

  • 異なるパラメータの組み合わせをテストし,最適なパラメータを探します.
  • ストップ・ロスの策略を増やし,単発損失の大きさを減らす
  • フィルタリング条件を増やし,無効取引を減らす
  • 他の指標と組み合わせた信号の有効性を確認する

要約する

この戦略は,全体的に比較的シンプルで実用的で,双均線交差原理によってトレンドを捕捉し,量化取引の基本的な戦略である。しかし,この戦略には一定のリスクも存在し,異なる市場環境に適応するためにさらなる最適化が必要である。パラメータ調整,ストップダスト機構,信号フィルタリングなどの面で最適化の余地があり,戦略をより安定して信頼性のあるものにすることができる。

ストラテジーソースコード
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="MA River CC v1", overlay = true)
strategy("MA River CC v1", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(10, title="1st MA Length")
type1 = input("EMA", "1st MA Type", options=["SMA", "EMA"])

ma2 = input(20, title="2nd MA Length")
type2 = input("EMA", "2nd MA Type", options=["SMA", "EMA"])

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    ema(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    ema(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


buy_entry = (open>price1 and open>price2) and (close>price1 and close>price2)  
sell_entry = (open<price1 and open<price2) and (close<price1 and close<price2)
buy_close = sell_entry
sell_close = buy_entry
//longCondition = crossover(price1, price2)    
if(buy_entry)
    strategy.entry("Long", strategy.long)
    
if(sell_entry)
    strategy.entry("Short", strategy.short)

strategy.close("Long" , when=buy_close)
strategy.close("Short",when=sell_close)