RSIモメンタムスキャルピング戦略

RSI VOLUME momentum TRAILING
作成日: 2025-09-29 18:07:14 最終変更日: 2025-09-29 18:07:14
コピー: 0 クリック数: 527
2
フォロー
319
フォロワー

RSIモメンタムスキャルピング戦略 RSIモメンタムスキャルピング戦略

8サイクルRSI+動力下落14:これは従来のRSI戦略ではありません

14サイクルRSIを使用しないでください. この戦略は,RSIサイクルを直接8に圧縮し,14ポイントの動力の値と組み合わせて,ショートラインの勃発を特別にキャプチャします. 伝統的なRSI戦略は,振動的な市場で繰り返し対面し,この組み合わせは,高周波の波動でより安定しています.

核心的な論理は単純です:RSIの動量変化>14時に多頭シグナルを触発し,<-14時に空頭シグナルを触発します.同時に,取引量が13サイクル以上の平均を要求し,偽の突破でないことを確認します.この設計は,単純なRSIの超買い超売りシグナルより1-2サイクル早く,トレンドが開始される黄金瞬間を捉えます.

4.15%のストップ・ストップvs1.85%のストップ・ストップ:リスク/利益の比率は2:1以上

ストップストップ4.15%,ストップストップ1.85%,リスク・利益比は2.24:1に達する.この比率は,剥皮戦略では激進的だが,2.5%の移動ストップと組み合わせると,実際のリスクコントロールはより厳格である.

鍵となるのは,移動ストップの設計である:価格が有利な方向に移動すると,ストップラインは最高点/最低点の動的調整に従います.これは,4.15%のストップ目標に達しなかったとしても,ほとんどの利益をロックすることができます.実戦では,多くの取引は,2-3%の位置で移動ストップによって引き出され,利潤の反転を避けます.

交付量フィルター:1倍倍数は保守的に見えますが正確です

取引量は13サイクル平均を超えなければならない.この設計は偽の信号の90%をフィルタリングする.多くのRSI戦略は,低量の環境で頻繁にポジションを開く結果,反転される.

13周期の取引量平均線は,通常の20周期よりより敏感で,資金流入をより早く識別できる. 1倍数はあまり大きく見えないが,8周期RSIの迅速な反応と組み合わせて,本当の突破の機会を出するのに十分である.

“RSI”の3つの条件:すべてのRSI信号が取引に値するとは限らない

多頭入場には3つの条件の1つを満たす必要がある:RSI動量>14,RSIが超売り区から反発し,RSIが超売り線を穿越する.この設計は単一の条件よりも柔軟で,異なる市場状況に対応する.

オーバーセールラインは10で,オーバーバイラインは90で,従来の30/70よりも極端である。この方法の利点は偽信号を減らすことであり,悪点は,いくつかのチャンスを逃すことである。しかし,脱毛戦略に関しては,逃すことも間違いを犯すこともないほうがよい。

適用される場面:高波動品種のショートライン天国

この戦略は,暗号通貨,主要外為通貨ペア,熱門株などの高変動品種に最適です.低変動のブループラン株または債券では,大きな割引でパフォーマンスを発揮できます.

最適な時間窓は,ヨーロッパ・アメリカ取引時間の重複期であり,流動性が最も優れ,取引量フィルタが最も有効である.アジア時間帯は,取引量が偏っているため,信号品質が低下する.

リスク警告:連続停止が最大の脅威

追跡データによると,この戦略は,特に横横の振動市場において,連続的な損失のリスクがあることを示している. 8周期RSIは過度に敏感であり,区間振動で繰り返し損なわれる可能性があります.

単一のリスクは,口座の2%を超えており,連続して3回の止損後に取引を停止することをお勧めします. 歴史的反転は将来の利益を意味しません. 实体取引は,厳格な資金管理と心理的なコントロールを必要とします.

ストラテジーソースコード
/*backtest
start: 2024-09-29 00:00:00
end: 2025-09-26 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Bybit","currency":"ETH_USDT","balance":500000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MonkeyPhone

//@version=5
strategy("RSI Momentum Scalper", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills=true)

// Trading Mode Selection
tradeMode = input.string("Both", title="Trade Mode", options=["Both", "Long Only", "Short Only"])

// RSI Settings
rsiLength = input.int(8, title="RSI Length", minval=2, maxval=30)
rsiOverbought = input.int(90, title="RSI Overbought", minval=60, maxval=99)
rsiOversold = input.int(10, title="RSI Oversold", minval=1, maxval=40)
rsiMomentumThreshold = input.float(14, title="RSI Momentum Threshold", minval=1, maxval=15, step=0.5)

// Volume Settings
volMultiplier = input.float(1, title="Volume Multiplier", minval=1.0, maxval=3.0, step=0.1)
volLookback = input.int(13, title="Volume MA Length", minval=5, maxval=50)

// Exit Settings
takeProfitPercent = input.float(4.15, title="Take Profit %", minval=0.1, maxval=10.0, step=0.1)
stopLossPercent = input.float(1.85, title="Stop Loss %", minval=0.1, maxval=6.0, step=0.1)
trailingStopPercent = input.float(2.55, title="Trailing Stop %", minval=0.1, maxval=4.0, step=0.05)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)
rsiMA = ta.sma(rsi, 3)

// Calculate RSI Momentum
rsiMomentum = rsi - rsi[1]

// Volume Analysis
volMA = ta.sma(volume, volLookback)
highVolume = volume > volMA * volMultiplier

// Entry Conditions - Long
bullishMomentum = rsiMomentum > rsiMomentumThreshold
oversoldBounce = rsi < rsiOversold and rsi > rsi[1]
bullishCross = ta.crossover(rsi, rsiOversold)
longCondition = (bullishMomentum or oversoldBounce or bullishCross) and highVolume and close > close[1]

// Entry Conditions - Short
bearishMomentum = rsiMomentum < -rsiMomentumThreshold
overboughtReversal = rsi > rsiOverbought and rsi < rsi[1]
bearishCross = ta.crossunder(rsi, rsiOverbought)
shortCondition = (bearishMomentum or overboughtReversal or bearishCross) and highVolume and close < close[1]

// Apply trade mode filter
longEntry = longCondition and (tradeMode == "Both" or tradeMode == "Long Only")
shortEntry = shortCondition and (tradeMode == "Both" or tradeMode == "Short Only")

// Entry Logic
strategy.entry("Long", strategy.long, when=longEntry and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when=shortEntry and strategy.position_size == 0)

// Declare and initialize trailing variables
var float highest_since_long = na
var float lowest_since_short = na
var float long_trailing_level = na
var float short_trailing_level = na
var float long_fixed_sl = na
var float long_tp = na
var float short_fixed_sl = na
var float short_tp = na

// Update trailing levels using ternary operators with math.max/min
highest_since_long := strategy.position_size > 0 ? math.max(na(highest_since_long[1]) ? math.max(high, strategy.position_avg_price) : highest_since_long[1], high) : na
lowest_since_short := strategy.position_size < 0 ? math.min(na(lowest_since_short[1]) ? math.min(low, strategy.position_avg_price) : lowest_since_short[1], low) : na

// Calculate exit levels
long_fixed_sl := strategy.position_size > 0 ? strategy.position_avg_price * (1 - stopLossPercent / 100) : na
long_tp := strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfitPercent / 100) : na
long_trailing_level := strategy.position_size > 0 ? highest_since_long * (1 - trailingStopPercent / 100) : na
short_fixed_sl := strategy.position_size < 0 ? strategy.position_avg_price * (1 + stopLossPercent / 100) : na
short_tp := strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfitPercent / 100) : na
short_trailing_level := strategy.position_size < 0 ? lowest_since_short * (1 + trailingStopPercent / 100) : na

// Effective stop loss levels
effective_long_sl = strategy.position_size > 0 ? math.max(long_fixed_sl, long_trailing_level) : na
effective_short_sl = strategy.position_size < 0 ? math.min(short_fixed_sl, short_trailing_level) : na

// Exit Logic
strategy.exit("Long Exit", "Long", limit=long_tp, stop=effective_long_sl, when=strategy.position_size > 0)
strategy.exit("Short Exit", "Short", limit=short_tp, stop=effective_short_sl, when=strategy.position_size < 0)

// Plot TP, fixed SL, and trailing SL levels on chart when in position
plot(strategy.position_size > 0 ? long_tp : na, title="Long TP", color=color.green, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_fixed_sl : na, title="Long Fixed SL", color=color.red, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_trailing_level : na, title="Long Trailing SL", color=color.orange, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_tp : na, title="Short TP", color=color.green, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_fixed_sl : na, title="Short Fixed SL", color=color.red, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_trailing_level : na, title="Short Trailing SL", color=color.orange, style=plot.style_linebr)

// Alerts
alertcondition(longEntry, title="Long Entry Alert", message="RSI Momentum Long Signal")
alertcondition(shortEntry, title="Short Entry Alert", message="RSI Momentum Short Signal")