
Il ne s’agit pas d’une stratégie de choc ordinaire. La stratégie de décapage de la zone de danse des putes détermine la zone de négociation à l’aide d’un cadre de temps élevé de 60 minutes, en cherchant un point d’entrée précis de la zone de Brin + RSI sur le cadre de temps bas. L’identification de la zone de 96 cycles s’accompagne de la bande de Brin de 20 cycles, formant un ensemble complet de systèmes de négociation de zone.
La logique centrale de la stratégie est claire: le prix doit être dans la plage définie par le HTF et entrer en jeu avec le signal de survente RSI lorsqu’il atteint la limite de la bande de Brent. Un signal à plusieurs têtes exige que le prix soit en dessous de Brent et que le RSI soit en dessous de 30, un signal à vide exige que le prix soit en dessous de Brent et que le RSI soit en dessous de 70. Ce mécanisme de double confirmation filtre efficacement un grand nombre de faux signaux.
Le décalage de 2,0 fois la BRI n’est pas un paramètre aléatoire. Les statistiques nous disent que 95% des fluctuations de prix se situent dans la plage de 2 fois la BRI, ce qui signifie qu’il n’y a qu’une probabilité de 5% de toucher la frontière.
La longueur de la bande de Brin de 20 cycles trouve un équilibre entre la capture des fluctuations à court terme et l’évitement d’une sursensibilité. Elle est plus stable que la période de 14 et plus sensible que la période de 26.
La tolérance de VWAP de 0.25% est conçue de manière astucieuse. La stratégie suspend la négociation lorsque le prix s’écarte de la VWAP de plus de 0.25%. Cette condition de filtrage apparemment mineure permet d’éviter des périodes anormales de prix extrêmement éloignés de la moyenne dans les transactions réelles.
Le VWAP représente la moyenne pondérée des prix de transaction du jour et constitue une référence importante pour les traders institutionnels. Lorsque les prix oscillent à proximité du VWAP, le marché est généralement en équilibre, ce qui est plus approprié pour les stratégies de négociation intermédiaires.
La stratégie offre deux modes d’arrêt: l’arrêt sur l’axe central et l’arrêt sur les bords. L’arrêt sur l’axe central est plus conservateur et vise la ligne médiane de la ceinture de Boulin; l’arrêt sur les bords est plus radical et vise l’autre frontière de la zone HTF.
Le stop-loss de 0,15% est conçu pour être raisonnable. Le stop-loss est situé à 0,15% en dehors de la limite de la zone HTF, ce qui laisse une marge de fluctuation normale pour le prix et permet de stopper le stop-loss en temps opportun lors d’une véritable rupture. Ce ratio de couverture a été optimisé pour équilibrer la fréquence de stop-loss et l’effet de protection.
La position maximale est limitée à 20% du capital du compte, ce qui est un point d’équilibre entre le trading dynamique et le contrôle des risques. Plus dynamique que les 10% traditionnellement recommandés, une configuration de position de 20% est raisonnable compte tenu de la nature à haute fréquence de la stratégie et de la marge d’arrêt relativement faible.
Les positions dynamiques sont calculées sur la base de la valeur nette du compte en temps réel, ce qui garantit que la marge de risque de chaque transaction est relativement stable. Lorsque la valeur nette du compte augmente, la position absolue augmente; lorsque la valeur nette diminue, la position diminue automatiquement, formant un mécanisme de régulation du risque naturel.
La stratégie fonctionne le mieux dans les marchés à oscillation horizontale, particulièrement adaptée aux variétés à volatilité modérée. Elle ne fonctionne pas bien dans les marchés à forte tendance, car les prix sont faciles à franchir la zone HTF, déclenchant des arrêts fréquents.
Les meilleurs moments de négociation sont les heures de chevauchement entre l’Europe et les États-Unis (de 21h00 à 24h00 heure de Pékin), où la liquidité est abondante et les fluctuations de prix relativement régulières. Les heures d’Asie peuvent entraîner des sauts de prix en raison de l’insuffisance de la liquidité, ce qui affecte l’efficacité de l’exécution de la stratégie.
La rétrospective historique ne représente pas les gains futurs et la stratégie présente un risque de pertes continues. Les paramètres optimisés sur la base des données historiques peuvent être inefficaces, en particulier lorsque la structure du marché change de manière significative. Il est recommandé de revoir et d’ajuster régulièrement les paramètres.
En cas d’événement de Black Swan, l’intervalle HTF peut être momentanément désactivé, ce qui empêche l’exécution rapide du stop loss. Il est recommandé de définir une limite de retrait maximale au niveau du compte et de suspendre les transactions si les pertes du jour dépassent 5% de la valeur nette du compte. La stratégie n’est pas adaptée pour une utilisation avant et après les événements financiers majeurs, évitant les événements à fort impact tels que les décisions de la banque centrale, les données non agricoles.
||
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")