[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 749
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Messieurs les programmeurs. Pouvez-vous m'aider ?
A partir des variables d'entrée.
extern bool UseHourTrade = True ;
extern int FromHourTrade = 0 ;
extern int ToHourTrade = 23 ;
int start(){
if (UseHourTrade){
if ( !(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Le moment de la transaction n'est pas encore arrivé !") ;
return(0) ;
}
}
Je veux ajouter une deuxième période de temps où la transaction doit être effectuée avec d'autres variables UseHourTrade2, FromHourTrade2, ToHourTrade2.
S'il vous plaît, aidez-moi. Dites-moi ce qui devrait être ajouté à la fonction de démarrage. J'ai essayé tellement de choses qui ne fonctionnent pas.
Je tiens à vous remercier d'avance. Je ne peux pas vous aider.
Quelque chose comme ça, je suppose.
SZY Le bouton d'insertion de code "SRC" est peu pratique à utiliser, il n'est pas facile à lire.
L'énigme est la suivante.
L'indicateur à la toute fin du code crée un objet, qui sert d'indicateur pour un autre indicateur.
Après avoir créé l'objet, j'ai besoin de mettre l'indicateur en veille pendant 5 secondes, puis de supprimer l'objet et de le mettre en veille pendant 60 secondes, après quoi il ira à la dernière tentative et recommencera depuis le début avec un nouveau tick.
J'essaie de faire ça
Il se suspend jusqu'à ce qu'il semble manquer de temps.
Des conseils sur la manière de procéder ?
La logique est la suivante : les deux indicateurs connaissent le nom de l'objet et un objet supplémentaire.
la première crée l'objet et ne fait rien tant qu'il est là - au tout début du démarrage, nous écrivons la condition de sortie (return ;)
le second lit l'objet, fait son travail et définit un objet supplémentaire
le premier, sans voir l'objet principal, part sans rien faire et trouve immédiatement le second (objet supplémentaire), lit l'heure de création de l'objet (elle est inscrite là par le second composant dans la description lors de la création), décompte la pause nécessaire (60 secondes) et supprime tous les objets - vous pouvez continuer à travailler .....
Il ne fonctionne pas dans les indicateurs. Je ne comprends pas la raison de procéder de cette façon. Apparemment, un indicateur qui fonctionne en permanence doit être hypnotisant :)
La raison en est que l'indicateur fonctionne dans le flux de l'interface, vous ne pouvez pas le mettre en veille, car si vous pouviez le "ralentir", à ce moment-là vous ne pourriez pas appuyer sur un bouton du terminal, par exemple "Nouvel ordre", ou fermer un ordre, etc.
Une autre subtilité dans ce sujet concerne le testeur. Dans le terminal réel, il y a plusieurs threads, un thread d'interface est créé séparément pour les Expert Advisors (c'est pourquoi il peut être ralenti sans conséquences) et dans le testeur, c'est le même pour tous, et tous pour un :)
C'est pourquoi la fonction Sleep() fonctionne de manière si spécifique en mode test. Si vous mettez en sommeil le flux du testeur, tout cessera de fonctionner, y compris les conseillers experts, les indicateurs et la génération de tics, bien sûr. Par conséquent, si j'ai bien compris votre idée, elle ne peut être testée que sur une démo. Si vous voulez ralentir le flux de l'interface, vous pouvez utiliser la fonction suivante :
compte à rebours de la pause souhaitée (60 sec)
Lisez attentivement, j'ai tout expliqué, et il n'est pas du tout nécessaire d'utiliser un objet graphique, vous pouvez le faire avec les globaux.....
La raison est que l'indicateur fonctionne dans le flux d'interface, il ne peut pas être mis en veille...
Et voilà... maintenant ça s'est éclairci, merci.
Mec, quelles pierres. On ne peut pas le mettre dans un indicateur, on ne peut pas le mettre en veilleuse... Je vais essayer de le faire avec des variables globales.
Lisez attentivement, j'ai tout expliqué, et il n'est pas du tout nécessaire d'utiliser un objet graphique, vous pouvez le faire avec les globaux.....
... Je vais essayer de le faire fonctionner avec des variables globales.
Je pense que Rustam y a fait allusion correctement, car le gel des threads est la dernière chose à faire, c'est une mesure extrême, et pas seulement dans MQL, mais dans tous les langages de programmation.