AOオシレーターに基づくEMAクロスオーバー日中取引戦略


作成日: 2023-12-25 10:53:48 最終変更日: 2023-12-25 10:53:48
コピー: 3 クリック数: 656
1
フォロー
1623
フォロワー

AOオシレーターに基づくEMAクロスオーバー日中取引戦略

概要

この戦略は,AOの振動指数とEMAの移動平均の交差を利用して日内取引を行う戦略である.その主な考えは,AOの指数がゼロ軸を交差していると同時に,急速なEMA線が中間EMA線を横切って取引信号を生成することである.

戦略原則

この戦略は,入場と出場を2つの指標で表している.

  1. AO振動指数:この指数は,5日間の高低平均と34日間の高低平均の差値で,現在の市場トレンドを判断するために使用される.AOが正の時は現在の上昇傾向を表し,負の時は現在の下降傾向を表す.

  2. EMA移動平均:戦略では,3日目と20日目の2つのEMAを使用して計算し,3日目のEMAは短期トレンドを代表し,20日目のEMAは中期トレンドを代表する.短期EMAは,下から中期EMAを突破するときに買い信号を生じ,逆に上から下破するときに売り信号を生成する.

この戦略の入場条件は,AO指標がゼロ軸を交差する時に,同時にEMAが金叉または死叉が発生する時にのみ取引シグナルが生じることである.これにより,AO指標が震動する時に誤ったシグナルが生じることを防ぐことができる.出場条件は,ロンドン取引時間終了後に全額平仓である.

優位分析

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

  1. AO指数は,大トレンドを正確に判断し,EMAを偽突破して損失を防ぐために使用されます.
  2. 信号の明瞭さを高めるため,ダブルインジケーターを組み合わせて,いくつかのノイズをフィルターします.
  3. 取引の主要時間帯のみで取引し,夜間取引のリスクを避ける.
  4. 戦略の論理はシンプルで明快で,実行は分かりやすい.
  5. 優化や曲線適合の必要性なく,パラメータが安定している.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 内部取引の損失の拡大のリスク.重大ブラック天事件の際に,短期間に損失を止められないことが大きな損失を引き起こす可能性があります.
  2. EMA指標の偽突破によるリスク. 市場が震動期にあるとき,EMAが複数の交差から誤信号が発生する可能性がある.
  3. パラメータ固定は適応性の欠如がある.異なる市場周期でパラメータは調整する必要がある.

これらのリスクを回避するために,我々は,ストップ・ロスの仕組みを設定するか,または異なる周期に応じてパラメータを調整して,戦略をより柔軟にすることができる.

最適化の方向

この戦略では,パラメータの調整が主な最適化方向です.

  1. EMA周期の調整.より短い周期のEMAの組み合わせをテストしたり,取引信号を構築するためにより多くのEMAを追加したりできます.

  2. AOパラメータの調整.異なる長短周期パラメータがAO指標に与える影響をテストする.

  3. RSIbordの追加は,過買過売のリスクを回避するためです.

  4. 取引時間の調整 異なる地域やより長い取引時間の効果をテストする

この戦略は,パラメータを調整し,新しい指標を追加することで,より堅牢で効率的になります.

要約する

全体として,この取引戦略は,トレンド判断指標AOと短期中期EMAの交差を組み合わせて,簡単な実用的な日内取引戦略を構築している. それは,戦略信号の明確さと,実行しやすいなどの利点を持っている. しかし,いくつかのパラメータの固定された欠陥もある. 継続的なテストと最適化によって,この戦略はさらに改善され,より安定して市場のニーズに適応することができます.

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

//@version=4
//@author SoftKill21

strategy(title="MA cross + AO", shorttitle="MA_AO")
ao = sma(hl2,5) - sma(hl2,34)

len = input(3, minval=1, title="Length")
src = input(close, title="Source")
out = ema(src, len)

len1 = input(20, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)

timeinrange(res, sess) => time(res, sess) != 0
londopen = timeinrange(timeframe.period, "0300-1100") 
nyopen = timeinrange(timeframe.period, "0800-1600") 

longC = crossover(out,out1) and ao>0 and londopen
shortC = crossunder(out,out1) and ao<0 and londopen

invert = input(title="Reverse position ?", type=input.bool, defval=false)

if(invert==false)
    strategy.entry("LONG",1,when=longC)
    strategy.entry("SHORT",0,when=shortC)



if(invert==true)
    strategy.entry("short",0,when=longC)
    strategy.entry("long",1,when=shortC)
    
strategy.close_all(when= not (londopen))