lbParticipant
Junior
Bonjour,
Je voudrais modifier un système de trading qui aujourd’hui fonctionne de la manière suivante:
ce que je voudrais coder c’est que la prise de position ne se fasse pas immédiatement mais uniquement après que les cours aient évolué de x% depuis la réalisation de la condition1
j’ai essayé le code ci-dessous mais ça ne marche pas.
merci pour votre aide
lb
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
condition1= //à définir
IF NOT LONGONMARKET and condition1 THEN
BUY 0 CONTRACT AT MARKET
indicator1=tradeprice
ENDIF
if close>indicator1*(1+x) then
buy 1 contract at market
endif
Si il n’y a pas d’ordre au marché, il ne peut y avoir de valeur de tradeprice. Si le but est de vérifier un mouvement de “prix2” depuis “prix1”, pourquoi ne pas utiliser justement ce “prix1” ?
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
condition1= //à définir
IF NOT LONGONMARKET and condition1 THEN
indicator1=close
ENDIF
if close>indicator1*(1+x) then
buy 1 contract at market
endif
lbParticipant
Junior
Bonsoir Nicolas, merci pour ta réponse mais ça ne marche pas comme je le voudrais à savoir:
1) lorsque les conditions 1 et 2 sont réalisées le cours de clôture de la barre qui voient la condition 2 remplie doit être ‘stocké’
2) puis lorsque plus tard (donc après plusieurs nouvelles barres) lorsque les prix dépassent la valeur du cours précédemment ‘stocké’ et augmenté de 1 % alors 1 ordre d’achat est passé
3) la sortie du trade se fera ensuite via un stop suiveur de 30 points.
Quand je fais les simulations avec le code ci-dessous dès que le trade est sorti via le stop suiveur 1 autre ordre d’achat est immédiatement passé sur la barre suivante (donc à priori sans attendre que les conditions 1 et 2 soient de nouveaux réalisées), c’est comme si les instructions conditionnelles ne se réinitialisaient pas.
De plus quand je lance la simulation le 1er ordre d’achat est immédiatement passé (dès la 1ère barre de la période de test) sans, semble-t-il, attendre que les conditions soient remplies.
Merci pour l’aide apportée.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
c1 = (close[3] < open[3])
c2 = (close > open[3])
IF NOT LONGONMARKET and c1 and c2 THEN
indicator1=close
ENDIF
if close>indicator1*(1.01) then
buy 1 contract at market
SET STOP pTRAILING 30
endif
Quand je fais les simulations avec le code ci-dessous dès que le trade est sorti via le stop suiveur 1 autre ordre d’achat est immédiatement passé sur la barre suivante (donc à priori sans attendre que les conditions 1 et 2 soient de nouveaux réalisées), c’est comme si les instructions conditionnelles ne se réinitialisaient pas.
Oui c’est normal, le code que j’ai donné ne réinitialise pas ton niveau d’entrée, je ne connais pas ta stratégie..
Dans la version ci-dessous je reset en mettant indicateur1 à 0 et ajoute une condition pour qu’il ne le soit pas pour prendre position.
// Définition des paramètres du code
defparam preloadbars=0
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
c1 = (close[3] < open[3])
c2 = (close > open[3])
IF NOT LONGONMARKET and c1 and c2 THEN
indicator1=close
ENDIF
if close>indicator1*(1.01) and indicator1>0 then
buy 1 contract at market
SET STOP pTRAILING 30
indicator1=close
endif
J’ai ajouté un preloadbars à 0 également, tu ne devrais plus avoir d’ordre directement sans condition.
lbParticipant
Junior
c’est parfait, merci Nicolas pour ton aide.