La stratégie que j’utilise en manuel consiste à prendre une position d’achat au moment où le prix casse la MM50 à la hausse et la fermer au moment où il casse à la baisse la MM50. Or, ProOrder va toujours exécuter mon code à la clôture de la bougie et donc placer un ordre sur un prix déjà loooin de la MM50. Pour palier à ça je me suis dit que j’allais utiliser le MTF pour utiliser l’UT M1 mais faire en sorte que mon programme s’exécute toutes les secondes afin d’avoir plus de réactivité.
Ci-dessous la partie du programme avec ouverture/fermeture dans le cas où la MM50 est à la hausse :
// la condition de fermeture et d’ouverture qui devrait se mettre à jour chaque seconde afin que le prix soit au plus proche de la MM50
timeframe(1second)
iflongonmarketandclosecrosses undermm50then
sellatmarket
endif
ifnotonmarketandbuycthen
buytaillecontractatmarket
endif
Mais voici le message d’erreur que j’obtiens :
“Toutes les unités de temps appelées dans le code doivent être des multiples de l’unité de temps dans laquelle vous exécutez votre stratégie.”
(A noter que si j’utilise l’UT M1 pour exécuter le programme et l’UT M5 comme condition ça ne résout pas le problème d’écart entre le prix d’ouverture et de fermeture, ça l’aggrave même certaines fois)
Si quelqu’un avait la solution pour ouvrir une position pile au croisement à la hausse et fermer pile au croisement à la baisse (sans la commande TIMEFRAME), ou si quelqu’un sait pourquoi 1 seconde n’est pas un multiple de 60 seconde (avec la commande TIMEFRAME), je suis plus que preneur.
Merci à vous.
Ci-joint un exemple pour illustrer le décalage entre le trading manuel et ProBacktest ou ProOrder
Je pense qu’il faut écrire :au lieu deTimeframe (par défaut) doit être Timeframe (1minute, updateonclose)et plutôtTimeframe(1second) doit être timeframe(default).Et puis commencez dans le graphique 1 seconde.
Tout d’abord merci pour vos réponses, effectivement il faut lancer le graphique dans la plus petite UT pour ne pas avoir d’erreur. Maintenant si je veux un backtest sur plusieurs jours il me faut 60x plus de temps de calcul, c’est le gros revers de la médaille.
J’ai passé la journée à peaufiner mon programme avec ces nouveaux paramètres mais les résultats me laissent perplexes. Ma démarche était elle la bonne ou vous voyez une autre solution pour fermer une position juste au croisement du prix et d’un indicateur ?
Mais si le programme se lance à chaque fermeture de bougie, si le prix traverse l’indicateur au milieu de l’UT (par exemple sur une UT H1 il traverse au bout de 30 mins) le programme ne sera pas en fonctionnement.
To help us continually offer you the best experience on ProRealCode, we use cookies. By clicking on "Continue" you are agreeing to our use of them. You can also check our "privacy policy" page for more information.Continue