
Đây không phải là một chiến lược rung bình thường. Chiến lược cắt da giữa các khu vực điệu nhảy xác định các khu vực giao dịch thông qua khung thời gian cao 60 phút, tìm điểm vào chính xác của Burin + RSI trong khung thời gian thấp.
Logic cốt lõi của chiến lược là rõ ràng: giá phải nằm trong phạm vi được xác định bởi HTF, đồng thời tham gia tín hiệu bán tháo RSI khi chạm vào biên giới của Bollinger Bands. Các tín hiệu đa đầu yêu cầu giá ≤ Bollinger và RSI ≤ 30, tín hiệu không cần thiết yêu cầu giá ≥ Bollinger và RSI ≥ 70.
Bảng Brin 2.0 không phải là một thiết lập ngẫu nhiên. Thống kê cho chúng ta biết rằng 95% biến động của giá sẽ nằm trong phạm vi 2x, điều đó có nghĩa là xác suất chạm biên giới chỉ là 5%. Khi giá vượt qua biên giới xác suất này, khả năng quay trở lại trục trung tâm tăng lên đáng kể.
Chiều dài của dải Brin trong 20 chu kỳ tìm thấy sự cân bằng giữa việc nắm bắt các biến động ngắn hạn và tránh quá nhạy cảm. Nó ổn định hơn so với chu kỳ 14 và nhạy cảm hơn so với chu kỳ 26.
0.25% VWAP độ khoan được thiết kế tinh tế. Chiến lược tạm dừng giao dịch khi giá lệch hơn 0.25% so với VWAP. Điều kiện lọc dường như nhỏ này có thể tránh được thời điểm bất thường khi giá lệch mạnh khỏi giá trung bình trong giao dịch thực tế.
VWAP đại diện cho giá trung bình có trọng lượng giao dịch trong ngày và là điểm tham khảo quan trọng cho các nhà giao dịch tổ chức. Khi giá dao động gần VWAP, thị trường thường ở trạng thái tương đối cân bằng, phù hợp hơn với chiến lược giao dịch trong khoảng thời gian.
Chiến lược cung cấp hai chế độ dừng: dừng trục giữa và dừng bên cạnh. dừng trục giữa bảo thủ hơn, nhắm vào đường trung tâm của vùng Brin; dừng bên cạnh tích cực hơn, nhắm vào biên giới khác của khu vực HTF. Dữ liệu đánh giá lại cho thấy tỷ lệ chiến thắng của chế độ dừng trục giữa cao hơn nhưng thu nhập đơn lẻ thấp hơn.
Mức độ đệm dừng 0,15% được thiết kế hợp lý. Mức độ dừng 0,15% nằm ngoài ranh giới của khoảng HTF, cho phép giá dao động bình thường và có thể dừng đệm kịp thời khi thực sự phá vỡ. Tỷ lệ đệm này đã được tối ưu hóa để cân bằng tần suất dừng và hiệu quả bảo vệ.
Vị trí tối đa được giới hạn ở mức 20% số tiền trong tài khoản, điểm cân bằng của giao dịch tích cực và kiểm soát rủi ro. Khá tích cực hơn so với 10% theo khuyến nghị truyền thống, nhưng có tính chất tần suất cao của chiến lược và tỷ lệ dừng lỗ tương đối nhỏ, 20% vị trí vị trí là hợp lý.
Vị thế động được tính dựa trên giá trị tài khoản ròng trong thời gian thực, đảm bảo lỗ hổng rủi ro cho mỗi giao dịch tương đối ổn định. Khi giá trị tài khoản ròng tăng, vị thế tuyệt đối tăng theo đó; Khi giá trị ròng giảm, vị thế tự động thu hẹp, tạo ra cơ chế điều chỉnh rủi ro tự nhiên.
Chiến lược này hoạt động tốt nhất trong thị trường dao động ngang, đặc biệt phù hợp với các loại có tỷ lệ dao động vừa phải. Nó hoạt động không tốt trong thị trường xu hướng mạnh, vì giá dễ dàng vượt qua phạm vi HTF, gây ra tổn thất dừng thường xuyên.
Thời gian giao dịch tốt nhất là thời gian chồng chéo giữa châu Âu và Mỹ (21 giờ 00-24:00 giờ Bắc Kinh), khi đó có nhiều thanh khoản và biến động giá tương đối đều đặn. Thời gian châu Á có thể xảy ra giá nhảy vọt do thiếu thanh khoản, ảnh hưởng đến hiệu quả thực hiện chiến lược.
Lịch sử phản hồi không đại diện cho lợi nhuận trong tương lai, chiến lược có nguy cơ thua lỗ liên tục. Đặc biệt là khi cấu trúc thị trường thay đổi đáng kể, các tham số được tối ưu hóa dựa trên dữ liệu lịch sử có thể không hiệu quả.
Trong trường hợp Black Swan, khoảng HTF có thể bị mất hiệu lực ngay lập tức, dẫn đến việc dừng lỗ không thể thực hiện kịp thời. Khuyến nghị đặt giới hạn rút tiền tối đa ở cấp tài khoản, tạm dừng giao dịch khi tổn thất trong ngày vượt quá 5% giá trị tài khoản ròng. Chiến lược không phù hợp để sử dụng trước và sau các sự kiện tài chính quan trọng, tránh các sự kiện có ảnh hưởng cao như quyết định của ngân hàng trung ương, dữ liệu phi nông nghiệp.
||
This isn’t your average oscillation strategy. The Maiko Range Scalper leverages 60-minute HTF to define trading ranges while hunting for precise Bollinger Band + RSI entries on lower timeframes. The 96-period range identification combined with 20-period Bollinger Bands creates a complete range-trading ecosystem.
Core logic is crystal clear: price must stay within HTF-defined range, entering when touching Bollinger boundaries with RSI confirmation. Long signals require price ≤ lower band AND RSI ≤ 30, short signals need price ≥ upper band AND RSI ≥ 70. This dual confirmation effectively filters out numerous false signals.
The 2.0x Bollinger multiplier isn’t arbitrary. Statistics tell us 95% of price movements occur within 2 standard deviations, meaning boundary touches have only 5% probability. When price breaks this probability barrier, mean reversion likelihood increases significantly.
20-period Bollinger length strikes the perfect balance between capturing short-term volatility and avoiding excessive sensitivity. More stable than 14-period, more responsive than 26-period. Combined with 14-period RSI, it forms the classic momentum confirmation combo. RSI 30⁄70 thresholds are more conservative than traditional 20⁄80, reducing false signals in extreme markets.
The 0.25% VWAP tolerance is brilliantly designed. When price deviates beyond 0.25% from VWAP, strategy pauses trading. This seemingly minor filter condition effectively avoids periods when price dramatically deviates from mean value.
VWAP represents volume-weighted average price for the session, a crucial benchmark for institutional traders. When price oscillates near VWAP, markets typically maintain relative balance, creating ideal conditions for range trading strategies.
Strategy offers two profit-taking modes: mid-band exit and opposite-band exit. Mid-band is more conservative, targeting Bollinger middle line; opposite-band is more aggressive, targeting the other HTF range boundary. Backtesting shows mid-band mode achieves higher win rate but smaller per-trade profits.
0.15% stop-loss buffer design is well-calibrated. Stop-loss sits 0.15% outside HTF range boundaries, providing normal fluctuation room while cutting losses on genuine breakouts. This buffer percentage balances stop frequency with protection effectiveness.
Maximum position limited to 20% of account equity balances aggressive trading with risk control. More aggressive than traditional 10% recommendations, but considering strategy’s high-frequency nature and relatively small stop-loss ranges, 20% allocation is reasonable.
Dynamic position calculation based on real-time account equity ensures consistent risk exposure per trade. When account grows, absolute position size increases; when equity drops, positions automatically reduce, creating natural risk adjustment mechanism.
Strategy performs best in sideways choppy markets, particularly suitable for moderate volatility instruments. Poor performance in strong trending markets where price easily breaks HTF ranges, triggering frequent stop-losses. Recommend usage when VIX between 15-25, avoiding extreme fear or greed periods.
Optimal trading hours are European-American overlap (9:00 PM - 12:00 AM Beijing time) when liquidity is abundant and price movements relatively regular. Asian sessions may produce price gaps due to insufficient liquidity, affecting strategy execution.
Historical backtesting doesn’t guarantee future returns; strategy carries consecutive loss risks. Especially when market structure undergoes major changes, parameters optimized on historical data may become ineffective. Regular parameter review and adjustment recommended.
During black swan events, HTF ranges may instantly fail, preventing timely stop-loss execution. Suggest implementing account-level maximum drawdown limits, suspending trading when daily losses exceed 5% of account equity. Strategy unsuitable around major economic events; avoid central bank decisions, NFP releases, and other high-impact announcements.
[/trans]
/*backtest
start: 2025-08-24 00:00:00
end: 2025-08-31 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Maiko Range Scalper (Sideways BB + RSI) – v4 clean",
overlay=true,
initial_capital=5000,
commission_type=strategy.commission.percent, commission_value=0.06)
// ===== Inputs =====
tfHTF = input.timeframe("60", "HTF voor range (15 of 60)")
lenRange = input.int(96, "HTF lookback voor range (bars)", minval=10)
bbLen = input.int(20, "Bollinger lengte", minval=5)
bbMult = input.float(2.0, "Bollinger std dev", step=0.1)
rsiLen = input.int(14, "RSI lengte", minval=5)
rsiLong = input.int(30, "RSI drempel Long ≤", minval=5, maxval=50)
rsiShort = input.int(70, "RSI drempel Short ≥", minval=50, maxval=95)
useVWAP = input.bool(false, "Extra filter: prijs nabij VWAP (±X%)")
vwapBand = input.float(0.25, "VWAP tolerantie %", step=0.05)
tpMode = input.string("Mid band", "Take-Profit doel", options=["Mid band","Tegenoverliggende band/Range"])
slBufferP = input.float(0.15, "SL buffer buiten range (%)", step=0.05, minval=0.05)
maxPosPct = input.float(20, "Max positie t.o.v. account (%)", step=1)
// ===== HTF Range (MTF) =====
htfHigh = request.security(syminfo.tickerid, tfHTF, ta.highest(high, lenRange))
htfLow = request.security(syminfo.tickerid, tfHTF, ta.lowest(low, lenRange))
rangeMid = (htfHigh + htfLow) / 2.0
// ===== LTF Indicatoren =====
basis = ta.sma(close, bbLen)
dev = ta.stdev(close, bbLen) * bbMult
bbU = basis + dev
bbL = basis - dev
rsi = ta.rsi(close, rsiLen)
vwapV = ta.vwap
// ===== Filters =====
inRange = (close <= htfHigh) and (close >= htfLow)
vwapOK = not useVWAP or (math.abs(close - vwapV) / vwapV * 100 <= vwapBand)
// ===== Signalen =====
longCond = inRange and vwapOK and (close <= bbL) and (rsi <= rsiLong)
shortCond = inRange and vwapOK and (close >= bbU) and (rsi >= rsiShort)
// ===== Position sizing =====
equity = strategy.equity
maxQtyValue = equity * (maxPosPct / 100.0)
qty = maxQtyValue / close
// ===== Stops & Targets =====
longSL = htfLow * (1.0 - slBufferP / 100.0)
shortSL = htfHigh * (1.0 + slBufferP / 100.0)
longTP = tpMode == "Mid band" ? basis : math.max(basis, htfHigh)
shortTP = tpMode == "Mid band" ? basis : math.min(basis, htfLow)
// ===== Huidige positie =====
isFlat = strategy.position_size == 0
isLong = strategy.position_size > 0
isShort = strategy.position_size < 0
// ===== Orders =====
if (longCond and (isFlat or isShort))
strategy.entry("Long", strategy.long, qty=qty)
strategy.exit("L-Exit", from_entry="Long", stop=longSL, limit=longTP)
if (shortCond and (isFlat or isLong))
strategy.entry("Short", strategy.short, qty=qty)
strategy.exit("S-Exit", from_entry="Short", stop=shortSL, limit=shortTP)
// ===== Plots =====
plot(htfHigh, "HTF Resistance", color=color.new(color.red, 0), linewidth=2)
plot(htfLow, "HTF Support", color=color.new(color.green, 0), linewidth=2)
plot(basis, "BB Basis", color=color.new(color.blue, 0))
plot(bbU, "BB Upper", color=color.new(color.blue, 0))
plot(bbL, "BB Lower", color=color.new(color.blue, 0))
plot(vwapV, title="VWAP", color=color.new(color.purple, 0), display=useVWAP ? display.all : display.none)
// ===== Signal markeringen =====
plotshape(longCond, title="Long signal", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=color.new(color.green, 0))
plotshape(shortCond, title="Short signal", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=color.new(color.red, 0))
// ===== Alerts =====
alertcondition(longCond, title="Long Setup", message="Long setup: BB bounce + RSI in HTF-range")
alertcondition(shortCond, title="Short Setup", message="Short setup: BB bounce + RSI in HTF-range")