Impulse Momentum combine un momentum sur 13 bars avec un score d'impulsion sur 3 bars et achète quand ce signal dépasse 0.7 et sa propre moyenne sur 8 bars. Le volume doit être 1.2 fois la normale, la bar doit faire 1.8 fois l'amplitude moyenne récente, et la SMA 9 doit se situer au-dessus de la SMA 21. Elle sort sur un stop de 1%, quand le signal faiblit, ou quand le prix clôture sous la SMA 9.
Meilleure exécution sur 10. Nasdaq 100, 1 heure, spread 3, issue de l'exécution pf:2026-09-24-NAS100-1h.tsv:2.
| Période | Jusqu'au 2026-09-25 |
| Instrument | Nasdaq 100, 1 heure |
| Spread | 3 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-25 |
| positionSize Contrats par trade | 1 |
| momentumPeriod Longueur du momentum de prix et fenêtre de normalisation | 13 |
| volumePeriod Longueur du volume moyen | 21 |
| fastPeriod Longueur de la SMA rapide | 9 |
| slowPeriod Longueur de la SMA lente | 21 |
| impulseBars Bars dans la fenêtre d'impulsion courte | 3 |
| powerPeriod Longueur de l'amplitude moyenne des bars pour la puissance d'impulsion | 5 |
| momentumWeight Poids du momentum normalisé dans le signal | 2 |
| impulseWeight Poids de l'impulsion normalisée dans le signal | 3 |
| signalPeriod Longueur de la SMA de la ligne de signal | 8 |
| signalLevel Le signal doit être au-dessus de cette valeur pour acheter | 0.7 |
| minVolumeRatio Le volume doit être ce multiple de sa moyenne sur 21 bars | 1.2 |
| minImpulsePower L'amplitude de la bar doit être ce multiple de sa moyenne sur 5 bars | 1.8 |
| stopLossPct Stop de protection, pourcentage du prix d'entrée | 1 |
Chaque exécution
| Marché | Unité de temps | PF | Trades | % de réussite | Net | Max DD |
|---|---|---|---|---|---|---|
| Nasdaq 100Meilleure exécution | 1 heure | 1.44 | 481 | 48.65 | 4,958 EUR | -1,182 |
| USD/JPY | 1 heure | n/a | 839 | 42.55 | 144,730 JPY | -56,450 |
| USD/JPY | 10 min | n/a | 975 | 40.21 | 46,450 JPY | -40,770 |
| Argent | 3 min | n/a | 773 | 36.74 | 3,975 USD | -2,757 |
| Nikkei 225 | Journalier | n/a | 22 | 45.45 | 3,294 USD | -1,928 |
| Argent | 2 min | n/a | 812 | 33.25 | 2,654 USD | -2,639 |
| Nasdaq 100 | 4 heures | n/a | 282 | 53.19 | 2,145 EUR | -1,341 |
| DAX 40 | 4 heures | n/a | 215 | 49.30 | 1,078 EUR | -821 |
| Or | 4 heures | n/a | 345 | 41.74 | 321 EUR | -185 |
| Or | Journalier | n/a | 43 | 39.53 | 164 EUR | -156 |
Graphiques
Le code
// ============================================================ // Impulse Momentum // ProRealAlgos Strategy Library | prorealalgos.com // Type: Momentum // Direction: Long only // Timeframe tested: 1 hour // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade momentumPeriod = 13 // price momentum length and normalising window volumePeriod = 21 // average volume length fastPeriod = 9 // fast SMA length slowPeriod = 21 // slow SMA length impulseBars = 3 // bars in the short impulse window powerPeriod = 5 // average bar range length for impulse power momentumWeight = 2 // weight of normalised momentum in the signal impulseWeight = 3 // weight of normalised impulse in the signal signalPeriod = 8 // SMA of the signal line signalLevel = 0.7 // signal must be above this to buy minVolumeRatio = 1.2 // volume must be this multiple of its average minImpulsePower = 1.8 // bar range must be this multiple of its average stopLossPct = 1 // protective stop, percent of entry price ONCE inTrade = 0 // --- Indicators --- fastMA = Average[fastPeriod](close) slowMA = Average[slowPeriod](close) priceMomentum = (close - close[momentumPeriod]) / close[momentumPeriod] * 100 // Directional movement: only count up moves that beat down moves. upMove = high - high[1] IF upMove <= 0 THEN upMove = 0 ENDIF downMove = low[1] - low IF downMove <= 0 THEN downMove = 0 ENDIF upMoveDominant = 0 IF upMove > downMove AND upMove > 0 THEN upMoveDominant = 1 ENDIF volumeRatio = Volume / Average[volumePeriod](Volume) impulseUp = (close - close[impulseBars]) / (Highest[impulseBars](high) - Lowest[impulseBars](low)) * 100 impulsePower = (high - low) / Average[powerPeriod](high - low) // Scale momentum and impulse to 0..1 over the recent window, then blend them. normMomentum = (priceMomentum - Lowest[momentumPeriod](priceMomentum)) / (Highest[momentumPeriod](priceMomentum) - Lowest[momentumPeriod](priceMomentum)) normImpulse = (impulseUp - Lowest[momentumPeriod](impulseUp)) / (Highest[momentumPeriod](impulseUp) - Lowest[momentumPeriod](impulseUp)) signalLine = (normMomentum * momentumWeight + normImpulse * impulseWeight) / (momentumWeight + impulseWeight) signalMA = Average[signalPeriod](signalLine)
19 lignes de plus : les règles d'entrée et de sortie.
Configuration
Questions
Oui. Les cinq filtres d'entrée, la sortie sur signal et le stop de 1% sont codés. Le code réécrit n'a pas encore été vérifié à la compilation.
L'exécution principale sur Nasdaq 100 1 heure a réalisé 4,958.30 EUR sur 481 trades. Les 9 autres exécutions étaient toutes positives, dont USD/JPY 1 heure à 144,730 JPY et DAX 40 4 heures à 1,077.90 EUR.
Avec 1 contrat et un spread de 3 points, l'exécution sur Nasdaq 100 1 heure a eu un max drawdown de 1,181.50 EUR. Chaque trade est protégé par un stop de 1%.
Les filtres de volume et d'amplitude ont besoin d'assez d'activité par bar pour être pertinents. Sur Nasdaq 100, le graphique en 1 heure a donné le meilleur profit factor, 1.44.
Voir aussi
Le copy trading sur les indices américains est disponible pour les membres ProRealAlgos à mesure que des places se libèrent.