Caractéristiques du langage mql5, subtilités et techniques - page 191

 
template <typename T>
void func(const T &IntOrArray) {} 

void OnStart()
{
  int a=0;
  char b[3]={};
  func(a);
  func(b);	//'b' - parameter conversion not allowed
}

Est-ce un bug ou une puce qui provoque cette erreur ?

Le C++ s'en accommode très bien. Et les tableaux dans MQL ont leurs propres tableaux. Ainsi, certains std::array pourraient être gérés par cette construction également.

 
traveller00:

Le fait qu'il jette cette erreur est un bug ou une anomalie ?

Pas un bug. Une surcharge de modèles ne peut qu'aider.

 

Existe-t-il un moyen de savoir rapidement s'il n'y a pas d'historique pour un instrument (que ce soit localement ou sur le serveur) ?

Toute requête CopyXXX attend 30 secondes pour récupérer les données, et cela prend un temps déraisonnable pour parcourir un grand nombre d'instruments.

Pour certains outils, il est utile de vérifier s'il existe un Bid (il est vide), mais pas pour tous les outils.

Vous pouvez le vérifier sur ICMarkets-MT5, outilWheat_U0.

 
Andrey Khatimlianskii:

Existe-t-il un moyen de savoir rapidement s'il n'y a pas d'historique pour un instrument (que ce soit localement ou sur le serveur) ?

Toute requête CopyXXX attend 30 secondes pour récupérer les données, et cela prend un temps déraisonnable pour parcourir un grand nombre d'instruments.

Pour certains outils, il est utile de vérifier s'il existe un Bid (il est vide), mais pas pour tous les outils.

Vous pouvez le vérifier sur ICMarkets-MT5, instrumentWheat_U0.

Cela a déjà été écrit de nombreuses fois à ce sujet et voici la première chose que j'ai trouvée https://www.mql5.com/ru/forum/285631/page35#comment_9431199.

Alternativement, ces symboles ont Ask et Bid == 0.

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.11.20
  • www.mql5.com
26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

Existe-t-il un moyen de savoir rapidement s'il n'y a pas d'historique pour un instrument (que ce soit localement ou sur le serveur) ?

Toute requête CopyXXX attend 30 secondes pour récupérer les données, et cela prend un temps déraisonnable pour parcourir un grand nombre d'instruments.

Pour certains outils, il est utile de vérifier s'il existe un Bid (il est vide), mais pas pour tous les outils.

Vous pouvez le vérifier sur ICMarkets-MT5, instrumentWheat_U0.

dans l'indicateur n'attendra pas le résultat de CopyXXX

comme option dans le timer de l'indicateur pour traiter CopyXXX et appeler cet indicateur depuis EA

 
Vladimir Pastushak:

Ce sujet a été abordé plus d'une fois, et c'est le premier que j'ai trouvé sur https://www.mql5.com/ru/forum/285631/page35#comment_9431199.

Comme variante de ces symboles Ask et Bid == 0

Environ zéro Bid écrit en une fois, parfois ce n'est pas zéro.


Igor Makanu:

dans l'indicateur n'attendra pas le résultat de CopyXXX

une variante de timer dans l'indicateur pour traiter CopyXXX et appeler cet indicateur depuis EA

Ça, c'est une idée ! Merci, je vais l'essayer.

 
fxsaber:

La raison pour laquelle cela se produit. Après le premier envoi d'ordre, un ordre au marché apparaît et si un nouveau tick arrive avant son exécution, il n'y a pas encore de position et le deuxième envoi d'ordre est effectué.

De ce fait, un modèle MT5 apparemment normalne fonctionnera pas correctement et, par conséquent, la plupart des conseillers experts MT5 de la base de code. Dans le même temps, le modèle MT4, presque identique, continuera à fonctionner sans aucun problème.

L'idée apparemment bonne de PositionsTotal est quelque peu éclipsée par la nécessité, dans MT5, d'analyser également OrdersTotal pour les ordres au marché.

Faites attention !

Merci de l'avoir souligné. C'est ce que j'avais en tête. Mais maintenant que j'en suis arrivé au point d'écrire un EA, je me suis demandé s'il était judicieux de vérifier les requêtes envoyées au serveur. Hypothétiquement, vous l'avez décrit correctement, mais en fait le serveur répond rapidement aux demandes, et une telle condition ne se produira pas dans la plupart des cas (99%, je pense). Mais la vitesse de l'algorithme en souffrira à chaque fois. Lequel est le plus important, selon vous ?
 
Vasiliy_Saharov:
Merci de l'avoir souligné. Je l'avais en tête. Mais j'en suis venu à écrire un conseiller expert et je me suis demandé s'il était utile de vérifier les demandes envoyées à un serveur. Hypothétiquement, vous l'avez décrit correctement, mais en fait le serveur répond rapidement aux demandes, et une telle condition ne se produira pas dans la plupart des cas (99%, je pense). Mais la vitesse de l'algorithme en souffrira à chaque fois. Lequel est le plus important, selon vous ?

Entrez une fois sur le marché avec 2 lots au lieu de 0,1, et la réponse est immédiatement évidente).

 
Andrey Khatimlianskii:

Entrez une fois sur le marché avec 2 lots au lieu de 0,1, et la réponse est immédiatement évidente).

Si vous avez un algorithme pour faire 0,1 lot, alors il y a une probabilité de faire 0,1 deux fois, et comme je pense que cette probabilité tend vers zéro, et trois fois, je pense que c'est impossible. Encore moins 20 fois. Après tout, nous parlons d'applications. En règle générale, le serveur répond probablement dans la limite de 10minsec (est-ce exact ? Je n'en suis pas sûr). Quelle est la probabilité de saisir une deuxième transaction, à votre avis ? Faites-vous ce contrôle vous-même ? Est-il possible que le serveur mette du temps à répondre ?
 
Vasiliy_Saharov:
Si vous avez un algorithme pour conclure 0,1 lot, alors il y a une probabilité de le faire deux fois pour 0,1, et comme je pense que cette probabilité tend vers zéro, et trois fois, je pense que c'est impossible. Encore moins 20 fois. Après tout, nous parlons d'applications. En règle générale, le serveur répond probablement dans la limite de 10minsec (est-ce exact ? Je n'en suis pas sûr). Quelle est la probabilité de saisir une deuxième transaction, à votre avis ? Faites-vous ce contrôle vous-même ? Est-il possible que le serveur mette beaucoup de temps à répondre ?

D'après les statistiques : environ 200 à 300 transactions par jour. Même avec des contrôles normaux, mais sans contrôles vraiment délicats, en moyenne 2 à 3 fois par semaine j'ai attrapé une ouverture de lot double. Calculez la probabilité et évaluez si vous avez besoin ou êtes prêt à accepter cette probabilité. Personnellement, j'ai fait mes chèques au maximum.