この戦略は,RSI指標のトレンドを決定するためにMACD指標を使用し,取引シグナルを生成します.これは指標コンボフィルター戦略タイプに属します.
この戦略は2つの主要指標に基づいています.
RSI 定期的な14期RSIを計算します
RSIのMACD RSIのMACD値を計算します.デフォルトの高速MA12と遅いMA26と信号線9で.
RSIのMACDが上昇し,速いMASと遅いMASの黄金十字が交差すると,上昇傾向が決定し,ロングになります.
MACDがダウンし,速いMASと遅いMASがダウンし,ダウントレンドが決まり,ショートになる.
MACDの指数関数移動平均値は,RSI自身の長期トレンドを決定し,より正確な信号を生むのに役立ちます.
リスクは以下によって軽減できます.
戦略は以下から改善できます.
RSI と MACD パラメータの組み合わせをテストする
MACD 信号が表示されたときに二次確認を追加する
例えば,キャンドルスタイルのパターン,ボリューム,ボリンジャー帯など
ストップをトラッキングストップに最適化
再入国規則の追加
トレンドが続く場合,ストップがヒットした後,ポジションを再確立する.
波動性によるポジションサイズ調整
波動性が高い場合のサイズが小さく,波動性が低い場合のサイズが大きい
この戦略は,RSIとMACD指標を組み合わせ,より正確で安定したトレンド検出のために互いに検証する.しかし,パラメータは最適化が必要であり,突然の出来事を避けるため,確認のために追加の技術フィルターまたは取引ルールが必要である.また,ストップ損失メカニズムとダイナミックなポジションサイズも重要です. 継続的な学習と最適化は,安定した利益のために変化する市場状況に適応するために重要です.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "MACD of RSI", overlay = false) //////////////////////// RSI /////////////////////////// src = close, len = input(14, minval=1, title="Length") up = sma(max(change(src), 0), len) down = sma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //////////////////////// RSI ////////////////////////// //////////////// MACD //////////////////////////// sourcemacd = rsi fastLength = input(12, minval=1), slowLength=input(26,minval=1) signalLength=input(9,minval=1) fastMA = ema(sourcemacd, fastLength) slowMA = ema(sourcemacd, slowLength) macd = fastMA - slowMA signal = ema(macd, signalLength) delta=macd-signal swap1 = delta>0?green:red plot(delta,color=swap1,style=columns,title='Histo',histbase=0,transp=20) p1 = plot(macd,color=blue,title='MACD Line') p2 = plot(signal,color=red,title='Signal') fill(p1, p2, color=blue) hline(0) /////////////////////////MACD ////////////////////////// // Conditions longCond = na sellCond = na longCond := crossover(delta,0) sellCond := crossunder(delta,0) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( longCond ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( sellCond ) strategy.close("BUY")