Rejoindre la liste d'attente
Stratégies / Momentum / Seasonal Momentum Long

Seasonal Momentum Long

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.

MomentumLong uniquementIntradayOr10 min
1.57Profit factor
905Gain net EUR
48.72%Taux de réussite
195Trades
-177Max drawdown
4.64Trade moyen

Meilleure exécution sur 20. Gold, 10 min, spread 0.6, issue de l'exécution pf:2026-09-24-GOLD-10m.tsv:1.

Règles d'entrée, long

  1. Du lundi au vendredi uniquement
  2. Le true range de la barre est supérieur à 25 points
  3. TEMA(4) est au-dessus d'EMA(4)

Règles de sortie

  1. Stop loss à 5% de l'entrée

Conditions de test

PériodeJusqu'au 2026-09-24
InstrumentOr, 10 minutes
Spread0.6 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-24
Paramètres (32)
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és et unités de temps testés

MarchéUnité de tempsPFTrades% de réussiteNetMax DD
OrMeilleure exécution10 min1.57 19548.72905 EUR-177
DAX 404 heures1.18 2,44538.7317,921 EUR-3,328
DAX 40Journalier1.18 1,04339.0211,563 EUR-2,819
ArgentJournaliern/a 75236.8426,593 USD-9,081
Dow JonesJournaliern/a 1,19438.1116,900 EUR-8,908
Dow Jones15 minn/a 3,88437.3313,052 EUR-9,190
Dow Jones4 heuresn/a 81040.4910,700 EUR-7,832
Dow Jones30 minn/a 2,92036.9510,020 EUR-8,556
Dow Jones10 minn/a 3,03137.559,588 EUR-7,551
Nasdaq 1004 heuresn/a 1,81838.179,565 EUR-3,611
Dow Jones1 heuren/a 2,03936.649,229 EUR-8,470
Nasdaq 100Journaliern/a 82440.297,322 EUR-5,082
Pétrole BrentJournaliern/a 59540.346,984 EUR-4,208
Pétrole brut américain4 heuresn/a 2,29737.446,353 EUR-5,078
S&P 500Journaliern/a 46741.331,648 EUR-966
Or30 minn/a 32243.17765 EUR-441
Or5 minn/a 14145.39683 EUR-245
FTSE 1003 minn/a 18641.94600 EUR-551
Or15 minn/a 22943.67582 EUR-297
Or1 minn/a 1850.00140 EUR-119

Graphiques

Résultats par exécution

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

ProBuilder, réécrit selon le standard maison

// ============================================================
// 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

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

TEMAEMARepulseTrue Range
Historique plus longNouvelle exécution sur jusqu'à 1,000,000 barresOr · 10 min · données anciennes 590.60 EUR

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.

Or · 10 min

Barres disponibles734,000
Net, exécution standard de 200,000 barres904.90 EUR
Net, exécution longue1,495.50 EUR
Net sur les seules données plus anciennes590.60 EUR
À lire d'abordFaiblesses connues4 points
  • Le mois utilisé par la table saisonnière est le mois pendant lequel le système s'exécute, non le mois de la barre. Un backtest exécuté en septembre ne trade que la première moitié de chaque mois, les résultats dépendent donc du moment où vous l'exécutez.
  • La meilleure exécution sur Gold 10 minutes n'a eu que 195 trades et a rapporté EUR 904.90.
  • Le seuil de true range de 25 points est propre à l'instrument, et la plupart des lignes sont des données de balayage sans profit factor enregistré.
  • Le taux de réussite reste sous 50% sur tous les marchés testés, de 36.64% sur Dow Jones 1 heure à 48.72% sur la meilleure exécution.

Questions

À propos de cette stratégie

Seasonal Momentum Long peut-elle fonctionner en réel ?

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.

Quels marchés et unités de temps ont été testés ?

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.

Quel drawdown a accompagné la meilleure exécution ?

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.

Pourquoi une table saisonnière ?

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

Des stratégies comme celle-ci

Monday Dip Buy

Utilise le même indicateur.

n/a PF · 146 trades

Triple Band Market Model

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

2.27 PF · 203 trades

Brent SMI Trend

Un profit factor similaire.

1.57 PF · 106 trades

Vous voulez suivre comment les filtres saisonniers sont testés sur différents marchés ? Rejoignez la communauté ProRealAlgos.

La communauté ProRealAlgos obtient les règles complètes, le code complet et le portefeuille automatisé.

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