この戦略は,移動平均収束差異 (MACD) 指標と相対強度指数 (RSI) 指標を組み合わせて,逆転機会を捉えるための買い売り条件を設定します.
速線,スローライン,シグナルラインを含むMACD指標を計算する.速線とスローラインのクロスオーバーは取引信号である.
RSI インディケーターを計算し,過剰購入および過剰販売の限界値を設定します. RSI インディケーターは過剰購入および過剰販売の条件を決定することができます.
MACD のクロスオーバー信号と RSI のオーバー買い/オーバーセール 読み上げを組み合わせて,購入・販売条件を定義します.
買い条件:MACDの速い線がスローライン (黄金十字) を越えて,RSIインジケーターが過剰購入ゾーンから戻り,逆転を示しています.
売り条件:MACD快線がスローライン (デッドクロス) の下を通過し,RSIインジケーターがオーバーバイゾーンに入り,逆転を示します.
この2つの強力な指標の強みを活用して 逆転点で正確に買ったり売ったりできます
MACDは,トレンドと取引機会を特定することができます. RSIは過買い/過売り状態を測定します.両方を使用すると精度が向上します.
2つのインジケーターを使うと 1つのインジケーターで起こる 誤った信号をフィルタリングできます
MACDとRSIを組み合わせると,逆転前に購入し,逆転後に売却してターンを取ることができます.
この戦略は,傾向を追跡し,逆転を柔軟に捉えるため,適度な頻度を持っています.
MACDは不安定な市場では誤った信号を与えます.誤った信号を避けるためにRSIパラメータは最適化する必要があります.
短期的な変動は,ポジションを停止し,損失を引き起こす可能性があります.
RSIとMACDのパラメータは,信号が多すぎたり少すぎたりしないように最適化する必要があります.
厳格なリスクとマネーマネジメントは リアルタイム取引にとって極めて重要です
最適な組み合わせのためにMACDの高速/スローラインパラメータを最適化します.
誤ったシグナルを防ぐために,RSIの過剰購入/過剰販売の限界値を最適化します.
単一の取引リスクを制御するためにストップロスを追加します.
追加確認のためにボリンジャー帯やKDJのようなフィルターを追加してみてください
突破やトレンドフォローなどの様々なエントリー/アウトプット戦略をテストします
この戦略は,逆転のためのMACDとRSIの強みを組み合わせています. しかし,パラメータ調整,リスク管理,マネーマネジメントはライブパフォーマンスにとって鍵です. 柔軟性は異なる市場条件に適しており,ライブテストと追跡に価値があります.
/*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)