Bonjour.
Je débute sur PRT…
Je souhaiterai coder une stratégie simple sur indices qui se place à l’ouverture sur un GAP – soit achat, soit vente.
Avec stoploss au niveau de la cloture de la veille et sortie de trade cinq minutes avant fin de journée.
Pourriez vous faire ce code de stratégie ? Avec les REM explicatifs de chaque lignes … pour m’aider à comprendre et apprendre.
D’avance, grand merci.
C’est ça:
DEFPARAM CumulateOrders = false
// -------------------------------------------------------
// Données journalières d'hier (bougie fermée)
//
TIMEFRAME(daily, updateonclose)
yhigh = high[1]
ylow = low[1]
cloturehier = close[1]
TIMEFRAME(default)
// -------------------------------------------------------
ONCE HoraireOuverture = 093000
ONCE HeureFermeture = 172500
// pas plus d'une transaction par jour
//
IF OnMarket AND Not OnMarket[1] THEN
tradedone = 1
ENDIF
// -------------------------------------------------------
// Réinitialisation quotidienne du flag, une seule opération par jour
//
IF IntraDayBarIndex = 0 THEN
tradedone = 0
IF OnMarket THEN
tradedone = 1
ENDIF
ENDIF
// -------------------------------------------------------
// Setup Outside Day
// setuplong = Aujourd'hui, le prix a franchi le plus bas d'hier.
// setupshort = Aujourd'hui, le prix a franchi le sommet d'hier.
//
setuplong = (low <= ylow)
setupshort = (high >= yhigh)
// -------------------------------------------------------
// Ordres d'entrée en attente (STOP)
//
IF NOT OnMarket AND (tradedone = 0) AND (OpenTime >= HoraireOuverture) THEN
// LONG: Entrée au plus haut d'hier avec un ordre STOP
IF setuplong THEN
BUY 1 CONTRACT AT yhigh STOP
ENDIF
// SHORT: Entrée au plus bas d'hier avec un ordre STOP
IF setupshort THEN
SELLSHORT 1 CONTRACT AT ylow STOP
ENDIF
// -------------------------------------------------------
// Stop Loss
SET STOP Price cloturehier
ENDIF
// -------------------------------------------------------
// Sortie le lendemain de l'entrée
//
IF Time >= HeureFermeture THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
//
GraphOnPrice yhigh coloured("Green")
GraphOnPrice ylow coloured("Red")
J’ai réessayé le code et il semble correct, contrairement au précédent :
DEFPARAM CumulateOrders = false
// -------------------------------------------------------
// Données journalières d'hier (bougie fermée)
//
TIMEFRAME(daily, updateonclose)
yhigh = high
ylow = low
cloturehier = close
OuvertureHier = open
// Données journalières (bougie actuelle)
TIMEFRAME(daily, default)
IF OpenDay <> OpenDay[1] THEN
// -------------------------------------------------------
// Setup Outside Day
// GapUP = le cours d'ouverture d'aujourd'hui est supérieur au plus haut d'hier.
// GapDN = le cours d'ouverture d'aujourd'hui est inférieur au plus bas d'hier.
//
GapUP = (open >= yhigh)
GapDN = (open <= ylow)
ENDIF
TIMEFRAME(default)
// -------------------------------------------------------
ONCE HoraireOuverture = 093000
ONCE HeureFermeture = 172500
// pas plus d'une transaction par jour
//
IF OnMarket AND Not OnMarket[1] THEN
tradedone = 1
ENDIF
// -------------------------------------------------------
// Réinitialisation quotidienne du flag, une seule opération par jour
//
IF IntraDayBarIndex = 0 THEN
tradedone = 0
IF OnMarket THEN
tradedone = 1
ENDIF
ENDIF
// -------------------------------------------------------
// Ordres d'entrée
//
IF NOT OnMarket AND (tradedone = 0) AND (OpenTime >= HoraireOuverture) THEN
// LONG: Entrée au marché
IF GapUP THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// SHORT: Entrée au marché
IF GapDN THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// -------------------------------------------------------
// Stop Loss
SET STOP Price cloturehier
ENDIF
// -------------------------------------------------------
// Sortez du marché 5 minutes avant la clôture des marchés
//
IF Time >= HeureFermeture THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
//
GraphOnPrice yhigh coloured("Green")
GraphOnPrice ylow coloured("Red")
Bonjour.
Tant pour le premier que le second code (260588 vs 260611) …
Code erreur … ligne 1 :
Caracteres manquants. Suggestions : fin de code
Cordialement.
Il faut placer le code dans un éditeur de codes dédiés aux stratégies (le module ProBacktest), c’est sans doute pour cela que vous obtenez cette erreur / ou il s’agit d’un mauvais copier/coller.
Pour copier le code depuis le site, il y a un bouton spécifique dans chaque fenêtre de code en haut à droite, c’est la meilleure façon de copier un code sans erreur 🙂