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

 
BeerGod:

De cette façon, il sélectionne les ordres en fonction de paramètres donnés.

Par exemple, https://www.mql5.com/ru/forum/131859/page3#434221

Fonction NumberOfPositions().

Cette fonction renvoie le nombre de positions ouvertes à ce moment. Une sélection plus précise des positions à compter est spécifiée par des paramètres externes :

  • sy - Nom de l'instrument de marché. Si ce paramètre est défini, la fonction ne prendra en compte que les positions de l'instrument spécifié. La valeur par défaut "" signifie tout instrument de marché. NULL signifie l'instrument actuel.
  • op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
  • mn - Identificateur de position, MagicNumber. La valeur par défaut -1 signifie n'importe quel identifiant.


Merci... Je vais ajouter ce fil de discussion du forum à mes signets. :))
 
Desead:


La fonction deinit est appelée lorsque je supprime le robot du graphique - je ne peux pas suivre cette condition d'une autre manière..... , il est probablement plus facile d'écrire un script distinct qui supprime tous les pendentifs restants.

Au fait, une autre réflexion sur ce sujet :

Je semble avoir résolu le problème de la suppression des commandes. J'ai calculé le nombre d'ordres "nécessaires" (à enlever) dans une fonction séparée, j'ai appelé cette fonction et ensuite while avec une condition (Total>0), puis le cycle d'enlèvement for(int i=Total-1;i<=0l ; i--), en calculant à nouveau le nombre d'ordres "nécessaires", compteur de tentatives d'enlèvement avec une sortie dewhile lorsque le niveau donné est atteint. De cette façon, tout est supprimé.

Une boucle infinie peut se produire ici si l'un des ordres disparaît après le moment du comptage pour une raison quelconque.


Le comptage des commandes est effectué à chaque fois que la boucle for sur la suppression d'une commande est terminée, le compteur itère pendant que avec la sortie de la boucle parbreak, lorsque le compteur atteint la valeur que vous spécifiez dans la variable externe, vous pouvez ajouter la gestion d'erreur avant la sortie et sortir le résultat par
Alerte(...)
ou
Imprimer( ...)
Et comme quelqu'un m'a conseillé d'ajouter une vérification pour la résolution du commerce. Il n'y a donc aucun moyen de faire une boucle ici.


 
Dimka-novitsek:

Bonne journée ! !! Je ne peux pas trouver une jolie solution à la situation. Voici un cadre de commande typique. Mais si je donne zéro à mon robot dans les paramètres, c'est-à-dire pas de stops et de takeprofits, rien ne fonctionnera.

Nous pouvons également définir un if et saisir un ordre avec des zéros pour la deuxième fois, mais c'est un peu lourd.

Tout est mûr - au niveau de l'art ! !! ;)

Et sérieusement - apprenez à réfléchir à ce que vous venez d'écrire. Aux valeurs nulles des STOPP selon votre formule, le stoploss et le take profit sont égaux au prix d'ouverture d'un ordre, ce qui est IMPOSSIBLE. Avez-vous d'autres solutions (pouvez-vous utiliser votre cerveau? :)) ?

 
Dimka-novitsek:

Bonne journée ! !! Je ne peux pas trouver une jolie solution à la situation. Voici un cadre de commande typique. Mais si je donne zéro à mon robot dans les paramètres, c'est-à-dire pas de stops et de takeprofits, rien ne fonctionnera.

Nous pouvons également définir un if et saisir un ordre avec des zéros pour la deuxième fois, mais c'est un peu lourd.



if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0; 
 
rigonich:


... vous perdez votre temps (vous ne laissez aucune chance à l'homme) : si un homme ne stimule pas sa matière grise, il passera toute sa vie "sous le porche" - "Donnez-moi un indice, pour l'amour du ciel !". :)))
 
BeerGod:

De cette façon, il sélectionne les ordres en fonction de paramètres donnés.

Par exemple, https://www.mql5.com/ru/forum/131859/page3#434221

Fonction NumberOfPositions().

Cette fonction renvoie le nombre de positions ouvertes à ce moment. Une sélection plus précise des positions à compter est spécifiée par des paramètres externes :

  • sy - Nom de l'instrument de marché. Si ce paramètre est défini, la fonction ne prendra en compte que les positions de l'instrument spécifié. La valeur par défaut "" signifie tout instrument de marché. NULL signifie l'instrument actuel.
  • op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut de -1 signifie une position quelconque.
  • mn - Identificateur de position, MagicNumber. La valeur par défaut de -1 signifie n'importe quel identifiant.


regardé

Fonction ModifyOrder(). https://forum.mql4.com/ru/38949#434195

il y a 3 paramètres qui doivent être saisis. J'en ai deviné deux, mais pas le troisième.

qu'est-ce que UseSound sur la ligne suivante ?

----------------------------------------------------

if (UseSound) PlaySound("alert.wav") ; break ;

 
lottamer:


J'aurais laissé faire - j'ai une position et un outil.

Mais ça ne marche pas !

Il y a une erreur dans le code.

à ça.

---------------------------

int start()

{

//----

si OrdersTotal()>0

PlaySound ("alert.wav") ;

//----

retour(0) ;

}

-----------------------------

donne 8 erreurs !!!


Mettez la condition (celle qui suit if) entre parenthèses.
 
TarasBY:

Vous avez tout mûri - au niveau de l'art ! !! ;)

Et sérieusement - apprenez à réfléchir à ce que vous venez d'écrire. Si nous définissons zéro STOPP selon votre formule, le stop loss et le take profit sont égaux au prix d'ouverture d'un ordre, ce qui est INACCEPTABLE. Avez-vous d'autres solutions (pouvez-vous utiliser votre cerveau? :)) ?


:))) oops, puis-je également clarifier le point suivant dans "paneuropéen" ?

Quelle est la différence entre les fonctions start et void ?

 
TarasBY:

...vous avez tort : si la matière grise d'une personne n'est pas stimulée, elle passera toute sa vie "sur le porche" - "Aidez-moi, pour l'amour du Christ !". :)))


Vous avez probablement raison, mais c'est ma philosophie de vie : si cela ne vous dérange pas trop, aidez les autres et ils vous aideront quand vous en aurez besoin. À 55 ans, il est difficile de changer les habitudes.

P.S. C'est aussi comme ça que j'apprends.

 
lottamer:


:))) oops, puis-je également clarifier le point suivant dans "pananamic" ?

quelle est la différence entre les fonctions start et void ?

Vous vous êtes attaqué à quelque chose que personne n'a encore réussi : "RAPPELER LE DOIGT AVEC LAGRANDE TÊTE À LAQUELLE IL EST AIDE" !!!! :)))

la première est une fonction et la seconde est le type de valeur qu'elle renvoie.

P.S. Soyez patient et lisez-le.