移動平均とMACDを組み合わせたRSIインジケーター取引戦略


作成日: 2024-02-20 14:28:59 最終変更日: 2024-02-20 14:28:59
コピー: 0 クリック数: 880
1
フォロー
1617
フォロワー

移動平均とMACDを組み合わせたRSIインジケーター取引戦略

概要

この戦略は,移動平均線,MACD指数とRSI指数を組み合わせて株価のトレンドを識別し,低買高売りを実現し,利益を得ます.短期移動平均線が長期移動平均線を横切って,閉店価格が50日移動平均線より高くなったら,買入シグナルが生じます.短期移動平均線が長期移動平均線を横切って,閉店価格が50日移動平均線より低いとき,売出シグナルが生じます.また,この戦略は,RSI指数によって超買超売り領域にあるかどうかを判断し,場内シグナルを修正し,MACD指数の直線図によって中長期トレンドの判断を修正します.

戦略原則

この戦略は主に二重移動平均戦略に依存し,短期移動平均 ((3日EMA) の上に長期移動平均 ((30日EMA) を穿越すると買入シグナルが生じ,短期移動平均の下に長期移動平均を穿越すると売出シグナルが生じます.これは,株式価格の短期および長期のトレンドを判断する常用テクニックです.

さらに,この戦略は50日移動平均を導入し,50日線より高い価格で購入シグナルを発生させ,それより低い価格で販売シグナルを発生させ,頻繁に取引を避けるため,偽のシグナルをフィルターする.

さらに,RSIは,超買い超売を判断するために使用されます. RSIが70を超えれば,超買い領域と考えられ,短期的な強気でも反動が起こりうる場合です. RSIが30を下回れば,超売り領域と考えられ,短期的な急落でも反発が起こりうる場合です.

最後に,MACD直線図は,中長期のトレンドを判断するために使用される.MACD直線図>0であれば,中長線が上昇傾向を表すので,入場信号はより信頼性がある.MACD直線図であれば,中長線が下降傾向を表すので,短期間に買い信号が生じても,調整される可能性があります.

戦略的優位性

この戦略の最大の利点は,複数の指標の組み合わせにより,エントリーとエクジットのシグナルがより正確で信頼性が高いことです.単一の指標は偽の信号を生成しやすい.この戦略は,移動平均によって短期的な傾向を判断し,RSIは超買いを判断し,MACDは中期的な傾向を判断し,各取引の成功確率を大幅に高めます.

もう一つの利点は,トレンド取引と逆転取引の両立である.トレンドをフォローし,モメンタムをフォローすることは,すべてのトレンドトレーダーの信条である.しかし,高度な戦略はトレンドを止めることはありません.適切な逆転取引は,豊富な余分な利益を得ることができます.この戦略は,超買い超売りでない地域で逆転を選択し続け,この戦略に活力を与えます.

戦略リスク

この戦略の主なリスクは,突発的な事件が急速な調整を引き起こすことにある.いかなる量的な戦略も,大きな利差または好意的なニュースによって引き起こされる激しい価格変動に対応することは困難である.このとき,ストップ・ローズポイントが突破され,大きな損失を招く可能性がある.さらに,政策リスクも戦略に衝撃を与える.

もう一つのリスクは,多頭走行中の短期調整が損失の停止を招くことです. 中間長線がまだ牛市である場合でも,短期調整では長期ポジションの終了が停止されることがあります. このとき,その後上昇の動きが逃されます.

戦略の最適化

この戦略は,以下の側面から最適化できます.

  1. パラメータ最適化. 複数の組み合わせのパラメータをテストして最適なパラメータを探します.

  2. 複数の指標を追加する. ブリンライン,KDJなどの他の指標をテストすることができ,多指標の組み合わせを豊かにし,信号の質を向上させる.

  3. ストップを最適化する仕組み ストップを追跡する,区間突破ストップなどのより高度なストップ方法をテストすることができ,ストップが衝撃を受ける確率を減らす.

  4. より多くの市場環境に適応 戦略の部分パラメータを最適化することで,より多くのタイプの市場で安定した収益を得ることができます

要約する

この戦略は,移動平均,RSI指標とMACD指標の組み合わせを使用して,高品質のシグナルを生成し,単一の指標の制限を回避し,購入または売却の決定に強い自信を与えます. 同時に,戦略は,トレンド取引と逆転取引を兼ね,順調を保ちながら,重要な時に効率的な逆転操作を選択することができます. 全体的に,この戦略は,安定し,高効率で,非常に優れた量化戦略です.

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

//@version=5
strategy('sachin 3.30 ', overlay=true)

// Input parameters
length = input.int(14, title='RSI Length', minval=1)
overbought = input.int(70, title='RSI Overbought Level', minval=0, maxval=100)
oversold = input.int(30, title='RSI Oversold Level', minval=0, maxval=100)
ema3_length = input(3, title='EMA 3 Length')
ema30_length = input(30, title='EMA 30 Length')
ema50_length = input(50, title='EMA 50 Length')

// Calculate EMAs
ema3 = ta.ema(close, ema3_length)
ema30 = ta.ema(close, ema30_length)
ema50 = ta.ema(close, ema50_length)

// Calculate RSI
rsiValue = ta.rsi(close, length)

// Calculate MACD
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

var float buyPrice = na

// Buy condition: EMA 3 crosses above EMA 30 and price is above EMA 50
buyCondition = ta.crossover(ema3, ema30) and close > ema50
if (buyCondition)
    buyPrice := close
    strategy.entry('Buy', strategy.long)

// Exit long position when close is below EMA30 and below the low of the previous 3 candles after the buy entry
exitLongCondition = close < ema30 and close < ta.lowest(low, 3) and close < buyPrice
if (exitLongCondition)
    strategy.close('BuyExit')

// Sell condition: EMA 3 crosses below EMA 30 and price is below EMA 50
sellCondition = ta.crossunder(ema3, ema30) and close < ema50
if (sellCondition)
    strategy.entry('Sell', strategy.short)

// Exit short position when close is above EMA30 and above the high of the previous 3 candles after the sell entry
exitShortCondition = close > ema30 and close > ta.highest(high, 3)
if (exitShortCondition)
    strategy.close('SellExit')

// Plot EMAs on the chart
plot(ema3, color=color.new(color.blue, 0), title='EMA 3')
plot(ema30, color=color.new(color.red, 0), title='EMA 30')

// Change color of EMA 50 based on MACD histogram
ema50Color = hist > 0 ? color.new(color.blue, 0) : hist < 0 ? color.new(color.black, 0) : color.new(color.blue, 0)
plot(ema50, color=ema50Color, title='EMA 50 Colored')

// Change color of EMA 30 based on RSI trend
ema30Color = rsiValue > oversold ? color.new(color.green, 0) : rsiValue < overbought ? color.new(color.red, 0) : color.new(color.blue, 0)
plot(ema30, color=ema30Color, title='EMA 30 Colored')

// Highlight Buy and Sell signals on the chart
bgcolor(buyCondition ? color.new(color.green, 90) : na)
bgcolor(sellCondition ? color.new(color.red, 90) : na)

// Plotting Buy and Sell Signals on the Chart until strategy exit
barcolor(strategy.position_size > 0 and rsiValue > overbought ? color.new(color.yellow, 0) : strategy.position_size < 0 and rsiValue < oversold ? color.new(color.black, 0) : na)