マルチ指標EMA戦略


作成日: 2023-09-28 15:57:34 最終変更日: 2023-09-28 15:57:34
コピー: 1 クリック数: 766
1
フォロー
1617
フォロワー

概要

マルチ指標EMA戦略は,EMA,MACD,オシレータ,RSI,ストキャスティック,ボリンジャーバンドなどの複数の指標を統合してトレンドを追跡する戦略である.この戦略は,複数の指標の統合信号を計算して,現在の上昇傾向または下降傾向にあるかどうかを判断し,購入と販売の信号を生成する.

戦略原則

この戦略は,まず以下の複数の指標を計算します.

  • EMA:一定の周期の指数移動平均EMAを計算する.

  • MACD: MACD指標のDIF線とDEA線を計算する.

  • オシレータ:一定の周期の閉盘価格と開盤価格の差を計算する.

  • RSI:一定の周期における相対的な強弱指数.

  • ストキャスティック:一定のパラメータのランダムな指標KとDの値を計算する.

  • ボリンジャーバンド (Bollinger Bands) は,周期的なブリンズの上線,中線,下線を計算する.

そして,これらの指標の現在の状態に応じて,それらに対して異なる数値を与えます.例えば,ストキャスティックが20未満の場合は,2を与えます.RSIが80以上の場合は-2を与えます.

その後,すべての指標の数値を加算して,総合信号のトリガーを計算する.トリガーは7より大きい場合は,買入シグナルを生成し,トリガーは7より小さい場合は,売り出しシグナルを生成する.

複数の指標の統合信号を計算することで,現在のトレンドの方向をより正確に判断することができ,より信頼性の高い取引信号を生成します.

優位分析

この多指標戦略の最大の利点は,複数の指標の利点を統合して,より全面的かつ正確な判断を行い,単一の指標によって引き起こされる誤った信号を回避することです.

具体的には,この戦略の利点は以下の通りです.

  1. 複数の指標を総合的に利用することで,トレンドを判断するより信頼性が高くなります.単一の指標は誤導信号を生じることがありますが,複数の指標は相互に検証し,誤りを減らすことができます.

  2. 指標の異なる特性を利用して,トレンドの異なる段階を識別する.例えば,MACDはトレンドの開始を識別し,RSIは過熱かどうかを判断する.

  3. 異なるパラメータ設定の指標は,異なる周期の特性をキャプチャすることができます.例えば,高速周期EMAと遅い周期EMAなど.

  4. 各指標の重さをカスタマイズできます. より重要な指標にはより高い重みを与えることができます.

  5. バックテストの結果により,指標の組み合わせと重み配分を最適化することで,よりよい戦略効果が得られます.

リスク分析

この戦略は複数の指標を組み合わせてトレンドを判断していますが,以下のリスクがあります.

  1. 複数の指標の組み合わせは不適切であり,各指標の優位性を発揮できず,判断の衝突を引き起こします.各指標の適用環境を理解する必要があります.

  2. 重み配分は不合理で,各指標の重要性を正確に表現できない.重みを繰り返しテストすることによって最適化する必要がある.

  3. シングルサイクルパラメータ設定はFit不適切であり,複数のタイムサイクル検証を適用すべきである.

  4. 固定指標の重みやパラメータは,市場の変化に適応できないので,ダイナミックな調整メカニズムを導入する必要がある.

  5. 指標信号が遅滞している場合は,他の技術的方法と組み合わせて止損時間を判断する.

  6. 複数の指標の組み合わせは,戦略的複雑さを増し,十分な歴史的データのサポートが必要であり,パラメータの最適化は困難である.

最適化の方向

この戦略は,以下の点で最適化できます.

  1. 市場環境に対してより敏感な指標を見つけるために,より多くの種類の指標をテストします.

  2. 各指標の周期パラメータを最適化して,異なるレベルのトレンド特性を捉えることができる.

  3. 各指標の重み配分を最適化して,各指標の相対的重要性をより正確に表現できるようにする.

  4. 動的調整メカニズムを追加し,パラメータと重みをリアルタイムに最適化し,市場の変化に適応する.

  5. 合理的なストップポイントを設定し,損失のリスクを減らす.

  6. 単一サイクル過度最適化を避けるために,複数のタイムサイクルを検証する.

  7. ステップ・オプティマイゼーションとコンポーネント・オプティマイゼーションの方法を使用して,最適なパラメータ・コンポーネントを探します.

  8. 機械学習などの高度な方法が加えられ,よりスマートな指標の重み調整が可能になる.

  9. 戦略の買取と販売の論理を最適化し,動きを把握しながら,頻繁に取引を避ける.

要約する

マルチ指標EMA戦略は,EMA,MACD,RSIなどの複数の指標の優位性を統合して,現在の市場トレンドの方向を判断して取引信号を生成する.単一の指標戦略と比較して,この戦略は,市場をより全面的に分析し,誤った信号の発生を減らすことができます.また,この戦略は,パラメータ最適化などの方法によって改善され,複雑で変化する市場環境によりよく適応することができます.全体的に,マルチ指標EMA戦略は,非常に効果的なトレンド追跡戦略です.

ストラテジーソースコード
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ally17

//@version=4
// strategy("ELIA MULTI STRATEGY",overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.00, default_qty_value=25)

//INPUT
start = timestamp(input(2021, "start year"), 1, 1, 00, 00)
end = timestamp(input(9999, "end year"), 1, 1, 00, 00)

emalen=input(80, title="Ema Len")
macdfast=input(12, title="Macd Fast Len")
macdslow=input(26, title="Macd Fast Len")
macdsig=input(12, title="Macd Signal Len")
occlen=input(15, title="Occ Len")

rsilen=input(2, title="Rsi Len")
stochklen=input(11, title="Stk K Len")
stochdlen=input(3, title="Stk D Len")
stochlen=input(3, title="Stk Smooth Len")
bblength = input(10, minval=1, title="BB Len")
mult = input(2.0, minval=0.001, maxval=50, title="BB Std Dev")

momlen=input(10, title="Mom Len")


//CALCOLI
var trigger = 0.0

var emavar = 0.0
var macdvar = 0.0
var occvar = 0.0

var rsivar = 0.0
var stochvar = 0.0
var bbvar = 0.0

var donvar =0.0

ema = ema(close,emalen)

[macdLine, signalLine, histLine] = macd(close, 12, 26, 9) // MACD

occ = ema(close,occlen) - ema(open,occlen)

rsi = rsi(close, rsilen) // RSI

stoch = sma(stoch(close, high, low, stochklen), stochlen) // Stoch

basis = sma(close, bblength)
dev = mult * stdev(close, bblength)
upper = basis + dev
lower = basis - dev

moment = mom(close, momlen) // Momentum

Obv = obv // OBV


//PLOT


//STRATEGIA
emavar := (close>ema)? 3 : -3
macdvar := (macdLine>signalLine)? 3 : -3
occvar := (occ>0)? 3 : -3

rsivar := (rsi<20)? 2 : (rsi>50 and rsi<80)? 1 : (rsi>80)? -2 : (rsi<50 and rsi>20)? -1 : 0
stochvar := (stoch<20)? 2 : (stoch>80)? -2 : 0
bbvar :=  (close<lower)? 2 : (close>upper)? -2 : 0

trigger := emavar+macdvar+occvar+rsivar+stochvar+bbvar

longcondition = trigger>=7
closelong = trigger<3

shortcondition = trigger<=-7
closeshort = trigger >-3

trendcolor = longcondition ? color.green : shortcondition? color.red : (trigger>3 and trigger<7)? #A2E1BF : (trigger<-3 and trigger>-7)? #E19997 : na
bgcolor(trendcolor, transp=80)


if time > start and time < end
    if longcondition
        strategy.entry("LONG", long=strategy.long)

if closelong
    strategy.close("LONG", comment="CLOSE LONG")
    
if time > start and time < end
    if shortcondition
        strategy.entry("SHORT", long=strategy.short)

if closeshort
    strategy.close("SHORT", comment="CLOSE SHORT")
    
//plotshape(longcondition, color=color.green, text="L", size=size.small, style=shape.triangledown)
//plotshape(shortcondition, color=color.red, "S"(trigger), size=size.small, style=shape.triangledown)
//plotshape(closelong, color=color.purple, text="LC", size=size.small, style=shape.triangledown)
//plotshape(closeshort, color=color.purple, text="SC", size=size.small, style=shape.triangledown)