Bonsoir,
Existe il un moyen d’ouvrir une position au moment où la condition demandé se réalise (sans attendre la fin de la période). Je comprends bien que dans mon codage on fait toujours référence à une clôture, ce qui oblige l’algorithme à attendre la fin de la période avant de déclencher l’ordre. J’aimerai savoir s’il est possible, au même titre que pour un Stop Loss ou Target Profit, de déclencher une ouverture de position au moment exact où la condition se réalise.
La partie problématique de mon code se porte sur le changement de position de l’indicateur parabolique SAR par rapport au cours.
c1 = (pSAR CROSSES UNDER High)
“high” sous entend qu’il faut attendre la fin de la période pour clôture, peut on y remédier ?
Pour information en pièce jointe, la répercussion directe sur le graphique en Backtest : la position est ouverte une bougie trop tard.
Merci par avance pour votre aide
Bonjour,
Je suis également intéressé par cette question, car je trouve ça dommage de perdre à chaque une bougie lorsque mes conditions sont réunies pour entrer sur le marché.
SuperMike, effectivement c’est plutôt dommage, je cherche toujours une solution mais pour l’instant ça paraît impossible. Peut-être qu’ils développeront cette évolution dans l’année 2018… En tout cas je l’espère 🙂
Si vous avez plus d’informations n’hésitez pas, j’en ferai de même.
J’avais ouvert le même sujet sur le forum anglophone, si quelqu’un est intéressé, voici le lien : https://www.prorealcode.com/topic/how-to-open-immediately-a-position/#post-62436
Merci 🙂
Oui ce serait une bonne nouveauté, car je trouve que c’est trop pénalisant d’avoir un train de retard. En Backtest tout est clean, et en ProOrder ça devient l’enfer car une bougie de retard fait tout décaler…
En effet, mais pour le SAR dont il est question, c’est sa cassure sur le Close qui le fait changer de direction, hors entre l’Open et le Close d’une bougie il peut y avoir plusieurs cassures sans pour autant que la direction change à la toute fin de la bougie.
Bonjour Nicolas, vous êtes très présent sur ce forum, est ce que vous travaillez chez ProRealTime même ? En tout cas j’apprécie votre grande connaissance en programmation.
J’ai besoin de savoir comment déclencher une position IMMEDIATEMENT lorsque les conditions sont réunis (timeframe en 5 et 15mn) sans attendre la CLOTURE en 5mn ?
j’ai beau chercher partout, je ne trouve pas le code.
IF MacVert5mn AND MacVert15mn THEN //
BUY 1 CONTRACT AT MARKET // position trop tardive, le cours a déja dépassé la MM7
ENDIF
Merci
vous êtes très présent sur ce forum
Normal, c’est le mien 😆
Ci-dessous un exemple de comment ça doit se passer :
defparam cumulateorders=false
timeframe(15 minutes,updateonclose)
macd15 = MACD[12,26,9](close)
timeframe(5 minutes)
macd5 = MACD[12,26,9](close)
timeframe(default)
a=macd15>0 and macd5>0
if a>0 then
buy at market
endif
graph macd15
graph macd5 coloured(200,0,0)
Déclaration des MACD dans les timeframes respectifs.
En 15 minutes, on prend celui de la dernière clôture en M15.
En 5 minutes on prend celui qui est cadencé par la dernière fermeture en timeframe “default”, donc le timeframe sur lequel la stratégie est lancée (privilégié le M1 pour avoir un update toutes les minutes).
En timeframe default, on prend les ordres en comparant les conditions.
A bien garder en tête, vous aurez donc des faux signaux, puisque vous n’attendez pas la clôture d’une bougie M5 pour considérer la valeur du MACD, selon votre demande. Il est donc fort probable qu’il y ait plusieurs ordres sur entre le début et la fin de la bougie M5 (si toutefois les ordres se ferment aussi dans durant ce laps de temps).
Bonjour Nicolas, merci pour votre réponse rapide.
Si j’ai bien compris, le code TIMEFRAME(15 minutes,updateonclose) prend en compte uniquement la DERNIÈRE clôture en 15MN. Exemple :
TIMEFRAME(15 minutes, updateonclose)
condition1 = …
TIMEFRAME(5 minutes,default)
condition2 = …
alors la clôture en 15mn de 17h00 est utilisée pour comparer les conditions avec seulement ces clôtures en 5mn : 17h15, 17h20, 17h25
Autrement si le code est :
TIMEFRAME(15 minutes)
condition1 = …
TIMEFRAME(5 minutes,default)
condition2 = …
alors les conditions sont recalculés tous les 5 minutes 17h00, 17h05, 17h10, 17h15, 17h20, 17h25, 17h30….
Tout cela est juste ?
D’autre part le code :
TIMEFRAME(10 minutes, updateonclose)
condition = close > 12400
équivaut à :
TIMEFRAME(10 minutes)
condition = close[1] > 12400
Est ce juste ?
Bonjour,
je souhaiterai ouvrir une position acheteuse à l’instant T ou le prix touche une moyenne mobile, sans attendre la clôture de celle-ci ,et inversement pour ouvrir une position vendeuse.
Merci pour la patience .. il faut en effet parfois attendre plus de 3h pour avoir une réponse, surtout un Dimanche 🙄
Bref, c’est la même idée que dans mon exemple avec le MACD plus haut, soit on déclare la moyenne mobile dans le timeframe qu’on veut étudier et on prend les ordres dans un timeframe plus petit, celui de son choix.
Exemple avec une moyenne mobile simple 20 périodes déclarées en UT 5-minutes :
timeframe(5 minutes)
mm = average[20]
timeframe(default) //le timeframe le plus petit utilisé pour constater les contacts avec la MM
if not longonmarket and close>mm then
buy at mm limit
endif
Dans le code ci-dessus, je pose en continue un ordre d’achat LIMIT sur le niveau de prix de la MM20, si on se situe au dessus et qu’on est pas déjà au marché.
Bonjour Nicolas,
et n’est pas vu votre réponse désolé et entre temps j’ai refait un poste avec mon exemple concret,
pourriez vous s’il vous plait me communiquer le code de programmation en entier
merci encore.
Le code que je viens de faire ici est complet (ou plutôt générique) eu égard à ta description. L’autre demande étant différente, je vais reprendre le temps nécessaire pour y répondre.