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

 

Je suis vraiment confus au sujet des ordres et des positions en attente lors de l'accès à l'historique des transactions.

Si un ordre en suspens s'est déclenché et est passé à une position et a été clôturé avec succès (transaction), comment est-il stocké dans le cache de l'historique en tant qu'ordre ou en tant que position ?

Comment l'aborder en tant que position ou en tant qu'ordre par le biais du statut ?

 
vladzeit:

Je suis vraiment confus au sujet des ordres et des positions en attente lors de l'accès à l'historique des transactions.

Si un ordre en suspens s'est déclenché et est passé à une position et a été clôturé avec succès (transaction), comment est-il stocké dans le cache de l'historique en tant qu'ordre ou en tant que position ?

Comment l'aborder en tant que position ou en tant qu'ordre par le biais du statut ?

L'étude de cette section de la documentation devrait vous aider.

D'abord un ordre, il se transforme en transaction, puis en position. Ensuite, s'il s'agit d'un compte de compensation, plus d'ordres et de transactions et, à la fin, un ordre dans la direction opposée avec un lot égal à la position existante, une transaction et aucune position. Elle est fermée et ne figure pas dans l'historique, il n'y a que des ordres et des transactions qui ont créé, modifié et fermé cette position. Mais tous sont liés à l'ID de la position.
Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть  в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
 

4758

Impossible de calculer le bénéfice ou la marge


Comment peut-on y remédier ?

 
Alexey Viktorov:

L'étude de cette section de la documentation devrait vous aider.

D'abord un ordre, il se transforme en transaction, puis en position. Ensuite, s'il s'agit d'un compte de compensation, plus d'ordres et de transactions et à la fin un ordre dans la direction opposée avec un lot égal à la position existante, à partir de là une transaction et aucune position. Elle est fermée et il n'y a pas de position dans l'historique, il n'y a que des ordres et des transactions qui ont créé, modifié et fermé cette position. Mais tous sont liés à l'ID de la position.

Alexey. J'ai lu l'abécédaire, mais vous avez tout expliqué avec vos propres mots d'une manière plus facile que ce qui y est écrit... Tout est clair et compréhensible. Merci)

 
vladzeit:

Alexey. J'ai lu l'abécédaire, mais vous avez tout expliqué avec vos propres mots d'une manière plus facile que ce qui y est écrit... Tout est clair et compréhensible. Merci)

S'il vous plaît.




Mais j'ai dit "étudier la section", pas la lire. Tout y est, mais parsemé de descriptions des différentes fonctions de cette section, il s'agit juste d'une documentation, pas d'un livre pour débutants. Il existe également d'autres articles. Il doit bien y en avoir un qui en parle.

 
Alexey Viktorov:
S'il vous plaît.




Mais j'ai dit "étudier la section", pas la lire. Tout y est, mais parsemé de descriptions des différentes fonctions de cette section, il s'agit d'une simple documentation, pas d'un abécédaire pour les débutants. Il existe également d'autres articles. Il doit bien y en avoir un qui en parle.

Vous avez raison, je devrais étudier, et pas seulement lire, ce qui a suscité l'intérêt en ce moment. Mais je suis mes émotions et mon désir d'obtenir un résultat rapide et pratique, mis en œuvre sous la forme d'un algorithme fonctionnel.

Et j'essaie d'obtenir de mql5 uniquement ce dont j'ai besoin pour résoudre cette tâche étroite... Par conséquent, j'ai beaucoup de lacunes dans mon éducation).

Je semble déjà être capable de reconnaître les lettres, mais elles ne veulent pas former de mots et de phrases).

C'est aussi difficile parce qu'il n'y a pas de manuel précis avec des exemples et des exercices, et l'aide est conçue pour ceux qui ont déjà une certaine expérience de la programmation et n'explique en fait que leur propre syntaxe.

Bien sûr, il y a beaucoup d'informations sur le forum, mais tout est très dispersé et parfois peu fiable en raison des nouveaux changements dans mql5.

J'aurais probablement dû commencer à faire connaissance avec mql4... Il y a évidemment plus de tutoriels là-bas, et ensuite, ayant reçu l'expérience de base, une idée, commencez à utiliser mql5, en étudiant ses différences.

Je le fais en partie, en cherchant des exemples dans mql4 et en essayant de les mettre en œuvre dans mql5 par analogie. Mais parfois, en raison des différences cardinales de certaines fonctions et de certains principes, cela me rend encore plus confus)))).

Apparemment, tous les autodidactes passent par là).

Ce que vous avez dit ci-dessus, je vais certainement en tenir compte, du moins je vais essayer).

 

Après avoir mis à jour le terminal, le conseiller expert a cessé de se construire.

Erreur

'INIT_FAILED' - expression not boolean  

Quel pourrait être le problème ?

//+------------------------------------------------------------------+
//| Lots or risk in percent for a deal from a free margin            |
//+------------------------------------------------------------------+
bool LotsOrRisk(const double lots,const double risk,const int digits_adjust)
  {
   if(lots<0.0 && risk<0.0)
     {
      Print(__FUNCTION__,",ERROR: Parameter(\"lots\" or \"risk\") can't be less than zero");
      return(false);
     }
   if(lots==0.0 && risk==0.0)
     {
      Print(__FUNCTION__,", ERROR: Trade is impossible: You have set \"lots\" == 0.0 and \"risk\" == 0.0");
      return(false);
     }
   if(lots>0.0 && risk>0.0)
     {
      Print(__FUNCTION__,", ERROR: Trade is impossible: You have set \"lots\" > 0.0 and \"risk\" > 0.0");
      return(false);
     }
   if(lots>0.0)
     {
      string err_text="";
      if(!CheckVolumeValue(lots,err_text))
        {
         Print(__FUNCTION__,", ERROR: ",err_text);
         return(false);
        }
     }
   else if(risk>0.0)
     {
      if(m_money!=NULL)
         delete m_money;
      m_money=new CMoneyFixedMargin;
      if(m_money!=NULL)
        {
         if(!m_money.Init(GetPointer(m_symbol),Period(),m_symbol.Point()*digits_adjust))
            return(INIT_FAILED);
         m_money.Percent(risk);
        }
      else
        {
         Print(__FUNCTION__,", ERROR: Object CMoneyFixedMargin is NULL");
         return(INIT_FAILED);
        }
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+

C'est la fonction que le compilateur jure d'utiliser.

return(INIT_FAILED);
 
ilvic:

Après avoir mis à jour le terminal, le conseiller expert a cessé de se construire.

Erreur

Quel pourrait être le problème ?

C'est la fonction que le compilateur jure d'utiliser.

La fonction LotsOrRisk() est déclarée comme un bool. Cela signifie qu'il ne peut renvoyer que vrai OU faux.

 
Juer:

Apparemment, c'est plutôt la faute de mon matériel... et mon système.

J'ai mis le système à niveau vers vin10, j'ai fait une vérification du disque avec localisation des secteurs de bits. Eh bien, je vais devoir passer au SSD je suppose.

La compilation a également pris plus de 10 minutes. Ce n'est pas normal que la compilation soit si longue...

 
Bon après-midi.
Est-il possible que l'indicateur affiche les paramètres d'entrée sur le graphique ? Peut-être existe-t-il un exemple tout prêt ?