[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 515

 
Noterday:
Mec, je ne comprends toujours pas comment faire. J'ai besoin que le code avec la suppression et la fermeture des ordres soit déclenché uniquement au prochain chandelier. Mais d'autres chandeliers devraient s'ouvrir sur celui-ci aussi. Cela signifie que le programme va à nouveau s'engager dans la suppression. Une sorte de drapeau est nécessaire mais mon cerveau est déjà en train de transpirer pour comprendre comment le faire :)

Lisez attentivement la fonction OrderSend(). Il dispose d'un paramètre pour les ordres en attente :

expiration - Срок истечения отложенного ордера.

Si vous ouvrez un ordre en attente au début du jour actuel = iTime (Symbol(), PERIOD_D1, 0), ajoutez un jour supplémentaire à ce temps - 1440 * 60. Si les ordres en attente ne sont pas déclenchés, ils seront supprimés d'eux-mêmes au début du jour suivant.

P.S. La fin de la barre actuelle peut également être contrôlée par la fonction iBarShift() :

    if (iBarShift (Symbol(), PERIOD_D1, OrderOpenTime()) == 0) return(0);

ou tout autre "mouvement du corps" sur cette condition en traçant le OrderTicket() de la dernière commande.

 
TarasBY:

Lisez attentivement la fonction OrderSend(). Il possède un paramètre pour les ordres en attente :

Si vous ouvrez un ordre en attente au début du jour actuel = iTime (Symbol(), PERIOD_D1, 0), vous ajoutez à ce temps un jour supplémentaire - 1440 * 60. Les ordres en attente qui ne sont pas déclenchés sont automatiquement supprimés au début du jour suivant.


Je l'ai lu, mon DC ne semble pas le soutenir.
 
Noterday:
Je l'ai lu, le DC ne semble pas le soutenir.
Est-ce que ça existe ?
 
Eh bien, je suppose que oui, ou peut-être que c'est juste un problème avec mon terminal. J'ai déjà dit dans un fil voisin que je ne sauvegardais pas non plus les rapports de l'onglet HISTORIQUE du compte...
 
Noterday:
Eh bien, je suppose que oui, ou peut-être que c'est juste un problème avec mon terminal. J'ai déjà dit dans un fil voisin que je ne sauvegardais pas non plus les rapports de l'onglet HISTORIQUE du compte...
Bizarrement, moi non plus, bien que ma carrure soit la 416. Bien que le terminal n'ait rien à voir avec la suppression d'un ordre en attente qui n'a pas fonctionné lorsqu'il a expiré - il s'agit d'une compétence du serveur de la société de courtage.
 
hoz:

Honnêtement, je suis déjà complètement perdue. Je n'ai même pas d'exemples pour voir comment les autres s'y prennent.

J'ai cru comprendre qu'en plus de récupérer les valeurs, vous devez les affecter à d'autres variables ?


Je n'ai pas besoin de l'essentiel. Je suis bien conscient de la visibilité variable. Il n'y a rien dans le manuel sur le passage des valeurs des variables par référence. Pourquoi m'envoyez-vous là-bas ? Tu te moques de moi ?


Non, je ne le suis pas. Votre opinion sur votre connaissance du champ d'application est grandement exagérée. Ce n'est pas pour vous insulter, il est juste évident que vous ne maîtrisez pas les bases.

J'ai un peu de temps, alors je vais essayer "sur mes doigts" : Vous avez décrit des variables à l'intérieur d'une fonction - c'est là qu'elles existent. La fonction a terminé son travail et la mémoire allouée aux variables est libérée. Puis la référence à ce que vous utilisez en dehors de la portée des variables? Il ne peut y avoir aucun "déchet" à cette adresse. Nous ne pouvons que nous réjouir que les développeurs aient eu la clairvoyance d'exclure l'arithmétique d'adresse. Le résultat de la fonction, si nous devons le transmettre à l'extérieur, est toujours transmis par valeur, et non par référence (c'est-à-dire que nous transmettons la valeur elle-même, et non l'adresse de la cellule de mémoire où la valeur est stockée). Il y a, bien sûr, des exceptions, mais pas pour µl4 (sauf lorsqu'on travaille avec des tableaux). Alors, relisez-le - ça ne fera pas de mal.

 
VladislavVG:

On ne peut que se réjouir de la clairvoyance des développeurs qui ont éliminé l'arithmétique des adresses.

Mais il est là, même s'il n'est pas décrit...
 
valenok2003:


Et les tableaux ?


Avec les tableaux, ce n'est pas difficile : généralement, un tableau en tant que paramètre est passé par référence de l'extérieur - à l'intérieur de la fonction, vous le traitez à l'intérieur de la fonction et n'avez pas besoin de retourner quoi que ce soit - le résultat est obtenu immédiatement. La nécessité de retourner la référence (ou l'adresse) peut survenir si vous allouez dynamiquement de la mémoire pour le tableau dans une fonction, et que vous décrivez le tableau lui-même à cet endroit. Ensuite, afin d'utiliser ce tableau en dehors de la fonction, vous devez passer l'adresse de la zone mémoire allouée à l'extérieur.

Ça semble plus effrayant que ça ne l'est. Si ce n'est pas clair, je peux vous donner quelques exemples.

 
VladislavVG:


Ce n'est pas compliqué avec les tableaux : généralement, un tableau en tant que paramètre est passé par référence de l'extérieur - à l'intérieur de la fonction, vous le traitez à l'intérieur de la fonction et n'avez pas besoin de retourner quoi que ce soit - le résultat est obtenu immédiatement. La nécessité de retourner la référence (ou l'adresse) peut survenir si vous allouez dynamiquement de la mémoire pour le tableau dans une fonction, et que vous décrivez le tableau lui-même à cet endroit. Ensuite, afin d'utiliser ce tableau en dehors de la fonction, vous devez passer l'adresse de la zone mémoire allouée à l'extérieur.

Ça semble plus effrayant que ça ne l'est. Si vous ne comprenez pas, je peux vous donner quelques exemples.



merci, c'est clair. c'est-à-dire que si une variable ou un tableau est décrit à un niveau supérieur, vous pouvez faire référence à son adresse dans les deux sens autant que vous le souhaitez.
 
valenok2003:


merci, c'était clair, c'est à dire que si une variable ou un tableau est décrit à un niveau supérieur, vous pouvez faire référence à son adresse dans les deux sens autant que vous le souhaitez.

Bien.