デュアルパワーインジケーター戦略


作成日: 2023-11-20 09:47:41 最終変更日: 2023-11-20 09:47:41
コピー: 0 クリック数: 566
1
フォロー
1621
フォロワー

デュアルパワーインジケーター戦略

概要

この戦略は,移動平均の集散指数 ((MACD) と相対的な強さ指数 ((RSI) の2つの強さ指数を統合して,株価の逆転の機会を捉えるために,買入と販売条件を設定します.

戦略原則

  1. 快線,慢線,シグナル線を含むMACD指標を計算する. 快線と慢線が交差すると,買入シグナルとなる.

  2. RSI指標を計算し,超買区と超売区の値を設定する. RSI指標は,超買超売状況を判断する.

  3. MACDの金叉のデッドフォーク信号とRSIの超買超売区判断を組み合わせて,買入と売却の条件を設定します.

  • 購入条件:MACD快線で緩やかな線を貫通して金叉を形成し,RSI指標は超売り区域から戻ったばかりで,反転信号がある.

  • 販売条件:MACD快線の下の慢線を貫通して死叉を形成し,同時にRSI指標は超買い領域に入ると,反転信号を有する.

  1. この2つの強度指標の優位性を同時に利用して,逆転点の正確な買入・売却を行うことができます.

優位分析

  1. MACD指標は,株価の傾向と買い買いのタイミングを判断する.RSI指標は,超買い超売りの状況を判断する.この2つを組み合わせると,買い買いの精度を高めることができる.

  2. 同時に2つの指標のフィルタリング信号を使用することで,単一の指標によって発生する偽信号を避けることができます.

  3. MACDはRSIと結合し,逆転の機会を捉えるため,逆転点の前に買い,逆転点後に売ることができます.

  4. この戦略は,トレンドを追跡し,逆転を捕捉し,柔軟に適用できる,適度な頻度で動作します.

リスク分析

  1. MACD指標は振動状況で偽信号を生じやすい.RSI指標のパラメータ設定を最適化する必要がある.そうでなければ偽信号も発生する.

  2. 株価は短期的に急激に波動し,策略を破るストップ・ロスの損失が発生する.

  3. RSIとMACDのパラメータ設定を最適化する必要があります.そうでなければ,過剰な信号または不十分な信号が発生する可能性があります.

  4. リアルタイムの取引は,資金管理とリスク管理を厳格に管理する必要があります.

最適化の方向

  1. MACDパラメータの速慢平均線設定を最適化して,最適なパラメータの組み合わせを探します.

  2. RSIの超買超売の値を最適化して,偽信号の発生を防止する.

  3. 単一損失を抑えるために, Stop Loss メカニズムに加入する.

  4. ブリン帯,KDJなどの他の指標を追加することも検討できます.

  5. 市場を動かすための戦略を試すことができます.

要約する

この戦略は,MACDとRSIの2つの強さ指標を同時に使用し,逆転点で買い売りし,強力な実用価値を持っています.しかし,継続的にパラメータ設定を最適化し,資金管理を厳格に行う必要があります.

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

//@version=5
// © sabirt
strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI')
//MACD Settings
fastMA = input.int(title='Fast moving average', defval=12, minval=1)
slowMA = input.int(title='Slow moving average', defval=26, minval=1)
signalLength = input.int(9, minval=1)

//RSI settings
RSIOverSold = input.int(35, minval=1)
RSIOverBought = input.int(80, minval=1)
src = close
len = input.int(14, minval=1, title='Length')
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold
wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought



[currMacd, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength)
[prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength)
signal = ta.ema(currMacd, signalLength)

avg_1 = math.avg(currMacd, signal)
crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na
avg_2 = math.avg(currMacd, signal)
crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na

strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold)
strategy.close('buy', when=crossoverBear and wasOverbought)