Chiến lược Scalping RSI Momentum

RSI VOLUME momentum TRAILING
Ngày tạo: 2025-09-29 18:07:14 sửa đổi lần cuối: 2025-09-29 18:07:14
sao chép: 0 Số nhấp chuột: 527
2
tập trung vào
319
Người theo dõi

Chiến lược Scalping RSI Momentum Chiến lược Scalping RSI Momentum

8 chu kỳ RSI + động lực giảm giá 14: Đây không phải là chiến lược RSI truyền thống

Không sử dụng RSI 14 chu kỳ nữa. Chiến lược này trực tiếp nén chu kỳ RSI thành 8, kết hợp với 14 điểm giảm động lực, đặc biệt để nắm bắt các vụ nổ đường ngắn. Chiến lược RSI truyền thống liên tục gặp nhau trong thị trường biến động, và bộ này hoạt động ổn định hơn trong biến động tần số cao.

Lý luận cốt lõi rất đơn giản: RSI kích hoạt tín hiệu đa đầu khi biến đổi động lực> 14, và tín hiệu đầu trống khi <-14. Đồng thời yêu cầu khối lượng giao dịch vượt quá 13 chu kỳ trung bình, đảm bảo không có đột phá giả. Thiết kế này trước 1-2 chu kỳ so với tín hiệu RSI đơn giản, nắm bắt thời điểm vàng khi xu hướng bắt đầu.

4.15% Stop Loss vs 1.85% Stop Loss: Ratio lợi nhuận rủi ro cao hơn 2:1

Stop loss là 4.15%, Stop loss là 1.85%, và RSI là 2.24:1. Đây là một tỷ lệ cực đoan trong chiến lược cắt bỏ da đầu, nhưng với Stop loss di chuyển là 2.55%, kiểm soát rủi ro thực tế nghiêm ngặt hơn.

Điểm mấu chốt là thiết kế dừng chân di động: Một khi giá di chuyển theo hướng thuận lợi, đường dừng chân sẽ tuân theo sự điều chỉnh động của điểm cao nhất / điểm thấp nhất. Điều này có nghĩa là bạn có thể khóa phần lớn lợi nhuận ngay cả khi không đạt được mục tiêu dừng chân 4.15%. Trong chiến đấu thực tế, nhiều giao dịch sẽ bị dừng chân di động ở vị trí 2-3%, tránh lợi nhuận quay trở lại.

Bộ lọc số lượng giao dịch: 1x dường như bảo thủ, nhưng thực tế là chính xác

Số lượng giao dịch phải vượt quá 13 chu kỳ trung bình để mở vị trí. Thiết kế này lọc 90% tín hiệu giả. Nhiều chiến lược RSI mở vị trí thường xuyên trong môi trường có lượng thấp, kết quả là bị trả lại.

Đường trung bình khối lượng giao dịch của chu kỳ 13 nhạy cảm hơn so với chu kỳ 20 thông thường và có thể nhận diện dòng tiền chảy nhanh hơn. Số nhân 1 lần có vẻ không cao, nhưng kết hợp với phản ứng nhanh của RSI 8 chu kỳ, đã đủ để lọc các cơ hội đột phá thực sự.

Ba điều kiện nhập cảnh: Không phải mọi tín hiệu RSI đều đáng để giao dịch

Việc tham gia nhiều đầu cần phải đáp ứng một trong ba điều kiện: RSI động lực> 14, RSI phản hồi từ vùng bán tháo, RSI vượt qua đường bán tháo. Thiết kế này linh hoạt hơn so với điều kiện đơn lẻ và thích ứng với các tình trạng thị trường khác nhau.

Đường bán quá mức là 10, đường mua quá mức là 90, cực đoan hơn so với 3070 truyền thống. Lợi ích của việc làm như vậy là giảm tín hiệu giả, và rủi ro là bạn có thể bỏ lỡ một số cơ hội.

Trường hợp thích hợp: Thiên đường đường đường ngắn của các giống biến động cao

Chiến lược này phù hợp nhất với các loại biến động cao như tiền điện tử, các cặp tiền tệ chính ngoại hối và cổ phiếu phổ biến. Các cổ phiếu hoặc trái phiếu blue chip có biến động thấp sẽ được giảm giá đáng kể.

Cửa sổ thời gian tốt nhất là thời gian giao dịch của châu Âu và Mỹ, thời gian này có tính thanh khoản tốt nhất và bộ lọc khối lượng giao dịch hiệu quả nhất. Thời gian châu Á sẽ giảm chất lượng tín hiệu do khối lượng giao dịch thấp hơn.

Cảnh báo rủi ro: Hạn kiệt liên tục là mối đe dọa lớn nhất

Dữ liệu phản hồi cho thấy chiến lược này có nguy cơ thua lỗ liên tục, đặc biệt là trong thị trường dao động ngang.

Khu vực rủi ro duy nhất không được vượt quá 2% tài khoản và ngừng giao dịch sau 3 lần dừng liên tiếp. Lịch sử không thể báo hiệu lợi nhuận trong tương lai, giao dịch trực tiếp cần quản lý tiền và kiểm soát tâm lý nghiêm ngặt.

Mã nguồn chiến lược
/*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")