Bonjour, je suis nouveau et pas spécialiste de la programmation, mais j’y travaille.
Je cherche à coder une stratégie qui consiste à prendre une position sur le CAC par exemple à l’ouverture à 9h.
Si le cours d’ouverture est > au cours de clôture de la veille, je rentre long, sinon, je rentre court.
Quand je backteste ma stratégie, je n’ai pas de position prise alors qu’il devrait en avoir une chaque jour …
Pouvez vous m’aider :
DEFPARAM CumulateOrders = False
DEFPARAM FlatAfter = 172900
DEFPARAM PreLoadBars = 200
ClotureVeille=DClose(1)
If time = 09000 then
If close < ClotureVeille then
Sell 1 shares at Market
SET STOP LOSS 20
SET TARGET PROFIT 60
Elsif close > ClotureVeille then
Buy 1 shares at Market
SET STOP LOSS 20
SET TARGET PROFIT 60
Endif
Endif
If STRATEGYPROFIT < -500 THEN
QUIT
ENDIF
Bonjour,
Juste 2 observations pour commencer :
- Je mettrais plutôt “Sellshort” que “Sell”
- Si tu testes la stratégie sur le France40, j’ai peur que DClose(1) ne renvoie à la clôture à minuit (au lieu de 17H30), ai-je tort ?
Pour le reste du code je n’ai pas testé.
Bonne journée.
Bonsoir,
Sur quelle unité de temps es-tu ? si tu es en journalier ça ne marche pas car le code est pris en compte à la fin de la période (donc en fin de journée).
Tu peux prendre une unité de temps de 1H et ta condition devient:
if dopen(0)>dclose(1) then
buy....
endif
if dopen(0)<dclose(1) then
sellshort....
endif
Bon et bien je n’ai rien d’autre à ajouter ! Merci tout le monde pour le coup de main 🙂
Bonjour à tous et merci pour vos réponses.
J’ai commencé par remplacé Sell par Sellshort. C’est noté pour les futurs codes.
J’arrive maintenant à avoir des prises de positions. Par contre, je n’arrive pas à avoir une seule prise de position par jour. De plus, je ne sais pas à quelle bougie il compare la bougie d’ouverture.
Je rappelle que je veux comparer le cours d’ouverture à 9h00 par rapport à celui de clôture de la veille (17h30, ou 17h35 ou 22h) et prendre position en fonction de cela.
Comment récupérer ce cours sans calculer la Nieme bougie qui va différer en fonction de l’unité de temps … Pas simple pour moi.
Merci pour votre aide. Ces morceaux de code me serviront également pour d’autres backtests.
Inutile de s’occuper de l’unité de temps, si tu utilises DCLOSE ou DOPEN, ces constantes te donneront toujours les open et close du timeframe daily.
Pour ne pas cumuler plusieurs ordres en même temps, tu peux utiliser :
defparam cumulateorders = false
Quelle est l’heure prise en compte pour Dclose et Dopen ?
Par exemple pour le CAC ou le DAX : Cours d’ouverture à minuit ? à 8h ? à 9h idem pour la cloture ? 17h30 22h? minuit ?
C’est l’heure précise de l’ouverture ou de la fermeture “standard” de l’instrument en question, de la bougie en timeframe Daily. Évidemment, si tu veux obtenir des prix d’ouverture et de clôture différent (en fonction d’une tranche horaire précise), alors il faudrait le coder. Est-ce que c’est ce que tu cherches à faire ?