高度なRSI指標取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-06 11時47分59秒
タグ:

img

概要

S&P500先端RSI指標取引戦略は,S&P500指数取引のための中長期のトレンドフォロー戦略である.この戦略は,リスクを制御し,誤った信号を減らすために,RSI過剰購入および過剰販売信号と複数のフィルターを組み合わせます.

戦略の論理

この戦略のコア指標は,価格過剰購入および過剰販売レベルを決定するために2期間のRSIを使用するRSIである.RSIが過剰販売ラインを下回り,RSIが過剰購入ライン上昇するとポジションを閉じる.また,戦略にはリスク制御のための一連の補助フィルターがあります.

  1. 毎週RSIフィルター: 牛市で過剰に攻撃的なロングを避けるために,毎週RSIが限界を下回る必要があります.

  2. MAフィルター:上昇傾向が始まって以降のエントリーを保証するために,価格が一定のMA期間を超えることを要求する.

  3. 副RSIフィルター: 副RSIインジケーターも過売り線を下回る必要があります.

  4. ATR ブレイクアウトフィルター:急激な価格下落後,リスクをコントロールするために長時間行くことを避ける.

これらの複数のフィルターの組み合わせにより,中期から長期間の価格逆転点を効果的に特定し,取引頻度を制御し,リスクを軽減することができます.

利点分析

S&P500 アドバンスト RSI インディケーター トレーディング 戦略には以下の利点があります.

  1. 複数の補助指標を組み合わせることで 誤った信号が減少し 信頼性が向上します

  2. ATRブレイクフィルターは 価格暴落後に買い物をしないことで リスクを制御します

  3. 毎週RSIフィルターは 牛市で過剰に攻撃的なロングを防ぐことができます

  4. MAフィルターは上昇傾向が始まってから入力を確保します

  5. 2次RSIフィルターは偽のRSIブレイクを回避します

  6. 中期から長期の保有に適しており,過剰取引を避ける.

リスク分析

この戦略の主なリスクは以下の側面から生じる.

  1. 主な指標としてRSIは少し遅れている.

  2. フィルター条件が厳しくなり 機会を逃すこともあります

  3. ストップ・ロスはフラッシュ・クラッシュ時に取れる

  4. シンプルなRSIとフィルターは 複雑な市場条件では 限られた能力を持っています

対応する緩和措置:

  1. パラメータを調整して 取引を逃さないようにする

  2. ポジションのサイズを増やして 失敗した取引を考慮に入れましょう

  3. 交換頻度を増やすために フィルター条件を適度に緩和する.

  4. 複雑な市場分析のためにより多くの指標を組み合わせることを検討してください.

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

戦略は以下の方向でさらに最適化できます.

  1. RSI パラメータを調整し,最適のオーバーカップ/オーバーセールラインを見つける.

  2. 最適値を決定するために,MA期間のパラメータを試験する.

  3. 価格ブレイクフィルターを最適化するためにATRパラメータを調整するテスト

  4. 複雑な市場の分析を良くするために 他の指標を組み合わせてみてください

  5. 最適な設定を見つけるために毎週RSIパラメータを最適化します

  6. 期間の値や過買い/過売線を含む二次RSIパラメータを最適化する.

結論

S&P500先端RSI指標取引戦略は,リスク制御のためにRSIと複数のフィルター条件を使用して中長期トレンド逆転点を特定する.中長期トレンドをロックし,オーバートレードを避けるために,RSIの強みを効果的に利用する.パラメータが引き続き最適化されるにつれて,戦略のパフォーマンスは改善し続けることができる.全体として,中長期価値投資に適しており,比較的安定した定量戦略である.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Lets connect on LinkedIn (https://www.linkedin.com/in/lets-grow-with-quality/)
// Optimized for S&P500 Daily. Use it as a buy confirmation on certain levels (Springs, Pullbacks, ...) or let it run 
// without "Weekly RSI Filter" and pyramiding for 4 x more trades.
// This strategy is optimized for minimum drawdowns and has several filters on board for use on different securities

strategy("S&P500 RSI2 Studio", overlay=true)

baseLength = input(2, title="Base RSI Length")
overSold = input(10, title="Overbought Level")
overBought = input(90, title="Oversold Level")
overBoughtExit = input(70, title="Overbought Level Exit")
enableWeeklyRsiFilter = input(true, title="Enable Weekly RSI Filter")
weeklyOverSold = input(30, title="Weekly Oversold Level")
weeklyOverBought = input(70, title="Weekly OverOverbought Level")
weeklyRsiLength = input(2, title="weeklyRsiLength")

enableWmaFilter = input(false, title="Enable MA Filter")
wmaLength = input(100, title="WMA Length")

exitRsiLength = input(4, title="Exit RSI Length")
dailyRsiLength = input(4, title="Daily RSI Length")

enable2ndRSIFilter = input(false, title="Enable 2nd RSI Filter")
SecRSIFilterLengh = input(14, title="2nd RSI Filter Length")
SecRSIFilterOverSold = input(20, title="2nd RSI Filter Oversold Level")

enableAtrFilter = input(true, title="Enable ATR Filter")
numAtrDays = input(14, title="Number of Days ATR Average")
atrFilterFactor = input(2, title="ATR Filter Factor")

weeklyRsi = request.security(syminfo.tickerid, "W", ta.wma(ta.rsi(close, weeklyRsiLength), 1))
exitRsi = request.security(syminfo.tickerid, "D", ta.wma(ta.rsi(close, exitRsiLength), 2))
dailyRsi = request.security(syminfo.tickerid, "D", ta.wma(ta.rsi(close, dailyRsiLength), 2))
price = close

priceDropCondition = ta.atr(1) >= ta.atr(numAtrDays) * atrFilterFactor
preventEarlyEntry = not priceDropCondition

vrsi = ta.wma(ta.rsi(price, baseLength), 2)
wma = ta.wma(price, wmaLength)


buyCond1 = ta.crossunder(vrsi, overSold)
buyCond2 = enableWeeklyRsiFilter ? weeklyRsi < weeklyOverSold : true
buyCond3 = enable2ndRSIFilter ? ta.wma(ta.rsi(close, SecRSIFilterLengh),2) < SecRSIFilterOverSold : true
buyCond4 = enableWmaFilter ? price > ta.wma(close, wmaLength) : true
buyCond5 = enableAtrFilter ? preventEarlyEntry : true
 
buy = buyCond1 and buyCond2 and buyCond3 and buyCond4 and buyCond5

if (not na(vrsi))
    if buy 
        strategy.entry("RSI2 Studio", strategy.long, comment="Long")

if (exitRsi > overBoughtExit)
    strategy.close("RSI2 Studio", comment="Close Long")

もっと