MACDとRSIクロスオーバー信号に基づく取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-18 17:19:03
タグ:

img

概要

この戦略は,市場動向を判断し,潜在的な取引ポイントを特定するためにMACD指標を使用し,過剰購入/過剰販売条件を確認するためにRSI指標を組み合わせます.MACDが購入/売却信号を与え,RSIが同時に市場が過剰販売/過剰購入であることを確認するときにのみ取引信号が生成されます.これは誤った信号を効果的にフィルタリングし,戦略の安定性を向上させることができます.

戦略の原則

MACD指標の計算

MACD指標は,短期間の平均価格動向と長期間の平均価格動向の違いを反映する,高速EMAと遅いEMAの違いで構成される.この戦略では,高速EMAは12日,スローEMAは26日である.

速い線がスローラインを越えたとき,それは上向きを示唆する黄色の十字信号である.速い線がスローラインを越えたとき,それは下向きを示唆する死亡十字信号である.

RSI インディケーター 計算

RSI指標は,市場における過買い/過売状態を反映しています.この戦略では,RSI期間パラメータは14に設定されています.

RSI BELOW 30は,購入者が売り手より長期間優れているため,資産が過剰に売れたことを示唆しています.

RSI Above 70は,資産が過剰に買われたことを示唆します. 売り圧は,追跡されたタイムラインで買い圧を上回ったからです.

30未満の値が過売り状態を示し,70を超える値が過買い状態を示します.

戦略信号

取引信号のMACDのみに頼ると,いくつかの誤った信号が生じる可能性があります.この戦略は,RSIを使用してシグナルをフィルターし,MACDがシグナルを与え,RSIが同時に過買い/過売り極端を確認するときにのみ実際の取引信号を生成します.

具体的には,MACDがゴールデンクロスを生成すると,RSI<=34が同時に超売り市場を確認すると,買い信号が生成される.MACDがデスクロスを形成すると,RSI>=75が超買い市場を確認すると,売り信号が生成される.

この二重確認メカニズムは,多くの信頼性のない取引信号をフィルタリングすることができ,戦略の安定性と信頼性を向上させます.

利点分析

二重 インディケーター フィルタリング は 信号 の 信頼性 を 向上 さ せる

この戦略は,MACDとRSIインジケーターを組み合わせて 双重確認を行うことで,誤った信号による干渉を効果的に軽減し,信頼性のない取引信号をフィルタリングすることで,信号の信頼性と安定性を向上させる.

明確な傾向判断

MACDは価格とボリューム指標として,市場の上昇傾向と下落傾向を明確に決定することができる.RSIの過剰購入/過剰売却判断と組み合わせると,市場の重要な逆転点を正確に把握することができます.エントリーと終了シグナルが明確です.

大型パラメータ最適化空間

この戦略のMACDおよびRSI構成要素のパラメータは,異なるサイクルと取引手段に合わせて最適化および調整できます.さまざまな市場で戦略のパフォーマンスを向上させるためにパラメータ調整を通じて十分な最適化余地があります.

分かりやすく 実行 できる

この戦略で使用されるMACD,RSIおよびその他の指標は,理解しやすい非常に典型的で一般的に使用される技術指標です. 戦略コードはまた,パラメータ調整と最適化のための便利さをもたらす非常にシンプルで直感的です.

リスク分析

商売 の 機会 を 逃す こと が でき ます

この戦略は,比較的保守的な二重確認アプローチを採用しており,偽信号をフィルタリングすることで,単一の指標信号に基づいて利益をもたらすかもしれない取引機会を逃す可能性があります.

  • 解決法: RSIの値範囲を適切に拡大し,確認の厳格性を軽減し,戦略がより多くの取引機会を把握できるようにします.

市場が急激に動いているときの損失

極端な市場変動の場合,MACDとRSIの両方の指標は判断に遅れており,戦略によって生成された不正な取引信号と損失を引き起こす可能性があります.

  • 解決策:単一の取引で過度の損失を防ぐためにストップロスのメカニズムを組み込む.極端な市場動向に対する指標の適切な感受性を構築するためにパラメータを調整する.

パラメータ設定に大きく依存する性能

この戦略のパフォーマンスは,MACD,RSIおよび他のパラメータ設定の質に大きく依存します. 間違ったパラメータ設定は,簡単に逆転した取引信号につながる可能性があります.

  • 解決策: バックテストを通じてパラメータの組み合わせを最適化して最適なパラメータ設定を特定する.

オプティマイゼーションの方向性

リスクを制御するためにストップ・ロスのメカニズムを組み込む

価格または指標に基づくストップロスのルールは,事前に定義された許容される損失の限界値を持つ出口ポジションに実装され,個々の取引での損失を有効に制限することができます.

市場特性に合わせてパラメータを調整する

MACDの高速/遅い線期やRSIの過剰購入/過剰販売の値などの主要なパラメータの継続的な最適化により,変化するサイクルの構造と異なる取引ツールの特異性に対応します.

最適 な 資質 を 調べる

株式指数,暗号通貨,外為ペア,商品,その他の資産をバックテストして 戦略の特徴に最も合致する市場を見つけます

多次元確認のための追加指標を組み込む

ストカスティクス,OBV,CCIなどの指標は,多次元信号フィルタリング方法により,より正確な確認のためにMACDおよびRSIコンポーネントに加えて追加できます.

結論

この戦略は,MACD指標に基づいて市場動向と取引信号を決定し,RSIは誤った信号をフィルタリングするために過買い/過売り条件を確認します.この二重確認メカニズムは信号の品質と安定性を効果的に改善することができます.

性能は,最適化技術,ストップ損失,マルチプロング確認などによってさらに向上させることができます. シンプルな論理と良好な安定性により,初心者の量子が練習し最適化するための良いスタート戦略として機能します.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(default_qty_type = strategy.percent_of_equity, default_qty_value = 25, pyramiding = 10, title="MACD crossover while RSI Oversold/Overbought", overlay=true, shorttitle="MACD Cross + RSI Oversold Overbought", initial_capital = 1000)

//MACD Settings
fastMA = input(title="Fast moving average",  defval = 12, minval = 7) //7 16
slowMA = input(title="Slow moving average",  defval = 26, minval = 7) //24 26 
signalLength = input(9,minval=1) //9 6

//RSI settings
RSIOverSold = input(34 ,minval=1) //26
RSIOverBought = input(75 ,minval=1) //77
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(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,_,_] = macd(close[0], fastMA, slowMA, signalLength)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, signalLength)
signal = ema(currMacd, signalLength)

crossoverBear = cross(currMacd, signal) and currMacd < signal ? avg(currMacd, signal) : na
crossoverBull = cross(currMacd, signal) and currMacd > signal ? avg(currMacd, signal) : na

plotshape(crossoverBear and wasOverbought , title='MACD-BEAR', style=shape.triangledown, text='overbought', location=location.abovebar, color=orange, textcolor=orange, size=size.tiny) 
plotshape(crossoverBull and wasOversold, title='MACD-BULL', style=shape.triangleup, text='oversold', location=location.belowbar, color=lime, textcolor=lime, size=size.tiny) 

// Configure backtest start date with inputs
startDate = input(title="Start Date",
     defval=8, minval=1, maxval=31)
startMonth = input(title="Start Month",
     defval=3, minval=1, maxval=12)
startYear = input(title="Start Year",
     defval=2021, minval=1800, maxval=2100)

afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))
     
if (afterStartDate==true)
    posSize = abs(strategy.position_size)
    strategy.order("long", strategy.long, when = crossoverBull and wasOversold) 
    strategy.order("long", long=false, qty=posSize/3, when = crossoverBear and wasOverbought) 


もっと