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

 
Valeriy Yastremskiy:

Je ne comprends pas, comment puis-je suivre le moment où une position est fermée, autrement qu'en interrogeant l'état de la position à chaque tick ? Bien sûr, toutes les positions ne sont pas interrogées, mais il y a quand même une interrogation sur chaque tique.

Étudiez attentivement la documentation.

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
При обрабокте транзакций типа TRADE_TRANSACTION_REQUEST для получения дополнительной информации необходимо анализировать второй и третий параметры функции OnTradeTransaction() – Отправка торгового запроса на покупку приводит к цепи торговых транзакций, которые совершаются на торговом счете: 1) запрос  принимается на обработку, 2) далее для...
 
Yevhenii Levchenko:
Il n'est pas vérifié à chaque tique. S'il y a un signal, il commence à vérifier et ouvre une transaction. C'est tout :)

Dans le MQL4, à défaut d'un cuisinier, c'est le concierge. La question portait sur le mql5

 
Alexey Viktorov:

Étudiez attentivement la documentation.

Merci. Si nous remplaçons l'ordre par une commande, c'est plus facile à comprendre. Je n'ai pas vu que l'exécution de l'ordre soit une affaire. En général, il est difficile à écrire et à mettre en œuvre.))))
Mais oui. Il n'y a pas deOnTradeTransaction() dans mt4.
 
Valeriy Yastremskiy:
Merci. Si l'ordre est remplacé par un ordre, il est plus facile à comprendre. Je n'ai pas vu que l'exécution d'une commande-ordre est une transaction. En somme, c'est compliqué à écrire et à mettre en œuvre.))
Comme c'est le cas, oui. Il n'y a pas deOnTradeTransaction() dans mt4.

Vous feriez mieux d'essayer d'accepter la terminologie que vous avez et de ne pas y substituer la vôtre. Vous vous y habituerez avec le temps, et vous le comprendrez en fonction de la langue que vous utilisez. Au contraire, dans MT4, il est préférable d'appeler un ordre de marché une position. C'est ainsi que beaucoup de gens le comprennent.

 
Alexey Viktorov:

Vous feriez mieux d'essayer d'accepter la terminologie telle qu'elle est, plutôt que d'y substituer la vôtre. Avec le temps, vous vous y habituerez et vous comprendrez selon la langue dont il s'agit. Et vice versa, dans MT4, un ordre de marché est plutôt appelé position. C'est ainsi que beaucoup de gens le comprennent.

Comprendre les mystères)))) take profit et stop loss sont des ordres. Les ordres seraient plus clairs. La confusion vient de mt4 où un ordre est un ordre, une transaction et une position. C'est pourquoi je dis ordre dans mt5 et signifie ordres)
 

comment initialiser une telle structure ?

struct Data
  {
   double            open[];
   double            high[];
   double            low[];
   double            close[];
  };

   Data rates[5]= {0.0,0.0,0.0,0.0}; //ошибка
 
Fast235:

comment initialiser une telle structure ?

4 à 5. Je ne connais pas la syntaxe. Il semble qu'il devrait être dans un tableau à 2 dimensions par logique.
 
Fast235:

comment initialiser une telle structure ?

pas possible (seulement chaque champ de la structure un par un)

vous devez définir la taille des tableaux, vous pouvez écrire un constructeur pour cela, mais il y aura un problème - la syntaxe ne vous permettra pas de créer un tableau de structures avec un constructeur.

solution - utiliser une classe au lieu de la structure et utiliser des pointeurs, vous pouvez initialiser les tailles des tableaux dans le constructeur de la classe, et les données peuvent être copiées dedans


Valeriy Yastremskiy:
4 à 5. Je ne connais pas la syntaxe. Il devrait être dans le tableau à 2 dimensions par logique.
struct S
  {
   int a;
   double b;
  };

//+------------------------------------------------------------------+
void OnStart()
{
   S s[2] = {{1, 1.1},{9, 9.9}};
   ArrayPrint(s);
}
//+------------------------------------------------------------------+

2020.09.23 08:27:09.554 tst (EURUSD,H1) [a] [b]

2020.09.23 08:27:09.554 tst (EURUSD,H1) [0] 1 1.10000

2020.09.23 08:27:09.554 tst (EURUSD,H1) [1] 9 9.90000

 
Fast235:

comment initialiser une telle structure ?

   Data rates[5]= {0.0,0.0,0.0,0.0}; //ошибка

Initialiser et annuler sont des concepts différents. Si la mise à zéro, à en juger par vos tentatives, est comme ceci...

  ZeroMemory(rates);
 
Igor Makanu:

pas possible (seulement chaque champ de la structure un par un)

vous devez définir la taille des tableaux, vous pouvez écrire un constructeur pour cela, mais il y aura un problème - la syntaxe ne permettra pas de créer un tableau de structures avec le constructeur

solution - utiliser une classe au lieu d'une structure et utiliser des pointeurs, alors vous pouvez dans le constructeur de la classe initialiser les tailles des tableaux, et les données peuvent être copiées dedans


2020.09.23 08:27:09.554 tst (EURUSD,H1) [a] [b]

2020.09.23 08:27:09.554 tst (EURUSD,H1) [0] 1 1.10000

2020.09.23 08:27:09.554 tst (EURUSD,H1) [1] 9 9.90000

Merci. Parenthèses)))) pas de syntaxe de tableau)