Universal Bollinger utilise des bandes exponentielles personnalisées sur le prix logarithmique (42 périodes, 1.618 déviations) et un filtre de tendance SMA 100. Au-dessus de la SMA, elle achète les breakouts forts confirmés par le RSI(2), et en dessous elle achète une clôture repassée à l'intérieur de la bande inférieure, avec des règles inversées pour les shorts. Les positions clôturent sur un mouvement brusque d'ATR(2) avec le RSI(2) à un extrême, ou s'inversent sur un signal opposé.
Meilleure exécution sur 11. Nikkei 225, 10 min, spread 10, de l'exécution sweeps:2026-09-26-NIKKEI-10m-opt.tsv:2.
| Période | Jusqu'au 2026-09-26 |
| Instrument | Nikkei 225, 10 minutes |
| Spread | 10 points |
| Contrats | 1 |
| Capital de départ | 1,000,000 |
| Coûts | Spread uniquement. Les commissions et le financement overnight ne sont pas inclus. |
| Barres | Jusqu'à 200,000 barres, moins lorsque l'instrument a moins d'historique |
| Dernier test | 2026-09-26 |
| positionSize Contrats par trade | 1 |
| bandPeriod Longueur des bandes exponentielles | 42 |
| bandWidth Distance des bandes en écarts-types | 1.618 |
| seedPeriod SMA utilisée pour initialiser les bandes sur les premières barres | 3 |
| trendPeriod Longueur du filtre de tendance SMA | 100 |
| rsiPeriod Longueur du RSI | 2 |
| atrPeriod Longueur de l'ATR pour la sortie | 2 |
| breakoutRsiLong Un RSI au-dessus de cette valeur confirme une cassure de bande à la hausse | 70 |
| breakoutRsiShort Un RSI sous cette valeur confirme une cassure de bande à la baisse | 40 |
| reentryRsiLevel Côté du RSI requis quand le prix repasse à l'intérieur d'une bande | 50 |
| longExitRsi La sortie des longs nécessite un RSI sous cette valeur | 5 |
| shortExitRsi La sortie des shorts nécessite un RSI au-dessus de cette valeur | 95 |
Chaque exécution
| Marché | Unité de temps | PF | Trades | % de réussite | Net | Max DD |
|---|---|---|---|---|---|---|
| Nikkei 225Meilleure exécution | 10 min | n/a | 3,898 | 37.84 | 27,728 USD | -16,037 |
| EUR/USD | 4 heures | n/a | 681 | 41.85 | 80,338 USD | -62,580 |
| Dow Jones | Journalier | n/a | 198 | 41.92 | 18,228 EUR | -8,765 |
| Argent | Journalier | n/a | 247 | 34.01 | 16,417 USD | -12,212 |
| Nasdaq 100 | Journalier | n/a | 166 | 38.55 | 15,964 EUR | -4,641 |
| Dow Jones | 1 heure | n/a | 715 | 40.00 | 12,870 EUR | -9,986 |
| Nasdaq 100 | 1 heure | n/a | 2,050 | 36.68 | 12,343 EUR | -7,675 |
| Dow Jones | 4 heures | n/a | 187 | 41.71 | 11,226 EUR | -6,553 |
| Or | Journalier | n/a | 254 | 34.65 | 2,528 EUR | -1,282 |
| S&P 500 | 30 min | n/a | 3,757 | 39.13 | 2,285 EUR | -1,459 |
| Or | 4 heures | n/a | 524 | 40.84 | 1,609 EUR | -1,174 |
Graphiques
Les 10 meilleures exécutions sur 11. La liste complète figure dans le tableau ci-dessus.
Le code
// ============================================================ // Universal Bollinger // ProRealAlgos Strategy Library | prorealalgos.com // Type: Volatility // Direction: Long & short // Timeframe tested: 10 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade bandPeriod = 42 // length of the exponential bands bandWidth = 1.618 // band distance in standard deviations seedPeriod = 3 // SMA used to seed the bands on the first bars trendPeriod = 100 // SMA trend filter length rsiPeriod = 2 // RSI length atrPeriod = 2 // ATR length for the exit breakoutRsiLong = 70 // RSI above this confirms an upside band break breakoutRsiShort = 40 // RSI below this confirms a downside band break reentryRsiLevel = 50 // RSI side needed when price falls back inside a band longExitRsi = 5 // long exit needs RSI below this shortExitRsi = 95 // short exit needs RSI above this // --- Indicators --- // Bands built on log price with exponentially weighted mean and variance. logPrice = LOG(CustomClose) smoothing = 2 / (bandPeriod + 1) IF BarIndex < bandPeriod THEN logMean = Average[seedPeriod](logPrice) ELSE logMean = smoothing * logPrice + (1 - smoothing) * logMean ENDIF logError = logPrice - logMean squaredError = SQUARE(logError) IF BarIndex < bandPeriod + 1 THEN logVariance = squaredError ELSE logVariance = smoothing * squaredError + (1 - smoothing) * logVariance ENDIF logStdDev = SQRT(logVariance) upperBand = EXP(logMean + (bandWidth * logStdDev)) lowerBand = EXP(logMean - (bandWidth * logStdDev)) trendMA = Average[trendPeriod](close) rsiValue = RSI[rsiPeriod](close) atrValue = AverageTrueRange[atrPeriod](close)
25 lignes de plus : les règles d'entrée et de sortie.
Configuration
Questions
Oui. Les bandes sont calculées dans le code, donc aucun indicateur personnalisé n'est nécessaire. Il n'y a pas de stop, donc ajoutez votre propre protection.
Nikkei 225 10 minutes a rapporté 27,727.80 USD sur 3898 trades. EUR/USD, Dow Jones, Silver, Nasdaq 100, Gold et S&P 500 étaient également positifs dans les exécutions présentées.
À 1 contrat avec un spread de 10 points, Nikkei 225 10 minutes a eu un max drawdown de 16,037 USD.
Le RSI(2) et l'ATR(2) réagissent en quelques barres, donc les graphiques courts donnent beaucoup de signaux. Elle a aussi été testée de 30 minutes jusqu'au Journalier.
Voir aussi
La communauté ProRealAlgos obtient les règles complètes, le code complet et le portefeuille automatisé.