Erreurs, bugs, questions - page 624

 
ivandurak:

Erreur de chargement de fichier dans Expert Advisor. Trouvez 10 différences. Le premier code fait référence au script, le second à l'Expert Advisor, ils sont identiques Ctrl-C Ctrl-V. Le code fonctionne dans le script, il ne fonctionne pas dans l'Expert Advisor.

Pour trouver 10 différences, vous devez examiner le code d'ouverture des fichiers. (et ajouter à ce code ouvert la sortie du code d'erreur en cas d'échec)

Deuxièmement, si vous voulez tester l'EA avec ce fichier, ajoutez la ligne #property tester_file "KitMaRsi.csv" au code de l'EA.

 
Bonjour. Dans MQL4, l'erreur ERR_HISTORY_WILL_UPDATED(4066) peut se produire lors de l'exécution d'un programme. La fonction GetLastError() renvoie le code d'erreur. Avez-vous une erreur similaire dans MQL5 ? J'ai cherché icihttps://www.mql5.com/ru/docs/constants/errorswarnings/errorcodes mais je n'ai rien trouvé de semblable.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения - Документация по MQL5
 
Druide:
Bonjour. Dans MQL4, lors de l'exécution d'un programme, l'erreur ERR_HISTORY_WILL_UPDATED(4066) peut se produire, dont le code est renvoyé par la fonction GetLastError(). Avez-vous une erreur similaire dans MQL5 ? J'ai cherché icihttps://www.mql5.com/ru/docs/constants/errorswarnings/errorcodes mais je n'ai rien trouvé de semblable.

Je ne dirai rien de l'erreur. Le terminal lui-même s'assure que les données sont synchronisées, vous pouvez synchroniser (charger) les données et vérifier si l'historique est synchronisé ou non.

L'organisation de l'accès aux données est décrite ici (il y a un exemple de script de chargement d'historique).

Fonctions qui peuvent être nécessaires : SeriesInfoInteger et SymbolIsSynchronized

 
awkozlov:

L'échange avec les variables de caractères ne semble pas fonctionner...

Au lieu de :

Type - Type d'expression de commutation illégal
Acheter" - l'expression constante n'est pas intégrale


Utilisez des identifiants plutôt que du texte. Ce qui serait plus simple et plus logique...

//Что-то типа такого (или свои идентификаторы). Написать функцию конвертирующую текст в идентификатор и обратно (при необходимости) достаточно просто.
//Да и выглядит это более профессионально в конечном итоге.
  switch(type)
  {
  case ORDER_TYPE_BUY: {direction = type;  price = SymbolInfoDouble(zSymbol,SYMBOL_ASK); break;}
  case ORDER_TYPE_SELL: {direction = type; price = SymbolInfoDouble(zSymbol,SYMBOL_BID); break;}
  default: {return(lot_value);}
  }

  switch(type)
  {
  case OP_BUY: {direction = ORDER_TYPE_BUY;  price = SymbolInfoDouble(zSymbol,SYMBOL_ASK); break;}
  case OP_SELL: {direction = RDER_TYPE_SELL; price = SymbolInfoDouble(zSymbol,SYMBOL_BID); break;}
  default: {return(lot_value);}
  }
 
awkozlov:

L'échange avec les variables de caractères ne semble pas fonctionner...

Au lieu de cela :

type' - type d'expression de commutation illégal
Acheter" - l'expression constante n'est pas intégrale

Je dois le dessiner comme ça :

Ce n'est pas très clair et c'est de travers.

Il fonctionne bien dans d'autres langues.

Devrais-je l'écrire d'une autre manière ?

J'ai fait ça.

#define  OP_BUY               0
#define  OP_SELL              1
#define  OP_BUYLIMIT          2
 
Interesting:

Je ne dirai rien de l'erreur. Le terminal lui-même s'assure que les données sont synchronisées, vous pouvez synchroniser (charger) les données et vérifier si l'historique est synchronisé ou non.

L'organisation de l'accès aux données est décrite ici (il y a un exemple de script de chargement d'historique).

Fonctions qui peuvent être nécessaires : SeriesInfoInteger et SymbolIsSynchronized

Merci ! Je l'ai.
 

Existe-t-il des analogues de bibliothèques telles que stdlib.mqh, WinUser32.mqh, stderror.mqh dans MQL5, en particulier, je suis intéressé par la fonction PostMessageA ?

 

Lors d'une optimisation avec plusieurs agents, les résultats sont affichés sur le graphique dans l'ordre où ils sont traités, c'est-à-dire en alternance. Est-il possible de faire en sorte que l'ordre d'affichage des résultats dépende de la sélection des paramètres, comme c'était le cas dans MT4 ? C'est-à-dire que le résultat qui vient plus tard serait inséré dans le bon ordre. Je dis simplement qu'il n'est pas pratique de suivre les tendances et les régularités pendant l'optimisation et que les résultats ne peuvent être analysés qu'une fois les calculs effectués.

++ : Il s'agit d'optimisation avec une force brute totale - cela n'a naturellement aucun sens sur la génétique.

 
Konstantin83:

Description dans le manuel

En effet

bool ObjectCreate(
long chart_id, // identifiant du graphique
string name, // nom de l'objet
ENUM_OBJECT type, // type d'objet
intn win, // indice de la fenêtre) ;


Merci, corrigé.
 
x100intraday a écrit https://www.mql5.com/ru/forum/1111/page610#comment_130250 :

Exécutons le code de l'exemple iFractals de l'aide sur M1, qui utilise la deuxième forme - complète - de l'appel de fonction OnCalculate(). Mais avant cela, à l'intérieur de cette fonction, nous allons corriger

à

afin de ne pas perdre de vue une seule ligne avec la sortie (si nous la laissons telle quelle, visuellement 1 sera toujours visible, car les autres valeurs sont rares et immédiatement remplacées par 1, il semble donc que 1 soit toujours affiché) Après l'exécution, nous voyons que les valeurs non unitaires se produisent toutes les minutes, c'est-à-dire à chaque nouvelle barre, ce qui indique sans équivoque que l'indicateur est redessiné toutes les minutes.entièrement malgré le fait que le code utilisealgorithme économique. Les sceptiques peuvent ajouter plusieurs lignes de code, en dessinant, par exemple, des lignes verticales sur chaque fractale, puis les retirer après le premier dessin et attendre que l'ensemble complet des mêmes lignes apparaisse après une minute avec une nouvelle barre. Pour une raison quelconque, il n'est pas question de terminer la dernière fractale ou ligne.

Oui, en effet, l'indicateur de l'exemple à la fonction iFractals() rafraîchit ses tampons d'indicateur avec les valeurs de l'indicateur intégré. La deuxième condition de la ligne (surlignée en jaune) est "à blâmer" pour cela :

//--- если это первый запуск вычислений нашего индикатора или изменилось количество значений в индикаторе iFractals
//--- или если необходимо рассчитать индикатор для двух или более баров (значит что-то изменилось в истории)
   if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
     {

Explication : à chaque tick, ces deux valeurs sont comparées et il y a une affectation à la fin de la fonction.

//--- запомним количество значений в индикаторе Fractals
   bars_calculated=calculated;

Et la différence entre eux peut apparaître dans l'esprit :

  1. l'historique lui-même, sur lequel est calculé l'indicateur fractal, a changé (pagination de l'historique par l'utilisateur)
  2. apparition d'un nouvel événement de barre

Dans ce cas, la séparation des deux événements n'est pas faite, vous l'avez découvert. Je ne peux pas encore dire si nous allons corriger cet exemple afin de ne pas avoir de telles questions.