Le système achète quand le true range de la barre est supérieur à 25 points et que TEMA(4) se situe au-dessus d'EMA(4), mais uniquement dans les demi-mois autorisés par la table saisonnière. Il sort quand Repulse(3) descend sous -0.3 ou qu'un stop de 5% est touché. Les week-ends sont ignorés et il ne passe jamais short.
Meilleure exécution sur 20. Gold, 10 min, spread 0.6, issue de l'exécution pf:2026-09-24-GOLD-10m.tsv:1.
| Période | Jusqu'au 2026-09-24 |
| 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-24 |
| positionSize Contrats par trade | 1 |
| halfMonthDay Dernier jour compté comme la première moitié du mois | 15 |
| minTrueRange True range minimum de la barre en points de prix | 25 |
| temaPeriod Longueur de la TEMA | 4 |
| emaPeriod Longueur de l'EMA comparée à celle de la TEMA | 4 |
| repulsePeriod Longueur de Repulse pour la sortie | 3 |
| repulseExitLevel Sortir quand Repulse descend en dessous de cette valeur | -0.3 |
| stopLossPct Stop de protection en pourcentage du prix d'entrée | 5 |
| janFirstHalf Poids saisonnier, janvier jours 1 à 15 (0 bloque les entrées) | 3 |
| janSecondHalf Poids saisonnier, janvier à partir du jour 16 (0 bloque les entrées) | 0 |
| febFirstHalf Poids saisonnier, février jours 1 à 15 (0 bloque les entrées) | 3 |
| febSecondHalf Poids saisonnier, février à partir du jour 16 (0 bloque les entrées) | 3 |
| marFirstHalf Poids saisonnier, mars jours 1 à 15 (0 bloque les entrées) | 3 |
| marSecondHalf Poids saisonnier, mars à partir du jour 16 (0 bloque les entrées) | 2 |
| aprFirstHalf Poids saisonnier, avril jours 1 à 15 (0 bloque les entrées) | 3 |
| aprSecondHalf Poids saisonnier, avril à partir du jour 16 (0 bloque les entrées) | 3 |
| mayFirstHalf Poids saisonnier, mai jours 1 à 15 (0 bloque les entrées) | 1 |
| maySecondHalf Poids saisonnier, mai à partir du jour 16 (0 bloque les entrées) | 1 |
| junFirstHalf Poids saisonnier, juin jours 1 à 15 (0 bloque les entrées) | 1 |
| junSecondHalf Poids saisonnier, juin à partir du jour 16 (0 bloque les entrées) | 2 |
| julFirstHalf Poids saisonnier, juillet jours 1 à 15 (0 bloque les entrées) | 3 |
| julSecondHalf Poids saisonnier, juillet à partir du jour 16 (0 bloque les entrées) | 2 |
| augFirstHalf Poids saisonnier, août jours 1 à 15 (0 bloque les entrées) | 2 |
| augSecondHalf Poids saisonnier, août à partir du jour 16 (0 bloque les entrées) | 3 |
| sepFirstHalf Poids saisonnier, septembre jours 1 à 15 (0 bloque les entrées) | 3 |
| sepSecondHalf Poids saisonnier, septembre à partir du jour 16 (0 bloque les entrées) | 0 |
| octFirstHalf Poids saisonnier, octobre jours 1 à 15 (0 bloque les entrées) | 3 |
| octSecondHalf Poids saisonnier, octobre à partir du jour 16 (0 bloque les entrées) | 2 |
| novFirstHalf Poids saisonnier, novembre jours 1 à 15 (0 bloque les entrées) | 1 |
| novSecondHalf Poids saisonnier, novembre à partir du jour 16 (0 bloque les entrées) | 3 |
| decFirstHalf Poids saisonnier, décembre jours 1 à 15 (0 bloque les entrées) | 3 |
| decSecondHalf Poids saisonnier, décembre à partir du jour 16 (0 bloque les entrées) | 2 |
Chaque exécution
| Marché | Unité de temps | PF | Trades | % de réussite | Net | Max DD |
|---|---|---|---|---|---|---|
| OrMeilleure exécution | 10 min | 1.57 | 195 | 48.72 | 905 EUR | -177 |
| DAX 40 | 4 heures | 1.18 | 2,445 | 38.73 | 17,921 EUR | -3,328 |
| DAX 40 | Journalier | 1.18 | 1,043 | 39.02 | 11,563 EUR | -2,819 |
| Argent | Journalier | n/a | 752 | 36.84 | 26,593 USD | -9,081 |
| Dow Jones | Journalier | n/a | 1,194 | 38.11 | 16,900 EUR | -8,908 |
| Dow Jones | 15 min | n/a | 3,884 | 37.33 | 13,052 EUR | -9,190 |
| Dow Jones | 4 heures | n/a | 810 | 40.49 | 10,700 EUR | -7,832 |
| Dow Jones | 30 min | n/a | 2,920 | 36.95 | 10,020 EUR | -8,556 |
| Dow Jones | 10 min | n/a | 3,031 | 37.55 | 9,588 EUR | -7,551 |
| Nasdaq 100 | 4 heures | n/a | 1,818 | 38.17 | 9,565 EUR | -3,611 |
| Dow Jones | 1 heure | n/a | 2,039 | 36.64 | 9,229 EUR | -8,470 |
| Nasdaq 100 | Journalier | n/a | 824 | 40.29 | 7,322 EUR | -5,082 |
| Pétrole Brent | Journalier | n/a | 595 | 40.34 | 6,984 EUR | -4,208 |
| Pétrole brut américain | 4 heures | n/a | 2,297 | 37.44 | 6,353 EUR | -5,078 |
| S&P 500 | Journalier | n/a | 467 | 41.33 | 1,648 EUR | -966 |
| Or | 30 min | n/a | 322 | 43.17 | 765 EUR | -441 |
| Or | 5 min | n/a | 141 | 45.39 | 683 EUR | -245 |
| FTSE 100 | 3 min | n/a | 186 | 41.94 | 600 EUR | -551 |
| Or | 15 min | n/a | 229 | 43.67 | 582 EUR | -297 |
| Or | 1 min | n/a | 18 | 50.00 | 140 EUR | -119 |
Graphiques
Les 10 meilleures exécutions sur 20. 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
// ============================================================ // Seasonal Momentum Long // ProRealAlgos Strategy Library | prorealalgos.com // Type: Momentum // Direction: Long only // Timeframe tested: 10 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade halfMonthDay = 15 // last day of the first half of the month minTrueRange = 25 // bar true range must exceed this, in price points temaPeriod = 4 // TEMA length emaPeriod = 4 // EMA length compared with the TEMA repulsePeriod = 3 // Repulse length for the exit repulseExitLevel = -0.3 // exit when Repulse falls below this stopLossPct = 5 // protective stop, percent of entry price // Seasonal weight per half month. Zero blocks new entries in that half. janFirstHalf = 3 janSecondHalf = 0 febFirstHalf = 3 febSecondHalf = 3 marFirstHalf = 3 marSecondHalf = 2 aprFirstHalf = 3 aprSecondHalf = 3 mayFirstHalf = 1 maySecondHalf = 1 junFirstHalf = 1 junSecondHalf = 2 julFirstHalf = 3 julSecondHalf = 2 augFirstHalf = 2 augSecondHalf = 3 sepFirstHalf = 3 sepSecondHalf = 0 octFirstHalf = 3 octSecondHalf = 2 novFirstHalf = 1 novSecondHalf = 3 decFirstHalf = 3 decSecondHalf = 2 ONCE seasonWeight = 0 // --- Indicators --- // CurrentMonth is the calendar month the system runs in, Day is the bar's day. IF CurrentMonth = 1 THEN IF Day <= halfMonthDay THEN seasonWeight = janFirstHalf ELSE seasonWeight = janSecondHalf ENDIF ELSIF CurrentMonth = 2 THEN IF Day <= halfMonthDay THEN seasonWeight = febFirstHalf ELSE seasonWeight = febSecondHalf ENDIF ELSIF CurrentMonth = 3 THEN IF Day <= halfMonthDay THEN seasonWeight = marFirstHalf ELSE seasonWeight = marSecondHalf ENDIF ELSIF CurrentMonth = 4 THEN IF Day <= halfMonthDay THEN seasonWeight = aprFirstHalf ELSE seasonWeight = aprSecondHalf ENDIF ELSIF CurrentMonth = 5 THEN IF Day <= halfMonthDay THEN seasonWeight = mayFirstHalf ELSE seasonWeight = maySecondHalf ENDIF ELSIF CurrentMonth = 6 THEN IF Day <= halfMonthDay THEN seasonWeight = junFirstHalf ELSE seasonWeight = junSecondHalf ENDIF ELSIF CurrentMonth = 7 THEN IF Day <= halfMonthDay THEN seasonWeight = julFirstHalf ELSE seasonWeight = julSecondHalf ENDIF ELSIF CurrentMonth = 8 THEN IF Day <= halfMonthDay THEN seasonWeight = augFirstHalf ELSE seasonWeight = augSecondHalf ENDIF ELSIF CurrentMonth = 9 THEN IF Day <= halfMonthDay THEN seasonWeight = sepFirstHalf ELSE seasonWeight = sepSecondHalf ENDIF ELSIF CurrentMonth = 10 THEN IF Day <= halfMonthDay THEN seasonWeight = octFirstHalf ELSE seasonWeight = octSecondHalf ENDIF ELSIF CurrentMonth = 11 THEN IF Day <= halfMonthDay THEN seasonWeight = novFirstHalf ELSE seasonWeight = novSecondHalf ENDIF ELSIF CurrentMonth = 12 THEN IF Day <= halfMonthDay THEN seasonWeight = decFirstHalf ELSE seasonWeight = decSecondHalf ENDIF ENDIF weekday = DayOfWeek = 1 OR DayOfWeek = 2 OR DayOfWeek = 3 OR DayOfWeek = 4 OR DayOfWeek = 5 wideBar = TR(close) > minTrueRange temaAboveEma = TEMA[temaPeriod](close) > ExponentialAverage[emaPeriod](close) repulseValue = Repulse[repulsePeriod](close)
18 lignes de plus : les règles d'entrée et de sortie.
Configuration
Avec 734,000 barres disponibles sur Gold 10 minutes, le gain net est passé de EUR 904.9 dans l'exécution standard à EUR 1,495.5, et les données plus anciennes ont à elles seules ajouté EUR 590.6.
| Barres disponibles | 734,000 |
| Net, exécution standard de 200,000 barres | 904.90 EUR |
| Net, exécution longue | 1,495.50 EUR |
| Net sur les seules données plus anciennes | 590.60 EUR |
Questions
Oui, c'est un système ProOrder long uniquement avec un stop en pourcentage. Le code a été réécrit mais pas vérifié à la compilation, et les statistiques proviennent de la version précédente.
Neuf instruments de 1 minute à Journalier. Gold 10 minutes a eu le meilleur profit factor (1.57), et DAX 40 en 4 heures a rapporté le plus en euros, EUR 17,920.50 sur 2,445 trades avec un profit factor de 1.18.
Avec 1 contrat, Gold 10 minutes a eu un max drawdown de EUR 176.50. DAX 40 4 heures a atteint EUR 3,327.60, la taille dépend donc fortement du marché que vous choisissez.
Certains demi-mois, comme la seconde moitié de janvier et de septembre, ont un poids nul et bloquent les nouveaux longs. L'idée est d'éviter les parties de l'année qui, historiquement, ont été moins bonnes pour les entrées long.
Voir aussi
La communauté ProRealAlgos obtient les règles complètes, le code complet et le portefeuille automatisé.