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

 
WindSW:
S'il vous plaît, dites-moi comment voir la quantité de mémoire occupée par Expert Advisor et comment elle est redistribuée ?

Le gestionnaire des tâches de Windows devrait vous suffire.

Consultezcet article.

En général, démontez votre conseiller expert en scripts, faites fonctionner toutes les fonctions, puis assemblez-les en une pile.

 
WindSW:

Et pourtant, je n'arrive pas à comprendre pourquoi les niveaux ne sont pas créés à l'aide d'ObjectCreate. Toutes les fonctions fonctionnent, mais aucun objet OBJ_TREND n'est créé.

Il existe des variables définies au niveau global :

chaîne oRes, oSup, oPP, oRes1, oRes2, oRes3, oSup1, oSup2, oSup3, textPP, textR1, textR2, textR3, textS1, textS2, textS3 ;

Le code qui doit créer les niveaux :

Les amis, aidez-nous à résoudre ce problème. S'il vous plaît

Les niveaux sont créés, mais ils ne sont pas visibles.)

Définissez les coordonnées - heure / prix. Vous avez des zéros partout.

 
Dima_S:

Les niveaux sont créés, mais vous ne pouvez pas les voir.)

Définissez les coordonnées - heure / prix. Tu as des zéros solides là.

Elle crée un objet sans liaison, puis le modifie. Ici.

L'objet n'est pas créé en raison d'un nom incorrect (non attribué). (ci-dessus déjà répondu). Par conséquent, il ne peut pas être modifié pour le voir.

 
fyords:

Disons que vous avez déclaré des variables au niveau global, avez-vous attribué des valeurs à ces variables ?

Si ce n'est pas le cas, vous dites alors au programme "créez un objet avec telles et telles caractéristiques avec le nom..." et il y a un problème - le nom n'est pas donné. Donc ça ne la crée pas.

Ne serait-il pas plus simple de le spécifier directement dans le code ObjectCreate ?

Merci ! Pour une raison quelconque, je n'ai pas pensé à le faire tout de suite, car dans la version 4, le nom de l'objet est également défini.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

Je ne trouve pas de solution à l'erreur de dépassement de tableau. J'en ai parlé à la page 88. Le conseiller expert fonctionne pendant un certain temps et se plante. Pour être plus exact, cela fonctionne une fois du début à la fin de l'Expert Advisor et à la deuxième fois, dans la boucle ci-dessous, le tableau déborde, indiquant une chaîne de caractères :

H=High[j] ;

void CreateLevels()
   {
      double High[];
      ArrayResize(High,0);
      ArraySetAsSeries(High,true);
      CopyHigh(_Symbol,_Period,0,Candle,High);
      ArrayResize(HBar,0);
      ArrayResize(HBar,1000);
      int countH=0;
      int f1;
      double H;
      for(int j=Nachalo;j<=Candle;j++)
         {
          //--- поиск макс -----------------------------------
          if(iHighest(Symbol(),0,10,MN*2,j-MN)==j)
            {
             f1=0;
             H=High[j];                                 // отметка текущего хая
             ...                                        // здесь обработка флага f1
             if(f1==0)                                  // если занесение хая в массив разрешено
               {
                HBar[countH][0]=High[j];
                countH++;
               }
            }
         }
   }

Plus important encore, je ne comprends pas comment le tableau High[] déborde, puisqu'un nombre spécifique de haves est spécifié ? Et pourquoi le terminal indique un dépassement de capacité dans la chaîne H=High[j] ; ?

Pouvez-vous me dire comment l'implémenter correctement ? Est-il possible de nulliser le tableau High[] ou d'écrire le high d'une bougie particulière dans la variable H d'une autre manière ?

 
WindSW:

Essayez de cette façon :

for(int j=Nachalo;j< Candle;j++)

Base : l'indexation des tableaux commence à zéro, donc lorsque Candle==100, le dernier élément du tableau est indexé par le nombre 99, et non par le nombre 100.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Yedelkin:

Essayez de cette façon :

Base : l'indexation des tableaux commence à zéro, donc lorsque Candle==100, le dernier élément du tableau est indexé par le nombre 99, et non par le nombre 100.

Merci ! Ça a aidé !
 

Bonjour, j'ai rencontré le problème suivant... Généré un Conseiller Expert... Exécutez-le sur les contrats à terme sur indices RTS. Et là, les lots ne sont pas fractionnés = aucun money management ne fonctionne, et les cotations sont des multiples de 10 = le trailing stop ne fonctionne pas. Veuillez me conseiller, est-il possible de résoudre ce problème ?

Je sais comment arrondir les valeurs iMa à 10 ou 5, en dernier recours je pense à exécuter le trailing stop séparément.

 
oldiol: Si mon EA n'a pas de lots fractionnés = gestion de l'argent non fonctionnelle, et des cotations multiples de 10 = stop suiveur non fonctionnel. Veuillez me conseiller, est-il possible de résoudre ce problème ?

L'outil possède une propriété Volume_Step. Voyez si vous pouvez l'utiliser pour des volumes non fractionnés.

Pour les cotations divisibles par 10, il suffit de faire en sorte que l'étape du trailing stop soit la même.

 
Yedelkin:

L'outil possède une propriété Volume_Step. Voyez si vous pouvez l'utiliser pour des volumes non fractionnés.

Et pour les cotations divisibles par 10, il suffit de faire en sorte que l'étape du trailing stop soit la même.

Merci beaucoup) Je vais essayer.
Raison: