Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 40

 
trader781:

Corriger

Iln'y a pas d'autre moyen de le mettre ailleurs, ce seront des paramètres erronés.

Il doit prendre en compte le plus récent.

Je vais essayer de le changer.

J'ai essayé d'utiliser la méthode standard OrderModify() mais elle est interdite si je déplace beaucoup d'ordres simultanément et constamment.

Merci pour la critique.

Déclarez-le SANS ARGUMENT, est-ce vraiment si difficile ?

int Counts()
{код функции}

Et appelez un vide aussi, et mettez l'elza hors de là derrière des crochets frisés :

if(Counts()==0){че там нужно когда нет ордеров}
else {когда есть ордера}

Et maintenant vous avez ça :

if(Counts()==0){че там нужно когда else {когда есть ордера} нет ордеров}
 
Alekseu Fedotov:

Essayez-le ^_~



Ça ne marche pas... Il n'y a toujours pas d'accord.
 
Movlat Baghiyev:
Ça ne marche pas... Pas d'échanges, pas d'échanges...

Est-ce qu'il affiche au moins les ordres en attente, non, quelles sont les erreurs ?

...je l'ai réparé.

Dossiers :
0.mq4  8 kb
 
Fini les arguments. Le terminal est bien accroché.
Dossiers :
count.mq4  19 kb
 
trader781:
Arguments terminés. Le terminal est bien accroché.

Donc une sorte de boucle se balade sans fin.

Écrire #property strict au début du code et le corriger, beaucoup d'avertissements.

Il est tout à fait possible de diviser par 0 dans la dernière fonction.

Après quoi, seule la première ligne sera exécutée, le bloc d'accolades étant laissé orphelin.

En général, il faut d'abord écrire la logique sur papier avec des mots, sinon c'est bancal.

 
Vitalie Postolache:


Il est censé exécuter une commande avec un point décimal flottant en fonction des décimales du graphique.

NormalizeDouble(Ask+TakeProfit*Point(),Digits)

et comment avez-vous vu que certaines lignes n'étaient pas exécutées ?

 
trader781:

Il est censé exécuter une commande avec un point décimal flottant en fonction des décimales du graphique.

NormalizeDouble(Ask+TakeProfit*Point(),Digits)

Comment savez-vous que certaines lignes ne sont pas exécutées ?

Yep. J'ai de gros problèmes avec la logique. Et que resterait-il du résultat s'il est écrit dans une variable entière ? Quel est l'intérêt de ce code ?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

Ici, est-il si difficile de comprendre qu'une partie du code est orpheline et sera exécutée indépendamment de la condition ?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код-сирота
}
 
Vitalie Postolache:

Oui, c'est un gros problème de logique. Et que reste-t-il du résultat s'il est écrit dans une variable entière ? Quel est l'intérêt de ce code ?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

Est-il si difficile de comprendre qu'une partie du code est orpheline et ne sera pas exécutée ?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код, который никуда не идёт, сирота
}

Stop

s'il y a des commandes

Le type de commande est

{

les opérations sont alors exécutées pour ce type d'ordre

}

pas ?

Je n'arrive pas à comprendre d'où vient la division par zéro.
 
trader781:

Stop

s'il y a des commandes

est le type de commande

{

alors les opérations sont exécutées pour ce type d'ordre

}

Non ?

Oui, vous avez raison, c'est juste que le code est écrit dans un tel style que l'intervenant précédent l'a mal interprété.

Ajouté :zero divide est une division par zéro, et il vous indique dans le journal quelle ligne

 
trader781:

Stop

s'il y a des commandes

est le type de commande

{

alors les opérations sont exécutées pour ce type d'ordre

}

Non ?

Corrigé ci-dessus. Ce qui vient après else est exécuté en fonction de la condition. Le bloc de parenthèses est séparé, il n'a donc rien à voir avec else.

Je n'arrive pas à comprendre d'où vient la division par zéro.

C'est là que

void ModifyOrders() //+------------модификация ввод тип
  {
   double avg_price; //+------------средняя цена
   price=0;//+------------цена
   bool z;//+------------выход в переменную
   double orderlots=0; //+------------лоты

   avg_price=NormalizeDouble(price/orderlots,Digits);//+------------то средняя ценаравна цена деленная на лот
@Vitaly Muzichenko Où est "mal interprété" ici ? Utilisez votre cerveau.