Questions des débutants MQL5 MT5 MetaTrader 5 - page 1051

 
secret:

Merci pour la réponse, j'ai regardé à la fois la documentation et votre exemple, mais je n'ai toujours pas trouvé comment obtenir un paramètre similaire à OrderClosePrice() dans MT4.

Si ENUM_DEAL_ENTRY ==DEAL_ENTRY_OUT && ENUM_DEAL_TYPE == DEAL_TYPE_SELL --- cela signifie que la position BUY a été fermée et donc queDEAL_PRICE est le prix de clôture.

 
secret:

Merci pour la réponse, j'ai regardé à la fois la documentation et votre exemple, mais je n'ai toujours pas trouvé comment obtenir un paramètre similaire à OrderClosePrice() dans MT4.

Il n'y a pas d'analogie directe. Le poste consiste en des échanges. Si vous voulez des données exactes pour une position, vous devez d'abord assembler la position à partir de l'historique des transactions.

Il est donc préférable de travailler avec le concept de "deal".


En général, la mise en œuvre dépend beaucoup de la réponse à la question : "Pourquoi ?". C'est-à-dire qu'il faut d'abord décrire exactement ce que vous voulez et pourquoi.

 
secret:

Comment puis-je obtenir le prix de clôture d'un ordre (transaction, position - tout ce que vous voulez) ?

J'ai cherché sur le forum, je ne l'ai pas trouvé.

https://www.mql5.com/ru/forum/162461

Как определить последнюю цену закрытия ордера (MQL5)?
Как определить последнюю цену закрытия ордера (MQL5)?
  • 2016.12.05
  • www.mql5.com
Подскажите как определить последнюю цену закрытия ордера (MQL5)? В MQL4 было просто OrderClosePrice...
 
Igor Makanu:

alternativement ouvrirhttps://www.mql5.com/ru/code/16006

et regardez l'implémentation de @fxsaber

Il n'est pas réaliste d'arracher l'implémentation à partir de là, car elle est fortement dépendante de toutes les autres parties de la bibliothèque.

 

Mes amis, veuillez m'indiquer comment résoudre un problème apparemment simple. Un morceau de code :

double stavkariska;

//ставка риска по инструментам

if(StringCompare(_Symbol,"VTBR")==0||StringCompare(_Symbol,"LKOH")==0)

   {double stavkariska=0.3;}

else double stavkariska=1;

  int lot=int (depozit/(d*stoimkontr)*stavkariska); 

Avertissement du compilateur :

la déclaration de 'stavkariska' cache la déclaration locale à la ligne 25 script.mq5 32 12

utilisation possible d'une variable non initialisée 'stavkariska' script.mq5 33 39

Quelle est la bonne façon de résoudre ce problème, de manière à ce qu'il compile sans aucun avertissement ?


Компиляция - Разработка программ - MetaTrader 5
Компиляция - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
 
TrueSam:

Mes amis, veuillez me conseiller sur la façon de résoudre un problème apparemment simple. Un morceau de code :

Avertissement du compilateur :

la déclaration de 'stavkariska' cache la déclaration locale à la ligne 25 script.mq5 32 12

utilisation possible d'une variable non initialisée 'stavkariska' script.mq5 33 39

Comment résoudre le problème correctement, pour qu'il compile sans aucun avertissement ?


Faites appel à un traducteur :

декларация 'stavkariska' скрывает локальную декларацию в строке 25 скрипт.mq5 32 12

возможно использование неинициализированной переменной 'stavkariska' скрипт.mq5 33 39


En d'autres termes, déclarez les variables plus soigneusement - évitez de déclarer les mêmes variables dans la même portée.

Lorsque vous déclarez une variable , prenez l'habitude de l'initialiser immédiatement.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);
 
Vladimir Karputov:

Faites appel au traducteur :


En d'autres termes, déclarez les variables plus soigneusement - évitez de déclarer les mêmes variables dans la même portée.

Lorsque vous déclarez une variable , prenez l'habitude de l'initialiser immédiatement.

Le problème est que si je déclare une autre variable dans l'instruction If else, j'ai besoin de la déclarer à nouveau, sinon l'erreur "'stavkariska1' - undeclared identifier". Un cercle vicieux pour un débutant. Peut-être existe-t-il d'autres façons de mettre en œuvre la sélection ?
 
TrueSam:
Le truc, c'est qu'en déclarant une autre variable dans l'opérateur If else, j'ai besoin de la déclarer à nouveau, sinon l'erreur "'stavkariska1' - undeclared identifier". Un cercle vicieux pour un débutant. Peut-être existe-t-il d'autres façons de mettre en œuvre la sélection ?

Le petit robot a aussi fait une erreur en vitesse.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double  StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);

Celui qui est mis en évidence est inutile. Sans nouvelle déclaration, il devrait fonctionner comme il se doit.

 
Alexey Viktorov:

Le petit crabier a aussi fait une erreur dans sa hâte.

Celui qui est mis en évidence est redondant. Sans la ré-annonce, il devrait fonctionner comme il se doit.

Merci de votre attention. Je suis désolé, j'ai tapé directement dans mon navigateur en utilisant le copier-coller.

 
Alexey Viktorov:

Le petit crabier a aussi fait une erreur dans sa précipitation.

Celui qui est mis en évidence est redondant. Sans une nouvelle annonce, il devrait fonctionner comme il se doit.

Merci beaucoup ! Le graal fonctionne :)