SMAとEMAに基づく定量取引戦略


作成日: 2023-12-12 12:31:25 最終変更日: 2023-12-12 12:31:25
コピー: 0 クリック数: 402
1
フォロー
1212
フォロワー

SMAとEMAに基づく定量取引戦略

戦略概要

この策略は,SMA,EMAに基づく量化取引策略と呼ばれる.その主な考えは,異なるパラメータを組み合わせたSMA平均線とEMA平均線を組み合わせて取引信号を構築することである.

2. 戦略の原則

  1. SMA9,SMA50,SMA180の平均線とEMA20の平均線を閉じる価格として計算する.

  2. 閉店価格のcloseとサポート位supとレジスタンス位resの関係によって,買入シグナルと売り出しシグナルを決定する.Closeがsupを突破すると買入シグナルBuySignal,Closeがresを突破すると売り出しシグナルSellSignalを生成する.

  3. シグナルトライバーを購入する際には,多頭開設戦略を実行し,シグナルトライバーを売る際には,多頭ポジションを平らにする.

  4. シグナルトライバーを売却する際には空頭ポジション開設策を実行し,シグナルトライバーを購入する際には空頭ポジションを平らげる.

3つ目 戦略的優位性分析

  1. 複数の均線を組み合わせて取引信号を形成し,信号の正確性と安定性を高めます.

  2. ダイナミックなサポート・レジスタンス位が計算され,取引シグナルがより根拠に据えられています.

  3. 高中低波動平均線が採用され,長期のトレンド判断を重んじながら短期突破を兼ね,戦略の機会を利潤率に向上させる.

  4. フォーク取引を多く行うことを支持し,トレンド状況とショック状況の両方で利益を得ることができます.

4 戦略的リスク分析

  1. SMA平均線に滞りがあるため,買入/売却の信号が遅れて戦略の効果に影響を与える可能性があります.

  2. ストップ・ロスの仕組みが設定されていない場合,保有損失は拡大する可能性があります.

  3. 追跡データは不十分で,実体内のパラメータは市場に応じて調整する必要がある.

  4. ブラック・スウェン事件の衝撃に耐えられない.

リスクに対する対処法:

  1. SMA平均線周期を適切に調整する.
  2. 合理的なストップを設定する.
  3. 検定のサンプルを増加させ,パラメータを調整する.
  4. 防風装置の改善が求められています.

5 戦略の最適化方向

  1. 単一損失を制御する変動率に基づく止損メカニズムを増やす.

  2. 市場動向を判断する機械学習モデルを追加し,取引信号の形成を支援する.

  3. キー価格分析モジュールを追加し,レジスタンス判断の精度を向上させる.

  4. 異なる均線指標パラメータの組み合わせをテストし,より優れているパラメータを探します.

6 戦略の概要

この戦略は,SMA平均線とEMA平均線の技術指標を使用して取引シグナルを構築し,動的なサポート抵抗値を計算するとともに,より完全な買い物戦略の論理を形成しています.戦略は,指標パラメータの柔軟性,双方向取引,多種多様な状況に適応する利点がありますが,平均線の遅れ,止損不完全などの問題にも直面しています.将来,止損機構,トレンド判断,重要な価格位などの判断に関して戦略を最適化することができます.戦略は,より良い安定性と利益の余地があります.

]

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

//@version=4
strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//SMA and EMA code
smaInput1 = input(9, title="SMA1")
smaInput2 = input(50, title="SMA2")
smaInput3 = input(180, title="SMA3")
emaInput1 = input(20, title="EMA1")
sma1 = sma(close, smaInput1)
sma2 = sma(close, smaInput2)
sma3 = sma(close, smaInput3)
EMA1 = ema(close, emaInput1)
plot(sma1, color= color.red , title="SMA1")
plot(sma2, color = color.blue, title="SMA2")
plot(sma3, color= color.white, title="SMA3")
plot(EMA1, color = color.yellow, title="EMA1")

no=input(3,title="BUY/SELL Swing")
Barcolor=input(false,title="BUY/SELL Bar Color")
Bgcolor=input(false,title="BUY/SELL Background Color")
res=highest(high,no)
sup=lowest(low,no)
avd=iff(close>res[1],1,iff(close<sup[1],-1,0))
avn=valuewhen(avd!=0,avd,0)
tsl=iff(avn==1,sup,res)

// Buy/sell signals
BuySignal = crossover(close, tsl)
SellSignal = crossunder(close, tsl)

// Enter long position
strategy.entry("Buy", strategy.long, when=BuySignal)

// Exit long position
strategy.exit("Sell", "Buy", when=SellSignal)

// Enter short position
strategy.entry("Sell", strategy.short, when=SellSignal)

// Exit short position
strategy.exit("Buy", "Sell", when=BuySignal)

colr = close>=tsl ? color.green : close<=tsl ? color.red : na
plot(tsl, color=colr)