Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1127

 
Sergey Gritsay:

Et maintenant, lisez la documentation normale de MT5, maintenant certaines des anciennes fonctions fonctionnent exactement comme il est écrit dans celle-ci, car la documentation de mt4 est dépassée et il y a beaucoup de choses qui ne sont pas encore corrigées.

GetLastError

Renvoie le contenu de la variable système_LastError.

intGetLastError() ;

Valeur retournée

Renvoie la valeur de la dernière erreur survenue pendant l'exécution du programme mql5.

Note

Après l'appel de la fonction, le contenu de la variable _LastError n'est pas effacé. La fonctionResetLastError() doit être appelée pour remettre cette variable à zéro.

Voir aussi

Codes de retour des serveurs commerciaux

Donc, encore une fois, c'est sur mql5. Et j'en ai besoin sur mql4.
 
Vitaly Muzichenko:

Je le suis depuis 1997)

Vous voyez, il y a un tick et avec lui un signal, et si vous obtenez une erreur, elle doit être traitée. Traité et interrogé à nouveau, mais avant l'interrogation vous pouvez mettre à zéro la variable avec l'erreur, puis à la prochaine interrogation s'il y a une erreur, il ira dans la variable à nouveau, mais s'il n'y a pas d'erreur, il sera "0".

Il n'est pas nécessaire de mettre la variable à zéro, mais en cas d'erreur, elle renverra une nouvelle valeur. Dans tous les cas, vous ne devriez pas vous intéresser à l'erreur que vous aviez la dernière fois au dernier tick, vous devriez traiter uniquement ce que vous avez "maintenant".

Depuis 1997, c'est du temps ! ) Probablement la seule personne qui me comprenait. Merci.
 
Evgeniy Oshurkevich:
Donc, encore une fois, c'est sur mql5. Et j'en ai besoin sur mql4.
En ce qui concerne cette fonction, cela ne fait aucune différence. Mais s'il est fondé sur des principes, alors lisez le F1.
 

Je répète ma question dans ce fil de discussion car le fil de discussion de mql5 n'a pas pu m'aider - personne ne connaît la réponse.

J'ai cette fonction et elle fonctionne dans mon Expert Advisor/Script.

double maxLot(double Percent, string symbol, ENUM_ORDER_TYPE action=ORDER_TYPE_BUY)
  {
   double One_Lot=0.0;
   double price=0.0;
   double volume=0.0;
   double MinLot=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
   double Free=AccountInfoDouble(ACCOUNT_FREEMARGIN);
   double Step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP);
   if(action==ORDER_TYPE_BUY)price=SymbolInfoDouble(symbol,SYMBOL_ASK);
   if(action==ORDER_TYPE_SELL)price=SymbolInfoDouble(symbol,SYMBOL_BID);
   if(!OrderCalcMargin(action,symbol,1.0,price,One_Lot))return(MinLot);
   if(One_Lot!=0 && Step!=0)volume = MathFloor(Free*Percent/100.0/One_Lot/Step)*Step;
   if(volume!=0)return(volume);
   return(MinLot);
  }

Question :comment obtenir le lot maximum possible dans un indicateur,OrderCalcMargin ne fonctionne pas dans un indicateur pour une raison quelconque ? J'ai essayé d'utiliserOrderCalcMargin mais cela ne fonctionne pas dans mt4.

Merci !

 

comment le faire ?

de sorte que lorsque

OnDeinit(REASON_CHARTCHANGE)

Continuer normalement sans réinitialisation (ignorez complètement cette cause, c'est un panneau d'information avec des niveaux).

 
trader781:

comment le faire ?

de sorte que lorsque

OnDeinit(REASON_CHARTCHANGE)

Continuer normalement sans réinitialisation (ignorez complètement cette cause, c'est un panneau d'information avec des niveaux).

Tu ne peux pas.
 
Vitalie Postolache:
Pas du tout.

Eh bien, il y a des moyens de contourner cela.

Je suis trop paresseux pour intégrer des niveaux dans le code de chaque outil parmi les 40 existants.

Il est plus facile de le faire automatiquement et de cliquer sur le TF avec des symboles comme vous le souhaitez.

En même temps, je cherche un moyen de spécifier les valeurs de mutilation du TF supérieur sur le TF inférieur.
 
trader781:

Eh bien, il y a des moyens de contourner cela.

Je suis trop paresseux pour intégrer des niveaux dans le code de chaque outil parmi les 40 existants.

Il est plus facile de le rendre automatique et de cliquer sur le TF avec des symboles comme vous le souhaitez.

Et en même temps, je cherche un moyen de spécifier des valeurs de mutilation pour les TF majeurs.
Les paramètres doivent être écrits dans un fichier et l'inite doit être lu. Il n'y a aucun moyen de contourner deinit, il ne demande pas la permission.
 
Vitalie Postolache:
Ecrire les paramètres dans un fichier et les lire dans l'init. Il n'y a aucun moyen de contourner deinit, il ne demande pas de permission.
Pourquoi ne pas contourner la désinitialisation en écrivant dans un fichier, si possible ? Par exemple, en cas de désinitialisation, vous pouvez lancer un démarrage avec les paramètres précédents.
 
trader781:
Pourquoi ne pas contourner la désinitialisation en écrivant dans un fichier, si possible ? Par exemple, en cas de désinitialisation, lancer une exécution avec les paramètres précédents.
N'est-ce pas ce que j'ai écrit plus haut ?