Rejoindre la liste d'attente
Stratégies / Mean reversion / Smoothed Bollinger

Smoothed Bollinger : un système de mean reversion filtré

Un %b de Bollinger lissé, construit à partir d'une clôture Heikin-Ashi zero-lag et d'une TEMA, repère les creux sous 30 au-dessus de la SMA à 220 jours et les pics au-dessus de 90 en dessous de celle-ci. Les trades utilisent un stop de 5%, un objectif de 10%, un trailing stop ATR et une sortie en temps pour les trades perdants.

Mean reversionLong & shortSwingNasdaq 100Journalier
1.66Profit factor
13,584Gain net EUR
71.95%Taux de réussite
492Trades
-3,078Max drawdown
27.61Trade moyen

Meilleure exécution sur 21. Nasdaq 100, Journalier, spread 3, issue de l'exécution pf:2026-09-15-NAS100-D.tsv:1.

Règles d'entrée, long

  1. La clôture est au-dessus de la moyenne mobile simple à 220 jours
  2. Aucune position ouverte

Règles d'entrée, short

  1. La clôture est en dessous de la moyenne mobile simple à 220 jours
  2. Aucune position ouverte

Règles de sortie

  1. Stop loss à 5% de l'entrée
  2. Objectif de gain à 10% de l'entrée
  3. Clôturer un long perdant après 16 barres
  4. Clôturer un short perdant après 2 barres

Conditions de test

PériodeJusqu'au 2026-09-15
InstrumentNasdaq 100, Journalier
Spread3 points
Contrats1
Capital de départ1,000,000
CoûtsSpread uniquement. Les commissions et le financement overnight ne sont pas inclus.
BarresJusqu'à 200,000 barres, moins lorsque l'instrument a moins d'historique
Dernier test2026-09-16
Paramètres (16)
positionSize
Contrats par trade
1
trendFilterOn
1 = ne trader qu'avec la moyenne de long terme, 0 = désactivé
1
trailingOn
1 = utiliser le trailing stop mis à l'échelle de l'ATR, 0 = désactivé
1
stopLossPct
Stop de protection, pourcentage du prix d'entrée
5
takeProfitPct
Objectif de gain, pourcentage du prix d'entrée
10
longTrailFactor
Distance de suivi pour les longs, en unités d'ATR mises à l'échelle
9
shortTrailFactor
Distance de suivi pour les shorts, en unités d'ATR mises à l'échelle
4
atrTrailPeriod
Longueur de l'ATR pour la distance de suivi
200
minTrailPoints
Distance de suivi minimale
5
maxLosingBarsLong
Clôturer un long perdant après ce nombre de barres
16
maxLosingBarsShort
Clôturer un short perdant après ce nombre de barres
2
trendPeriod
Longueur de la SMA du filtre de tendance
220
bandPeriod
Écart-type et longueur de moyenne du %b
17
temaPeriod
Longueur de lissage de la TEMA
8
oversoldLevel
Acheter quand le %b est en dessous de cette valeur
30
overboughtLevel
Vendre short quand le %b est au-dessus de cette valeur
90

Chaque exécution

Marchés et unités de temps testés

MarchéUnité de tempsPFTrades% de réussiteNetMax DD
Nasdaq 100Meilleure exécutionJournalier1.66 49271.9513,584 EUR-3,078
S&P 500Journalier1.48 51563.302,671 EUR-983
Dow JonesJournalier1.41 50671.1518,609 EUR-7,365
DAX 40Journalier1.37 55566.319,989 EUR-3,831
EUR/USD2 min1.35 5,69022.04147,182 USD-95,915
FTSE 100Journalier1.35 39172.634,926 EUR-1,460
EUR/USD3 min1.29 6,19027.21101,696 USD-69,006
Or4 heures1.25 85647.781,808 EUR-917
EUR/USDJournalier1.24 55074.1845,379 USD-19,978
Nikkei 225Journalier1.24 39771.0320,214 USD-8,103
Nasdaq 1004 heures1.24 90555.148,644 EUR-2,716
S&P 5004 heures1.22 86350.292,118 EUR-682
Dow Jones30 min1.16 1,64127.2417,372 EUR-8,859
Dow Jones4 heures1.15 29848.667,615 EUR-6,958
DAX 404 heures1.15 85453.407,412 EUR-2,818
Or5 min1.14 3,14113.531,588 EUR-745
Dow Jones1 heure1.08 94132.207,342 EUR-5,710
GBP/USD4 heures1.07 2,05464.952,456 USD-2,275
EUR/USD5 min1.00 6,36629.04-1,346 USD-40,289
Argent30 min0.82 5,31032.20-46,708 USD-51,178
CAC 40Journaliern/a 37568.271,990 EUR-1,678

Graphiques

Résultats par exécution

Les 10 meilleures exécutions sur 21. La liste complète figure dans le tableau ci-dessus.

Au-dessus de 1.0, a gagné de l'argent ; en dessous de 1.0, a perdu de l'argent.

Le code

ProBuilder, réécrit selon le standard maison

// ============================================================
// Smoothed Bollinger
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long & short
// Timeframe tested: Daily
// ============================================================

// --- Settings ---
DEFPARAM CumulateOrders = true
DEFPARAM PreloadBars = 10000

// --- Parameters ---
positionSize = 1            // contracts per trade
trendFilterOn = 1           // 1 = only trade with the long-term average, 0 = off
trailingOn = 1              // 1 = use the ATR-scaled trailing stop, 0 = off
stopLossPct = 5             // protective stop, percent of entry price
takeProfitPct = 10          // profit target, percent of entry price
longTrailFactor = 9         // trailing distance for longs, in scaled ATR units
shortTrailFactor = 4        // trailing distance for shorts, in scaled ATR units
atrTrailPeriod = 200        // ATR length for the trailing distance
minTrailPoints = 5          // minimum trailing distance
maxLosingBarsLong = 16      // close a losing long after this many bars
maxLosingBarsShort = 2      // close a losing short after this many bars
trendPeriod = 220           // trend filter SMA length
bandPeriod = 17             // %b standard deviation and average length
temaPeriod = 8              // TEMA smoothing length
oversoldLevel = 30          // buy when %b is below this
overboughtLevel = 90        // sell short when %b is above this

// --- Indicators ---
// ATR of a scaled price series, kept exactly as the tested code computes it.
atrTrail = AverageTrueRange[atrTrailPeriod]((close/10)*PipSize)/1000
longTrailDistance = round(atrTrail*longTrailFactor)
shortTrailDistance = round(atrTrail*shortTrailFactor)

trendMA = Average[trendPeriod](close)
trendUp = (close > trendMA OR NOT trendFilterOn)
trendDown = (close < trendMA OR NOT trendFilterOn)

// Heikin-Ashi style close, fed through a zero-lag TEMA.
// The second term of haOpen has no /4, exactly as in the tested code.
haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + (Open[2]+High[2]+Low[2]+Close[2]))/2
haClose = ((Open+High+Low+Close)/4 + haOpen + max(high, haOpen) + min(low, haOpen))/4
temaFirst = TEMA[temaPeriod](haClose)
temaSecond = TEMA[temaPeriod](temaFirst)
temaGap = temaFirst - temaSecond
zeroLagHA = temaFirst + temaGap
smoothedZeroLag = TEMA[temaPeriod](zeroLagHA)

// Bollinger %b of the smoothed series.
percentB = (smoothedZeroLag + 2*STD[bandPeriod](smoothedZeroLag) - WeightedAverage[bandPeriod](smoothedZeroLag)) / (4*STD[bandPeriod](smoothedZeroLag))*100

61 lignes de plus : les règles d'entrée et de sortie.

Configuration

Comment la charger

  1. Copiez le code avec le bouton Copier du bloc de code.
  2. Dans ProRealTime, ouvrez un graphique de l'instrument et de l'unité de temps que vous voulez tester, puis ouvrez ProOrder > Nouveau système de trading et choisissez "Créer par programmation".
  3. Collez le code, donnez un nom au système et enregistrez-le.
  4. Cliquez sur "Backtest", définissez votre propre spread et votre position size, puis lancez-la avant d'envisager de la trader en réel.

Indicateurs utilisés

Heikin AshiTEMABandes de BollingerSMAATR
À lire d'abordFaiblesses connues4 points
  • Silver 30 minutes a terminé à USD -46,708.00 avec un drawdown de USD 51,177.50, et EUR/USD 5 minutes était entre plat et négatif.
  • Les exécutions intraday sur EUR/USD affichent de grands chiffres mais aussi de grands drawdowns, comme USD 95,915.00 sur le graphique 2 minutes.
  • Le code conserve deux particularités issues des tests : l'ouverture Heikin-Ashi omet une division par 4, et la distance de suivi minimale est mesurée de deux manières différentes.
  • Avec 16 réglages, il y a un risque réel que les valeurs choisies collent plus aux données passées qu'aux données futures.

Questions

À propos de cette stratégie

Peut-elle fonctionner dans ProOrder ?

Oui, avec 1 contrat et une position à la fois. Le code réécrit n'a pas été vérifié à la compilation.

Quels marchés ont été testés ?

Indices, or, argent et paires de devises, de 2 minutes au journalier, et toutes les exécutions sauf deux ont été rentables. Dow Jones Journalier a rapporté EUR 18,609.30 avec un profit factor de 1.41.

Combien de drawdown à 1 contrat ?

Sur Nasdaq 100 Journalier, le drawdown maximum a été de EUR 3,077.50 pour EUR 13,584.40 de gain net.

Pourquoi des graphiques journaliers ?

Le filtre de tendance à 220 jours et les stops en pourcentage conviennent le mieux aux barres journalières. Les exécutions journalières sur indices ont eu des profit factors plus élevés que la plupart des exécutions intraday.

Voir aussi

Des stratégies comme celle-ci

Bollinger Squeeze

Utilise le même indicateur.

14.30 PF · 86 trades

Negated Hammer

Meilleure exécution sur le même marché, Nasdaq 100.

3.20 PF · 372 trades

False Breakout SuperTrend

Un profit factor similaire.

1.65 PF · 154 trades

Vous voulez la prochaine série de tests de mean reversion filtrée ? Rejoignez la liste d'attente ProRealAlgos.

Le copy trading sur les indices américains est disponible pour les membres ProRealAlgos à mesure que des places se libèrent.

Les résultats passés de backtest ne garantissent pas les résultats futurs. Ceci n'est pas un conseil financier. Sélectionné et maintenu par ProRealAlgos. ProRealTime™ est une marque de ProRealTime SAS. prorealalgos.comStatsDocumentation