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

 

@Oleg

Demandez aux développeurs de mettre le numéro d'erreur comme dans la documentation, il n'est pas clair pourquoi il est dans la documentation et pas utilisé dans l'éditeur dans la description.

https://www.mql5.com/ru/docs/constants/errorswarnings/errorscompile

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из...
 
Alexandr Sokolov:

il suffit de spécifier l'index du tampon à attribuer lors de l'initialisation dans SetIndexBufer


Je ne suis pas bon en programmation, il n'y a pas de tampon dans le code de l'indicateur par lequel il sort les données.

 
edelweiss7:

Je ne suis pas bon en programmation, dans le code de l'indicateur il n'y a pas de tampon par lequel il sort les données.

Je n'ai pas creusé profondément dans votre code, mais je comprends qu'il dessine des niveaux


... vous avez besoin du gestionnaire OnChartEvent

https://www.mql5.com/ru/docs/event_handlers/onchartevent

surveiller la création de nouveaux objets (c'estCHARTEVENT_OBJECT_CREATE), et si le préfixe du nom est de votre indicateur - prendre les propriétés de la ligne créée (là le prix et le temps de ses points)

Документация по MQL5: Обработка событий / OnChartEvent
Документация по MQL5: Обработка событий / OnChartEvent
  • www.mql5.com
//|                                          OnChartEvent_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Alexandr Sokolov:

Je n'ai pas étudié votre code en profondeur, mais je comprends qu'il dessine des niveaux


... vous avez besoin d'un gestionnaire OnChartEvent

https://www.mql5.com/ru/docs/event_handlers/onchartevent

surveiller la création de nouveaux objets (c'estCHARTEVENT_OBJECT_CREATE), et si le préfixe du nom est de votre indicateur - prendre les propriétés de la ligne créée (prix et temps de ses points là)

Comment mettre cela en œuvre dans un EA
 

Veuillez m'aider à corriger une erreur qui apparaît dans mon journal :

MQL4 Market : échec du chargement des produits (échec de l'en-tête [12150])

 
Le gestionnaire (mt5, indictaor) traite les pressions sur les boutons de manière répétée. Quelle pourrait être la raison de cette situation ?
 
Yevhenii Levchenko:
Le gestionnaire (mt5, indictaor) traite les pressions sur les boutons de manière répétée. Quelle peut en être la raison ?

redraw - ChartRedraw()

 
Yevhenii Levchenko:
Le gestionnaire d'événements (mt5, indictaor) gère parfois les pressions sur les boutons. Quelle peut en être la raison ?

sans un exemple de schéma de la façon dont vous traitez les événements, c'est juste une dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev.

Vous pouvez également l'exécuter dans le dossier Indicateurs Examle\SimplePanel

et si ce code fonctionne correctement ... devinez par vous-même ;)

 
Yevhenii Levchenko:
Le gestionnaire (mt5, indictaor) traite les pressions sur les boutons dans un intervalle de temps. Quelle pourrait être la raison de cette situation ?

je viens de faire le même bug ce matin :-)

Le bouton est adapté pour fonctionner dans le testeur et fonctionne par polling, pas complètement dans le OnChartEvent.

L'erreur était dans le type de contrôle

if (ObjectGetInteger(....,OBJPROP_STATE)!=state /* это баг, должен быть 0 */) {

    // состояние поменялось

    state=!state;

}

 

Bonjour.

Le fait est que les 50 dernières bougies sont calculées pour la moyenne.

Question. Ce qu'il faut ajouter, corriger dans le code pour calculer une fois et non pas à chaque tick. Le problème est qu'en ON-LINE il y a une accumulation de valeur.

for(int j=rates_total-50-1; j<rates_total-1; j++)
     {
      if(open[j]>close[j])
         candleOC+=open[j]-close[j];
      if(close[j]>open[j])
         candleOC+=close[j]-open[j];
      candleHL+=high[j]-low[j];
      bar+=1;
     }
   if(bar>0)
     {
      filterOC=candleOC/bar;
      filterOC=NormalizeDouble(filterOC,_Digits);
      filterHL=candleHL/bar;
      filterHL=NormalizeDouble(filterHL,_Digits);
     }
//filterHL=0.00500;  //пример среднего значения HL
//filterOC=0.00250;  //пример среднего значения OC