Questions des débutants MQL5 MT5 MetaTrader 5 - page 667

 
Leo59:
Malheureusement, cela ne fonctionne pas.

init() ;
if(IsTradeAllowed()) Print("La transaction est autorisée") ;
if(!IsTradeAllowed()) Print("Le commerce n'est PAS autorisé") ;


Il est écrit : "Commerce autorisé"

Il doit y avoir un autre moyen. Comment ?

Essayez comme ça :

starttime=(int)TimeCurrent()+sec; // например +5 секунд. Эту строку в OnInit

if(TimeCurrent()>starttime) {
...
}

Je pense que le principe est clair, et tant qu'il n'y a pas de tic,TimeCurrent ne changera pas.

 
Vitaly Muzichenko:

Essayez de cette façon :

starttime=(int)TimeCurrent()+sec; // например +5 секунд

if(TimeCurrent()>starttime) {
...
}

Je pense que le principe est clair, et tant qu'il n'y a pas de tic,TimeCurrent ne changera pas.

Oui, pour le Forex c'est bien, parce que les tiques viennent souvent. Et si ce n'est pas pour le Forex ?
 
Leo59:
Oui, pour le forex c'est bien parce que les tiques viennent souvent. Et si ce n'est pas pour le Forex ?
Le fait est que, lors de l'initialisation, la variable "starttime" sera supérieure de quelques secondes à l'heure du serveur. Ainsi,lorsque les ticks arrivent à l'ouverture du marché, alorsTimeCurrentsera toujours supérieur àstarttime, et les ticks n'ont pas d'importance - la condition est remplie et le restera jusqu'à la prochaine réinitialisation, par exemple, en changeant d'horizon temporel, ou en rechargeant le terminal.
 
Vitaly Muzichenko:
Le fait est que, lors de l'initialisation, l'heure de la variable "starttime" sera supérieure de quelques secondes à l'heure du serveur.
Je dois traiter l'information maintenant, avant que le premier tic-tac n'arrive, de sorte que lorsque le nouveau (premier) tic-tac arrive, tout soit prêt à fonctionner.
 
Leo59:
Ce n'est pas le cas. Vérifiez-le maintenant, si vous le voulez bien). Mais, ce n'est pas la question. Je dois traiter l'information maintenant, avant que le premier tic-tac n'arrive, de sorte qu'à l'arrivée du nouveau (premier) tic-tac, tout soit prêt.
Je l'utilise depuis plusieurs années, mais je n'ai pas besoin de traiter quoi que ce soit tant qu'il n'y a pas de tique. Vous avez besoin d'une autre solution, et le lien que je vous ai donné devrait être
 
Vitaly Muzichenko:
Je l'utilise depuis quelques années, mais je n'ai pas besoin de traiter quoi que ce soit tant qu'il n'y a pas de tiques. Vous avez besoin d'une autre solution, et d'après le lien que vous avez donné, ce devrait être
Vous avez raison, "starttime=(int)TimeCurrent()+sec ; // e.g. +5 seconds", bien sûr, est plus grand que TimeCurrent(). J'ai réagi de manière excessive, mon cerveau semble avoir complètement fondu ;))
Le lien que j'ai donné là-bas dit seulement TimeLocal() mais je voulais l'éviter.
 
Leo59:
Vous avez raison, "starttime=(int)TimeCurrent()+sec ; // par exemple, +5 secondes", est bien sûr plus grand que TimeCurrent(). J'ai réagi de manière excessive, mon cerveau semble avoir complètement fondu ;)
Le lien mène uniquement à TimeLocal() et je voulais l'éviter.

En fonction de la tâche, vous pouvez essayer d'utiliser une combinaison deTimeCurrent()+OnTimer(), ou TimeCurrent()+TimeGMT()+TimeGMTOffset().

Vous pouvez faire toutes les conditions par timer et échanger parTimeCurrent() Il existe de nombreuses solutions, mais le choix vous appartient pour votre tâche individuelle.

 
Vitaly Muzichenko:

Selon la tâche à accomplir, vous pouvez essayer d'utiliser une combinaison deTimeCurrent()+OnTimer(), ou TimeCurrent()+TimeGMT()+TimeGMTOffset().

Vous pouvez exécuter toutes les conditions par timer et trader parTimeCurrent() Il existe de nombreuses solutions, mais le choix vous appartient pour votre tâche individuelle.

Et comment, dans ma question, peut-on appliquer OnTimer()?
 
Leo59:
Et comment, dans ma question, peut-on appliquer OnTimer() ?
Maintenir le drapeau d'inhibition jusqu'à ce que tout ait été calculé, par exemple...
 
Artyom Trishkin:
Maintenir le drapeau d'interdiction de travailler jusqu'à ce que tout ait été calculé, par exemple...
Artyom, la question était de savoir comment définir un jour de congé de manière programmatique sans recourir à TimeLocal(). ))