Bonjour, lors du passage en live de mon robot avec IG via PRT j’ai remarqué que les ordres LIMIT en ouverture de bougie n’ouvraient absolument jamais au prix demandé, je vous copie/colle le code dans l’espoir que ce problème soit déjà arrivé à quelqu’un qui puisse m’indiquer comment le résoudre.
————————————————-
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
noEntryBeforeTime = 090000
timeEnterBefore = time >= noEntryBeforeTime
noEntryAfterTime = 170000
timeEnterAfter = time < noEntryAfterTime
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
indicator1 = CALL "Exemple RSI"[14]
c1 = (indicator1 CROSSES UNDER 70)
IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT open-1 LIMIT
ENDIF
indicator2 = CALL "Exemple RSI"[14]
c2 = (indicator2 CROSSES OVER 30)
IF c2 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT open+1 LIMIT
ENDIF
SET STOP pLOSS 38.8
SET TARGET pPROFIT 71.2
————————————————-
Le problème à l’air de venir des lignes :
BUY 1 CONTRACT AT open-1 LIMIT
SELLSHORT 1 CONTRACT AT open+1 LIMIT
Pour résumer en live le robot se comporte comme si il passait un ordre MARKET au lieu d’un LIMIT.
Merci d’avance de vos réponses.
Un order LIMIT se place en dessous du prix actuel pour un achat et au dessus pour une vente. Dans le cas où cela n’est pas respecté, alors l’ordre se déclenchera, comme un order au marché et comme tu as pu l’observer.
Par ailleurs, n’oublie pas que le courtier impose une distance vis à vis du prix actuel pour placer un ordre conditionnel, cette valeur est indiquée sur le site du courtier pour chaque instrument.
Merci beaucoup pour la rapidité de la réponse, auriez vous une suggestion pour que le code vérifie le niveau actuel du cours et dès que les conditions sont remplie, qu’il exécute mon ordre LIMIT ?
Vous m’avez déjà bien aidé dans tous les cas.
Puisque tu veux placer ton order à OPEN-1 points, alors on peut ajouter cette condition pour un achat (et vice versa donc pour une vente)
c11 = close > open-1*pointsize
Je viens de tester en virtuel cette condition, il a l’air de juste testé la condition à un moment donné et si ces conditions ne sont pas remplie à ce moment là il n’ouvre pas le trade car il ne regarde pas les conditions sont remplie plus tard, ça à l’air assez compliqué de placer un ordre LIMIT et qu’il l’exécute dès que possible.
Merci de m’avoir répondu à nouveau.
La condition est testé en même temps que ta condition c1, c’est cette dernière qui limite le teste ultérieur pour placer l’ordre.