HCParticipant
Average
//-------------------------------------------------------------------------
// Code principal : 1785Y4-C-macd-Suiv4-1mnF
//-------------------------------------------------------------------------
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
noEntryBeforeTime = 084200
timeEnterBefore = time >= noEntryBeforeTime
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
noEntryAfterTime = 193000
timeEnterAfter = time < noEntryAfterTime
// Conditions pour ouvrir une position en vente à découvert
indicator1 = ExponentialAverage[9](MACDline[12,26,9](close))
c1 = (indicator1 CROSSES UNDER 0)
IF c1 AND timeEnterBefore AND timeEnterAfter THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Stops et objectifs
//trailing stop function
trailingstart = 4 //trailing will start @trailinstart points profit
trailingstep = 2 //trailing step to move the "stoploss"
//reset the stoploss value
IF NOT ONMARKET THEN
newSL=0
ENDIF
//manage long positions
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
newSL = tradeprice(1)+trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
newSL = newSL+trailingstep*pipsize
ENDIF
ENDIF
//manage short positions
IF SHORTONMARKET THEN
//first move (breakeven)
IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
newSL = tradeprice(1)-trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
newSL = newSL-trailingstep*pipsize
ENDIF
ENDIF
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
Je suis sur un temps très court d’1 minute.
Sur une position qui devrait s’ouvrir par exemple à 12h29 : croissement, la position est ouverte que 5 minutes apres
Il en etait de meme sur l’ouverture de la premiere position
“Date” “Type” “Prix” “Qty” “Valeur”
“3 juil. 2017 12:34:00” “Vente (entry)” “1,13725” “1” “11 372,50”
“3 juil. 2017 12:04:00” “Achat (exit)” “1,13735” “1” “11 373,50”
“3 juil. 2017 11:45:00” “Vente (entry)” “1,13767” “1” “11 376,70”
Ma question :
comment faire en trading automatique, que la position s’ouvre en meme temps que le signal.
Sur un timeframe 1 minute, la position devrait être lancé à l’ouverture de la bougie qui suit le signal constaté.
En backtest tu devrais déjà essayer de visualiser le signal pour constater qu’il est bien là où tu penses qu’il devrait être, en ajoutant simplement cette ligne à la fin de ton code:
GRAPH c1 as "signal !"
HCParticipant
Average
Merci de cette indication.
Il y a un decalage.
La position ne semble pas s’ouvrir pas à l’ouverture de la bougie qui suit.
Mais je vais regarder plus précisement. J’ai une impression d’une bougie de sautée
Cela me semble correct sur mon test ci-joint. La flèche du trade est bien sur la bougie d’après le croisement de la ligne 0 de la ligne de signal du MACD, telle que dans la stratégie (arrête moi si je me trompe 🙂 ).
HCParticipant
Average
Oui Autant pour moi.
La stratégie se déclenche au franchisement de la ligne 0.
Quand j’ai créé la stratégie par le mode directement sur graphe, (en création simplifié), j’ai voulu le croissement du signal et MACD, mais j’ai du prendre ces lignes proches de la ligne 0.
Et je suis rester à regarder les positions en pensant à mon croissement MACD et Signal.
Quand au franchissement de la ligne 0 et l’ouverture de la position, effectivement sur ton graphe s’est très clair.
Autant pour moi pour cette erreur.