Bonjour,
Je voulais faire un système simple sans condition autre que le temps en journalier.
Acheter pour 10 000 euros d’actions à 9 h 03 et fermer la position à 17 h 27.
Le code ne marche pas. (ci-joint)
Je précise que les commandes ne fonctionnent pas non plus.
defparam flatafter =172700
defparam flatbefore = 090300
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
c1=time > 090300
IF c1 and not longonmarket THEN
BUY 10000 cash roundedup at market
ENDIF
// Conditions pour sortir une position acheteuse
IF ONMARKET AND TIME>=172700 THEN
SELL AT MARKET
ENDIF
Merci de votre aide.
>> Pour la clarté des messages sur les forums de ProRealCode, merci d’utiliser le bouton “insert PRT code” pour séparer la partie texte de la partie code, merci ! <<
Bonjour,
time sert à identifier non pas l’heure simple, mais l’heure de clôture d’une bougie, donc pour acheter à 9h03, il ne faut pas le faire avec un “time >090300”. Ecrit ainsi cela ne sélectionnera que la première bougie de clôture postérieure à 9h03, ce qui plus l’ut est grande, plus ladite clôture intervient tard après 9h03 (par exemple 9h05 en ut5, 10h en uth, fin de journée en ut jour…), puis ensuite classiquement l’achat ne se déclenche qu’à l’ouverture de la bougie suivante.
Pour acheter à 9h03, il faudrait être dans une ut suffisamment petite qui a une bougie qui clôture à 9h03 et sélectionner un time=090300 (pas >) pour que l’achat se déclenche à l’ouverture de la bougie suivante qui commence à 9h03
Bonjour,
Merci pour la réponse.
Cela fonctionne mieux avec l’ut 5 mn mais quand une position est clôturée, cela ouvre une autre position alors que je voudrais un seul ordre par jour.
Je vais chercher sur le forum.
Pour passer un seul ordre par jour à 9h03, le faire avec une ut 3mn ou une ut1mn et un “time =” , pas un “time >”, sinon à garder une ut plus grande que le 3mn, telle que le 5mn, et à garder le “time>” qui fera son premier chat à 9h05, c’est tout à fait logique qu’après avoir vendu, on a à la fois les conditions “time>” et “not longonmarket” qui soient à nouveau respectées, et que ce morceau de code recommence à acheter.
Si on tient absolument à garder un “time>”, alors il faut flagger le fait d’avoir déjà passé un ordre dans la journée, et rajouter la vérification du flag pour empêcher d’en passer un deuxième, comme par exemple dans ce topic: http://www.prorealcode.com/topic/limite-le-trading-automatique-a-un-ordre-journalier/
(je prends celui-là parce qu’il ressort vite via recherche dans le site, mais de mémoire il y en a d’autres dans le forum)
Oui, j’ai lu le topic et j’ai essayé mais cela ne fonctionne pas même sur l’unité de temps de 5 mn.
Maintenant,il ne passe plus aucun ordres alors qu’avant il passait plusieurs ordres par jour.
J’ai fait des programmes assez complexes, et je n’arrive pas à faire un programme pour acheter sans conditions à 9 h 05 une seule fois par jour. C’est dingue.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
defparam flatbefore = 090500
once achat = 0
// Conditions pour ouvrir une position acheteuse
IF time = 090500 and achat=0 and not longonmarket THEN
BUY 10000 cash roundedup at market
achat=1
ENDIF
// Conditions pour sortir une position acheteuse
G
SET STOP $LOSS 100
SET TARGET $PROFIT 250
finalement, cela a l’air de fonctionner.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
defparam flatbefore = 090000
// Conditions pour ouvrir une position acheteuse
once achat = 0
IF time = 090500 and achat = 0 and not longonmarket THEN
BUY 10000 cash roundedup at market
ENDIF
>> Merci d’utiliser… << : voir image ci-jointe