RSIトラッキングADX戦略は,RSI指標とADX指標を組み合わせたトレンドフォロー戦略である.RSI指標を使用して過買い・過売り状況,ADX指標を使用してトレンド強さを測定し,トレンドが弱くなったり過買いになったりするとエントリーを許可し,トレンドが弱くなったり過買いになったりすると終了する.
この戦略は主にRSI指標とADX指標の組み合わせを使用して入口と出口を決定します.
入国条件:
20日間のSMA上昇
ADXは前日より0.2以上上昇し 強化傾向を示しています
RSIは85を下回る.過剰購入を避けるため.
あるいは
20日間のSMA上昇
ADX が上昇しているが,0.2未満で,穏やかな傾向を示している.
RSIは50以下で リバウンドする余地がある
出口条件:
RSIが75を超えると,過剰購入状態.
ADXは軽い上昇,傾向は弱
あるいは
RSIが75を超えると,過剰購入状態.
ADXが急上昇し 強い傾向
あるいは
20日間のSMAが下がる
この戦略は,過買い/過売りのRSIと,過買いが起こらない場合の上昇傾向に入ると,過買いまたは傾向が弱くなった場合の脱出を意味するADXを使用します.これは中長期の上昇傾向を追跡することを可能にします.
この戦略の主な利点は以下の通りです.
RSIとADXを組み合わせると,より正確なトレンドと過買い/過売値が読み取られ,より良いエントリーと出口が可能になります.
ADXは,統合中にウィップソー出口を避けるためにトレンド強さを測定します.
RSIは中長期のトレンドを追跡し,過剰な取引を減らすために緩いパラメータを使用します.
シンプルな論理と簡単な実装で 長期投資に適しています
設定可能なパラメータは柔軟性を可能にします
主なリスクは以下のとおりです.
ADXの遅延は,トレンドターニングポイントを逃し,より大きな損失につながる可能性があります.
ストップ・ロスは,急激な価格下落の際に遅刻して発生し,損失を拡大する可能性があります.
RSIのパラメータが太りすぎると 持分が長期間 過剰に買い上げられる可能性があります
ADX パラメータが敏感すぎると,弱気勢で誤って出口が起こる可能性があります.
市場体制の変動により ストックが異常な振る舞いをすることがあります
リスク管理
敏感性のために ADX 期間を短くします.
ストップ・ロスを絞り込み 損失を制限する
長期にわたる買い過ぎを避けるために RSI 期間を短縮する.
ADX パラメーターが敏感すぎないように
市場が大きく動いた時に 手動でオーバーライドする
戦略を最適化するには
RSI期間をテストして より良いパラメータを
ADX 期間を最適化して 傾向を把握する
確認のためにMACDのような他の指標を追加します.
移動平均の組み合わせをテストして エントリを改善します
リスク・リターン比を高めるため 利益を引き上げ ストップ損失を加える
ターニングポイントで手動でオーバーライドする 市場システムを判断します
RSIトラッキングADX戦略は,効果的だがシンプルなトレンドフォロー戦略である.正確なトレンドとオーバーバイト/オーバーセール分析のためにRSIとADXの強みをシネージ化する.論理は,最適化柔軟性で直接的で簡単に実装できる.ADX遅延とストップ損失設定に対して注意が必要です.全体として,中長期トレンドトラッキングに適しており,安定した利益をもたらすことができます.
/*backtest start: 2022-10-03 00:00:00 end: 2023-10-09 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Copyright by Reed Asset Management registered in Shanghai, China //该策略为上海蘆田资产管理有限公司制 //@version=2 strategy("[蘆田策略]ADX+RSI", overlay=true) //ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = change(high) down = -change(low) truerange = rma(tr, len) plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange) minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) plot(sig, color=red, title="ADX") //ADX+RSI Strategy Long Entry longEntry1 = sma(close, 20) > sma(close, 20)[1] //check if the ADX is rising longEntry2 = (adx(14, 14) - adx(14, 14)[1]) > 0.2 longEntry3 = rsi(close, 14) < 85 longEntry4 = (adx(14, 14) - adx(14, 14)[1]) > 0 longEntry5 = (adx(14, 14) - adx(14, 14)[1] ) < 0.2 longEntry6 = rsi(close, 14) < 50 longCondition1 = longEntry1 and longEntry2 and longEntry3 longCondition2 = longEntry1 and longEntry4 and longEntry5 and longEntry6 if(longCondition1 or longCondition2) strategy.entry("long", strategy.long) //ADX+RSI Strategy Long Exit longExit1 = rsi(close, 9) > 75 longExit2 = (adx(14, 14) - adx(14, 14)[1]) > 0 longExit3 = (adx(14, 14) - adx(14, 14)[1] ) < 0.2 longExit4 = (adx(14, 14) - adx(14, 14)[1]) > 0.2 longExit5 = sma(close, 20) < sma(close,20)[1] longExitCondition1 = longExit1 and longExit2 and longExit3 longExitCondition2 = longExit1 and longExit4 longStop1 = strategy.position_avg_price + 4 * tr longExitCondition3 = longExit5 longStop2 = sma(close, 20) strategy.close_all(when = longExitCondition1) if (longExitCondition2) strategy.exit("exit", "long", stop = longStop1) if (longExitCondition3) strategy.exit("exit", "long", stop = longStop2) //Strategy