Lorsque toute la bande exponentielle inférieure est au-dessus de la SMA 200, la tendance est haussière, et la stratégie achète la première clôture au niveau ou en dessous de la SMA 20. Elle ne prend qu'un seul long par tendance haussière, et les shorts suivent la logique inverse. Un filtre de courbe d'equity met les entrées en pause lorsque la stratégie est en dessous de sa propre moyenne à 250 barres.
Meilleure exécution sur 6. Gold, 10 min, spread 0.6, de l'exécution sweeps:2026-09-23-GOLD-10m-opt.tsv:4.
| Période | Jusqu'au 2026-09-23 |
| Instrument | Or, 10 minutes |
| Spread | 0.6 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-23 |
| positionSize Contrats par trade | 1 |
| startCapital Equity de départ utilisée par le filtre de courbe d'equity | 10000 |
| equityCurvePeriod Longueur de la SMA de la courbe d'equity | 250 |
| fastPeriod Longueur de la SMA d'entrée et de sortie finale | 20 |
| midPeriod Longueur de la SMA qui arme la sortie | 50 |
| trendPeriod Longueur de la SMA de tendance | 200 |
| bandPeriod Longueur des bandes exponentielles de log-prix | 42 |
| bandWidth Largeur des bandes en écarts-types | 2.4 |
| seedPeriod Longueur de la SMA qui initialise les bandes sur les premières barres | 3 |
| stopLossMoney Stop de protection dans la devise du compte | 40 |
| takeProfitMoney Objectif de gain dans la devise du compte | 130 |
Chaque exécution
| Marché | Unité de temps | PF | Trades | % de réussite | Net | Max DD |
|---|---|---|---|---|---|---|
| OrMeilleure exécution | 10 min | n/a | 696 | 46.55 | 432 EUR | -387 |
| EUR/USD | Journalier | n/a | 52 | 42.31 | 1,660 USD | -240 |
| FTSE 100 | 4 heures | n/a | 96 | 41.67 | 762 EUR | -362 |
| S&P 500 | Journalier | n/a | 54 | 46.30 | 593 EUR | -223 |
| Nasdaq 100 | 4 heures | n/a | 118 | 43.22 | 462 EUR | -424 |
| FTSE 100 | Journalier | n/a | 37 | 32.43 | 434 EUR | -344 |
Graphiques
Le code
// ============================================================ // Bollinger Trend Catcher // ProRealAlgos Strategy Library | prorealalgos.com // Type: Trend // Direction: Long & short // Timeframe tested: 10 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade startCapital = 10000 // starting equity for the equity curve filter equityCurvePeriod = 250 // SMA length of the equity curve fastPeriod = 20 // entry and final exit average midPeriod = 50 // average that arms the exit trendPeriod = 200 // trend average the bands are compared with bandPeriod = 42 // length of the log-price exponential bands bandWidth = 2.4 // band width in standard deviations seedPeriod = 3 // SMA used to seed the bands on early bars stopLossMoney = 40 // protective stop in account currency takeProfitMoney = 130 // profit target in account currency // State: one trade per trend, and a staged exit. ONCE longTrendUsed = 0 ONCE shortTrendUsed = 0 ONCE longExitStage = 0 ONCE shortExitStage = 0 ONCE logEma = 0 ONCE logVariance = 0 // --- Indicators --- // Only trade while equity is at or above its own moving average. equity = startCapital + StrategyProfit equityCurve = Average[equityCurvePeriod, 0](equity) equityOk = BarIndex < equityCurvePeriod OR (BarIndex > equityCurvePeriod AND equity >= equityCurve) fastMA = Average[fastPeriod](close) midMA = Average[midPeriod](close) trendMA = Average[trendPeriod](close) // Exponential bands on log price. logPrice = LOG(CustomClose) emaAlpha = 2 / (bandPeriod + 1) IF BarIndex < bandPeriod THEN logEma = Average[seedPeriod](logPrice) ELSE logEma = emaAlpha * logPrice + (1 - emaAlpha) * logEma ENDIF logError = logPrice - logEma errorSquared = SQUARE(logError) IF BarIndex < bandPeriod + 1 THEN logVariance = errorSquared ELSE logVariance = emaAlpha * errorSquared + (1 - emaAlpha) * logVariance ENDIF logStdDev = SQRT(logVariance) upperBand = EXP(logEma + (bandWidth * logStdDev)) lowerBand = EXP(logEma - (bandWidth * logStdDev))
44 lignes supplémentaires : les règles d'entrée et de sortie.
Configuration
Questions
Oui, elle est écrite comme un système ProOrder. Le code a été réécrit et pas encore vérifié à la compilation, donc lancez un backtest avant de passer en réel.
Gold, EUR/USD, FTSE 100, S&P 500 et Nasdaq 100. Chaque exécution listée a réalisé un petit profit, le plus élevé étant USD 1,660 sur EUR/USD Journalier avec 52 trades.
À 1 contrat, la meilleure exécution a eu un max drawdown de EUR 387.3. Chaque trade risque le stop de 40 en argent, avant spread.
La règle d'un seul trade par tendance signifie qu'un nouveau long n'arrive qu'après que la bande est passée sous la SMA 200 puis s'est redressée. Sur des barres journalières, cela se produit rarement, par exemple 37 trades sur FTSE 100 Journalier.
Voir aussi
La communauté ProRealAlgos obtient les règles complètes, le code complet et le portefeuille automatisé.