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

 

MQL5 iBarShift

Selon la documentation de mql5, la fonction iBarShift renvoie une valeur de type int.

int#

Le type int a une taille de 4 octets (32 bits). La valeur minimale est de -2 147 483 648, la valeur maximale est de 2 147 483 647.


MoniBarShift ne veut pas donner une valeur supérieure à 99999

Je dessine une ligne de tendance sur le graphique, le script suivant récupère l'heure de début de la ligne et sort le numéro de la barre à cet instant.

Lorsque la ligne est décalée en arrière dans l'historique à un moment donné, la valeur de sortie s'arrête à 99999, et si

boolexact=false// mode

changez-le en true, il imprime -1, et GetLastError = 0

void OnStart()
  {
int total = ObjectsTotal(0, 0, -1);  // Общее кол-во объектов на: /текущий график/главное окно/все типы объектов
datetime time0 = 0; // Время соответствующее началу трендовой линии
string objname = ""; // Имя объекта (трендовой линии)
int shift = 0; // Номер бара, соответствующего времени начала трендовой линии time0

for(int i = total - 1; i >= 0; i--)
     {
     objname = (string)ObjectName(0, i, 0, OBJ_TREND);
     time0 = ObjectGetInteger(0, objname, OBJPROP_TIME, 0);
     shift = iBarShift(NULL, PERIOD_M1, time0, false);
     Comment("shift: ", shift, " Error: ", GetLastError());
     Sleep(2000);
     }
  }

Qu'est-ce qu'il y a ?

J'ai essayé différents graphiques de différents courtiers, le temps de la ligne est lu correctement, si je change PERIOD_M1 à M5, par exemple, alors je dois aller plus loin dans l'historique pour atteindre 99999.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
Dossiers :
sc1.mq5  3 kb
 
Sunriser:

MQL5 iBarShift

Selon la documentation de mql5, la fonction iBarShift renvoie une valeur de type int.

int#

Le type int a une taille de 4 octets (32 bits). La valeur minimale est de -2 147 483 648, la valeur maximale est de 2 147 483 647.


MoniBarShift ne veut pas donner une valeur supérieure à 99999

Je dessine une ligne de tendance sur le graphique, le script suivant récupère l'heure de début de la ligne et sort le numéro de la barre à cet instant.

Lorsque la ligne est décalée en arrière dans l'historique à un moment donné, la valeur de sortie s'arrête à 99999, et si

boolexact=false// mode

changez-le en true, il imprime -1, et GetLastError = 0

Qu'est-ce qu'il y a ?

J'ai essayé différents graphiques de différents courtiers, le temps de la ligne est lu correctement, si je change PERIOD_M1 à M5, par exemple, je dois aller plus loin dans l'historique pour atteindre 99999.

Vérifiez tout d'abord le nombre maximal de barres dans les paramètres du terminal.

 
Uladzimir Izerski:

Vérifiez d'abord le nombre maximal de barres dans les paramètres du terminal.

Merci !

C'était 10000, je l'ai changé en illimité et ça a marché.

Pas une chose évidente cependant...

 

Aide à la création de poignées

Voilà ce qu'il en est

int OnInit()
  {
//-создадим хэндл индикатора
      handle=iAO(name,period);
//-если не удалось создать хэндл
   if(handle==INVALID_HANDLE)
     {
      ...
      return(INIT_FAILED);
     }

Question : A partir de quels paramètres est attribué le numéro (chiffres) d'une poignée ?
Peut-il être différent après le redémarrage du terminal ?
Peut-il être différent après une réinitialisation de la carte ?
Dans quels cas peut-elle changer ?

 
Vitaly Muzichenko:

Aide à la création de poignées

Voilà ce qu'il en est

Question : A partir de quels paramètres est attribué le numéro (chiffres) d'une poignée ?
Peut-il être différent après le redémarrage du terminal ?
Peut-il être différent après une réinitialisation de la carte ?
Dans quels cas peut-elle changer ?

S'il n'y a qu'un seul indicateur, il a toujours une poignée de 10. Chaque poignée successive est égale à la précédente + 1 et tout dépend de l'ordre dans lequel les poignées ont été créées. Il ne peut changer que si l'un des précédents présente une erreur.

 
Alexey Viktorov:

Si vous avez un seul indicateur, il a toujours une poignée de 10. Chaque suivant est égal au précédent+1 et tout dépend de l'ordre dans lequel les poignées ont été créées. Il ne peut changer que si l'un des précédents présente une erreur.

Je vois, c'est plus ou moins compris. Merci !

 
Vitaly Muzichenko:

Aide à la création de poignées

Il y a une chose comme ça

Question : A partir de quels paramètres est attribué le numéro (chiffres) d'une poignée ?
Peut-il être différent après le redémarrage du terminal ?
Peut-il être différent après une réinitialisation de la carte ?
Dans quels cas peut-elle changer ?

Réponses trouvées

Сравниваем скорость самокэширующихся индикаторов
Сравниваем скорость самокэширующихся индикаторов
  • www.mql5.com
Предположим, что нам вдруг наскучил классический MQL5-доступ к индикаторам и захотелось сравнить скорость доступа в сравнении с альтернативными вариантами. Например, сравним его с доступом к индикаторам в стиле MQL4 без кэширования и с кэшированием. Идеи с доступом в MQL4-стиле были взяты из статьи LifeHack для трейдера: готовим фастфуд из...
 
Où est-il possible d'insérer un fichier de façon à ce qu'il soit visible, par héritage, à tous les fichiers de la bibliothèque standard?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 

Veuillez m'indiquer comment passer correctement un tableau multidimensionnel dans une fonction.

Si je spécifie simplement MyFun( &Mas[][] ) dans l'en-tête, le compilateur génère une erreur lors de l'accès à un élément du tableau Mas[j][k] dans le corps de la fonction... Mais comment ?

Il ne semble pas y avoir de problème avec les unidimensionnels.

 
User_mt5:

Veuillez m'indiquer comment passer correctement un tableau multidimensionnel dans une fonction.

Si je spécifie simplement MyFun( &Mas[][] ) dans l'en-tête, le compilateur génère une erreur lors de l'accès à un élément du tableau Mas[j][k] dans le corps de la fonction... Mais comment ?

Il ne semble pas y avoir de problème avec les tableaux unidimensionnels.

Les dimensions du deuxième tableau et du tableau suivant ne peuvent pas être dynamiques. Par conséquent, il doit être MyFun(int &Mas[][7]) déclaré comme un tableau, par exemple, int Mas[][7] ; il devrait donc être reçu.