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

 
Roman:

Vraiment pratique...

Imprimez sur des calendriers différents.

Parce que la variable prédéfinie _Period sort la valeur que :

La variable _Period stocke la valeur de l'intervalle de temps du graphique actuel.

Et ce cadre temporel est défini par la valeur de la constante de l'énumération ENUM_TIMEFRAMES qui correspond à la période du graphique.

Ok, travaillez dessus :

//+------------------------------------------------------------------+
//|                                         TestTimeframe_Period.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print
     (
      "Значение предопределённой переменной _Period на графике ",TimeframeDescription(Period())," = ",(string)(int)_Period,"\n",
      "Значение константы перечисления ENUM_TIMEFRAMES ",EnumToString(Period())," = ",(string)(int)Period(),"\n",
      "Период графика, соответствующий константе перечисления ENUM_TIMEFRAMES ",EnumToString(Period()),", со значением ",(string)(int)Period()," = ",TimeframeDescription(Period())
     );
  }
//+------------------------------------------------------------------+
//| Возвращает описание таймфрейма                                   |
//+------------------------------------------------------------------+
string TimeframeDescription(const ENUM_TIMEFRAMES timeframe)
  {
   return StringSubstr(EnumToString((timeframe>PERIOD_CURRENT ? timeframe : (ENUM_TIMEFRAMES)Period())),7);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Предопределенные переменные / _Period
Документация по MQL5: Предопределенные переменные / _Period
  • www.mql5.com
Предопределенные переменные / _Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Je n'ai pas utilisé mql4 )) et ne m'y suis pas habitué.
Pourquoi devons-nous encore diviser par 60 ?
Où est-ce que c'est indiqué dans la référence ?
C'est déjà vos béquilles qui contournent le bug.
Maintenant, vérifiez votre béquille, sur toutes les échelles de temps.

Un bug ? Vous pensez donc que le fait d'avoir des échéances M1, M2, M3, M4, M5, M6, puis M10 est aussi un bug ?

Pourquoi ne demandez-vous pas aux développeurs d'éliminer les bugs liés aux délais manquants ?

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CENT_ANS ?

Pourquoi la représentation interne des constantes de transfert est-elle soudainement un bug ?

Le manque de billets de trois cents roubles ne vous dérange pas ?

 
Artyom Trishkin:

Un bug ? Vous pensez donc que le fait d'avoir des échéances M1, M2, M3, M4, M5, M6, puis M10 est aussi un bug ?

Pourquoi ne demandez-vous pas aux développeurs d'éliminer les bugs liés aux délais manquants ?

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CENT_ANS ?

Pourquoi la représentation interne des constantes enum est-elle soudainement un bug ?

N'êtes-vous pas gêné par le manque de billets de trois cents roubles ?

Pouvez-vous me dire si la valeur de 16385 correspond à la valeur de la période du graphique H1 ?
Et toutes les autres valeurs de période au-dessus de H1.
Igor vous a même montré le format binaire, et mon prochain post est le même, mais dans un format différent.

Vous allez dans une direction complètement différente, n'évoquez pas quelque chose que vous n'avez pas dit.
Ce qui me dérange, c'est que le modérateur muselle les insectes avec ses béquilles !
Ne pas contribuer à leur élimination.

Voici un autre bug pour vous.

Print(PeriodSeconds(PERIOD_MN1)*1000);

Et la même chose sur le graphique MN.

Print(PeriodSeconds(PERIOD_CURRENT)*1000);
 
Roman:

Dites-moi, la valeur de 16385 correspond-elle à la valeur de la période du graphique H1 ?
Et toutes les autres valeurs de période au-dessus de H1.

Vous allez dans une direction complètement différente, n'évoquez pas un sujet qui n'a pas été abordé.
Ce qui me dérange, c'est que le modérateur élimine les insectes avec ses béquilles !
Et ne pas contribuer à leur élimination.
Voici un autre bug pour vous.

Tu n'as pas le temps d'étudier l'aide ?

Tout ce que vous ne comprenez pas est un bug que vous pensez que les développeurs devraient corriger ?

Ou peut-être devriez-vous apprendre à lire dans ce cas, au lieu de renvoyer la balle à un modérateur ?

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

Pourquoi faites-vous déborder l'int ?

Alors imprimez-le vous-même :

Print
  (
   "(int)PeriodSeconds(PERIOD_MN1) = ",(int)PeriodSeconds(PERIOD_MN1),
   ", (ulong)PeriodSeconds(PERIOD_MN1)*1000 = ",(ulong)PeriodSeconds(PERIOD_MN1)*1000,
   ", INT_MAX = ",INT_MAX
  );

et s'il vous plaît, corrigez le bug dans votre propre pensée.

Et si vous voulez des millisecondes, représentez-les comme des ulong.

 
Artyom Trishkin:

Tu n'as pas le temps d'étudier l'aide ?

Tout ce que vous ne comprenez pas est un bug que vous pensez que les développeurs devraient corriger ?

Ou peut-être devriez-vous apprendre à lire dans ce cas, au lieu de renvoyer la balle à un modérateur ?

Pourquoi faites-vous déborder l'int ?

Alors imprimez-le vous-même :

et s'il vous plaît, corrigez le bug dans votre propre pensée.

La surpopulation, oui, c'était un oubli, je n'en ai pas tenu compte. Merci ici.
Mais votre exemple ne compile pas.

Comme cela s'imprime bien, devinez quand vous avez besoin d'une chaîne de caractères et quand vous n'en avez pas besoin ;))

Print((uint)PeriodSeconds(PERIOD_MN1)*1000);


Et concernant la variable _Period, il y a quelque chose d'anormal au-dessus de H1.

 
Roman:

Dites-moi, s'il vous plaît, la valeur de 16385 correspond-elle à la valeur de la période du graphique H1 ?
Et toutes les autres valeurs de période au-dessus de H1.
Igor vous a même montré la valeur en format binaire, et le suivant est mon post, où vous voyez la même valeur dans un autre format.

Vous allez dans une direction complètement différente, n'évoquez pas quelque chose que vous n'avez pas dit.
Ce qui me dérange, c'est que le modérateur muselle les insectes avec ses béquilles !
Ne pas contribuer à leur élimination.

Voici un autre bug pour vous.

Et la même chose sur la carte MN.

1. Oui, correspond à la valeur de la constante.

2. et toutes les autres correspondent à la valeur de la constante.

Essayez de l'imprimer.

Print("SYMBOL_BID=",SYMBOL_BID); 

Pensez-vous que le prix actuel de l'offre vous sera imprimé, ou autre chose ?

Pourquoi alors attendez-vous de

Print("PERIOD_H1=",PERIOD_H1);

que l'on vous donnera quelque chose comme H1 ou 60 ?

Et Igor ne l'apas imprimé pour moi, mais il vous a montré la représentation interne des valeurs constantes de l'énumération ENUM_TIMEFRAMES au format binaire.

Vous avez affirmé que les valeurs des constantes d'énumération que vous m'avez montrées sont un bug et que mon explication est une béquille. Ce n'est pas le cas - il s'agit simplement de votre ignorance des bases simples.

Je prends maintenant congé - apprenez les bases, et s'il vous plaît ne montrez pas votre ignorance dans les bugs et les béquilles des développeurs - il n'est pas bon de jeter un blanc. Oui, et vous choisissez des "mots serrés", tout en oubliant qu'il s'avère que vous ne savez pas quelque chose.

Vous y arriverez, mais votre esquisse restera pour d'autres qui sont tout aussi "bien informés". C'est un parasite...

 
Roman:

Avec le débordement, oui, j'ai réagi de manière excessive, je n'ai pas pris ce point en compte. Merci.
Mais votre échantillon ne sera pas compilé.

Mais il s'imprime bien, alors devinez quand vous avez besoin d'une chaîne et quand vous n'en avez pas besoin ;))


Et en ce qui concerne la variable _Period, il doit y avoir un problème au-dessus de H1.

Je veux dire, qu'est-ce que tu veux dire par "ça ne compile pas" ? Copié du forum dans le script et compilé :


Et la variable _Period renvoie la valeur de la constante d'énumération ENUM_TIMEFRAMES du graphique actuel sous forme d'int. C'est-à-dire, pas le nombre de minutes, pas le nombre de secondes, mais la valeur de la constante de ENUM_TIMEFRAMES correspondant au graphique actuel.

 
Roman:

Mais ça s'imprime bien, alors devinez quand vous avez besoin d'une chaîne et quand vous n'en avez pas besoin ;))

Vous n'avez pas à deviner. Vous devez réfléchir et comprendre ce qui est fait et dans quel but. Quand quelque chose doit être écrit et quand ça n'a pas besoin de l'être.

 
Artyom Trishkin:

Pourquoi alors vous attendez-vous

que vous allez obtenir quelque chose comme H1 ou 60 ?

Parce que les cadres temporels en minutes sous H1 renvoient les valeurs correctes.
Comme décrit dans l'aide, ils renvoient la valeur de l'horizon temporel, et non une constante aléatoire.

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_H1=16385

C'est pourquoi il est logique de s'attendre à cela à partir de cadres temporels plus élevés, en poursuivant la séquence en minutes.
PERIOD_H1=60

etc.

 
Roman:

Parce que les cadres temporels minute sous H1 renvoient des valeurs correctes.
Comme il est décrit dans l'aide, ils renvoient la valeur du délai, et non les constantes arbitraires.

C'est pourquoi il est logique de s'attendre à cela à partir de cadres temporels plus élevés, en poursuivant la séquence en minutes.
PERIOD_H1=60

etc.

... continuer à composer des chansons maléfiques, s'attendre au communisme, faire des tranchées et collectionner des ***...

Il est logique de ne pas utiliser de valeurs constantes dans l'espoir d'obtenir des valeurs "logiques".

Une fois de plus (pour la dernière fois), permettez-moi de vous rappeler la constante SYMBOL_BID. Il est "logique" d'attendre d'elle la valeur du prix d'achat actuel au lieu de 1 pour une raison quelconque, n'est-ce pas ? Ou pas ?

C'est tout. Je suis fatigué de la réglisse, et je n'ai pas pris l'enseignement, pour ainsi dire.

Raison: