Répondre

[Bug + Fix] La sortie le vendredi n'est pas calculée correctement

18 réponses

geektrader

Customer, bbp_participant, community, 522 replies.

Visiter le profil

Il y a 8 ans #114118

J'ai regardé mon VPS ce soir et j'ai remarqué qu'il n'y avait plus de transactions en cours (toutes mes stratégies utilisent uniquement des ordres en attente). En regardant dans le journal, j'ai vu qu'il a toujours ajouté/ajusté les nouveaux ordres stop toutes les 30 minutes comme il est censé le faire, mais qu'il les a supprimés directement après chaque fois.

 

Après un long débogage du code MQL4 via "Print", on en est arrivé à la fonctionnalité Exit on Friday qui pensait toujours que c'était déjà la fin du vendredi et qu'elle devait supprimer tous les ordres en attente / clôturer toutes les transactions activées. La fonction compare les éléments suivants pour déterminer si c'est le bon moment pour sortir :

 

....else if(dow == 5 && TimeCurrent() >= StrToTime(ExitTimeOnFriday)) {

            closeActiveOrders() ;

            closePendingOrders() ;

         }

 

Après avoir imprimé "TimeCurrent()" et StrToTime(ExitTimeOnFriday)) via la commande "Print", le résultat était que "TimeCurrent()" était en effet plus grand que "ExitTimeOnFriday", bien que mon "ExitTimeOnFriday" soit 23:57, et que le serveur de trading MT4 que j'utilise (Global Prime Forex) était actuellement à vendredi 01:34 à cette heure. Pourquoi cela s'est-il produit ? C'est simple, vous ne pouvez pas transmettre "ExitTimeOnFriday" ("23:57") à la fonction "StrToTime" comme ça, parce que la fonction "StrToTime" utilise le jour actuel de l'ORDINATEUR LOCAL pour ajouter un jour à 23:57, alors que la fonction "TimeCurrent()" utilise toujours le jour actuel du serveur MT4 - et mon ordinateur local a une heure complètement différente de celle du serveur de trading MT4 puisqu'il se trouve dans un autre fuseau horaire. Ainsi, dans son état d'origine, la vérification de la sortie le vendredi compare des pommes et des oranges.

 

Pour les programmeurs de la SQ, la solution est la suivante :

 

....else if(dow == 5 && TimeCurrent() >= StrToTime(DoubleToStr(TimeYear(TimeCurrent()), 0) + "." + DoubleToStr(TimeMonth(TimeCurrent()), 0) + "." + DoubleToStr(TimeDay(TimeCurrent()), 0) + " " + ExitTimeOnFriday)) {

…..

 

Ceci utilisera toujours le jour actuel du serveur MT4 (le même jour que "TimeCurrent()" retourne) pour calculer l'heure de sortie du vendredi au lieu du jour de l'ordinateur local. De cette façon, l'heure de sortie du vendredi est toujours précise et vous pouvez régler l'horloge de votre ordinateur local comme vous le souhaitez :)

 

 

Et oui, je suis toujours disponible à l'embauche pour trouver et corriger d'autres bugs ;)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Fluke

Abonné, bbp_participant, communauté, 43 réponses.

Visiter le profil

Il y a 8 ans #133103

Mark, avec cette nouvelle correction tu as corrompu tout le code source de mql4 !!! Le back test sur metatrader va en dehors de la mémoire !!! s'il vous plait, réparez le rapidement.

0

Matusiak Adrian

Client, bbp_participant, communauté, 300 réponses.

Visiter le profil

Il y a 8 ans #133294

BTW,

 

Ce problème a-t-il déjà été résolu ?

La dernière mise à jour détruisait le code mql mais la prochaine mise à jour corrige-t-elle le fichier corrompu + sortie vendredi ?

btn_viewmy_160x33.png

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

Il y a 8 ans #133295

Oui, je l'ai écrit dans un autre fil de discussion. Le problème a été résolu avec la dernière mise à jour automatique.

 

J'ajoute également la mise à jour automatique ici au cas où vous ne l'auriez pas confirmée. Il suffit d'extraire l'archive ZIP dans le dossier principal de l'EA Wizard.

Fichier : sq_update.zip

Marque
StratégieArchitecte de Quantités

0

Affichage de 3 réponses de 16 à 18 (sur un total de 18)

1 2