Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1116

 
Roman:

In der Hilfe steht, dass der Wert des Zeitrahmens zurückgegeben werden sollte, nicht der mitEnumToString() konvertierte Bezeichner.
Die Variable _Period gibt int zurück.
ENUM_TIMEFRAMES Periode() bedeutet auch, dass int zurückgegeben wird.

Sie sind der Einzige, der dies andeutet. Eigentlich gibt Period() den Wert von enum_TIMEFRAMES zurück.

Wenn Sie die Werte der Konstanten in dieser Aufzählung ausdrucken, werden Sie Zahlen sehen, mit denen Sie bereits vertraut sind.

Und das war schon immer so. Das ist schon seit der Geburt von MQL5 so.

Und in der Hilfe ist klar angegeben, was zurückgegeben wird:

Wert kann einer der Werte der Aufzählung ENUM_TIMEFRAMESsein .

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Проверка состояния / Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

Sie sind der Einzige, der dies andeutet. Period() gibt nämlich den Wert der Aufzählung ENUM_TIMEFRAMES zurück.

Wenn Sie die Werte der Konstanten in dieser Aufzählung ausdrucken, werden Sie Zahlen sehen, mit denen Sie bereits vertraut sind.

Und das war schon immer so. Das ist schon seit der Geburt von MQL5 so.

Und die Hilfe hat klar geschrieben, was zurückgegeben wird:

Welchen Typ gibt die ENUM-Aufzählung Ihrer Meinung nach zurück?)
Und die Referenz besagt eindeutig
Gibt den Zeitrahmenwert des aktuellen Diagramms zurück.

Drucken Sie es selbst aus

Print(PERIOD_M30);
Print(PERIOD_H1);
 
Roman:

Und die ENUM-Aufzählung, welchen Typ gibt sie wohl zurück?))
Und die Referenz sagt eindeutig
Gibt den Zeitrahmenwert des aktuellen Diagramms zurück.

Drucken Sie Ihr eigenes.

Was wollen Sie mir beweisen?

Ich weiß genau, was gedruckt wird und welche Daten wann und wo zurückgegeben werden.

Sie wollen die Anzahl der Minuten des aktuellen Zeitraums?

Sehen Sie es so:

PeriodSeconds(Period())/60;

oder so:

PeriodSeconds(PERIOD_CURRENT)/60;

Oder so:

PeriodSeconds()/60;
 
Artyom Trishkin:

Was wollen Sie mir beweisen?

Nichts an Sie, ich habe nicht an Sie geschrieben, sondern an die Entwickler.
Drucken Sie mehr auf M30 und auf H1 und sehen Sie den Unterschied.

Print(_Period);
 
Roman:

Das ist Ihnen egal, denn ich habe nicht an Sie geschrieben, sondern an die Entwickler.
Drucken Sie mehr auf M30 und auf H1 und sehen Sie den Unterschied.

Das ist kein Problem. Das hat es nie gegeben.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Artyom Trishkin, 2020.04.09 22:11

Was wollen Sie beweisen?

Ich habe ein gutes Verständnis dafür, was gedruckt wird und welche Daten wann und wo zurückgegeben werden.

Sie wollen die Anzahl der Minuten des aktuellen Zeitraums?

erhalten sie auf diese Weise:

PeriodSeconds(Period())/60;

oder so:

PeriodSeconds(PERIOD_CURRENT)/60;

oder so:

PeriodSeconds()/60;

 
Roman:

Das müssen Sie nicht, ich habe nicht Ihnen, sondern den Entwicklern das Problem geschildert.
Drucken Sie mehr auf M30 und H1 und sehen Sie den Unterschied.

Können Sie sich nicht von MQL4 lösen?

Machen Sie es in MQL4 wie folgt:

PeriodSeconds(Period())/60;

oder so:

PeriodSeconds(PERIOD_CURRENT)/60;

Oder so:

PeriodSeconds()/60;

Und drucken Sie die resultierenden Werte aus.

 
Artyom Trishkin:

Können Sie sich nicht von MQL4 lösen?

Machen Sie es in MQL4 wie folgt:

oder so:

oder so:

und drucken Sie die resultierenden Werte aus.

Ich habe mql4 nicht benutzt)) und ich habe mich nicht daran gewöhnt.
Warum muss man noch durch 60 teilen?
Wo steht das in der Hilfe?
Es sind bereits Ihre Krücken, die den Fehler umgehen.
Prüfen Sie jetzt Ihre Krücke, auf allen Zeitrahmen

Print(_Period / 60);
 
Roman:

Ich habe mql4 nicht benutzt)) und ich habe mich nicht daran gewöhnt.
Warum muss man noch durch 60 teilen?
Wo steht das in der Hilfe?
Es sind bereits Ihre Krücken, die den Fehler umgehen.

facepalm ...
 
Roman:

Die Variable _Period und die Funktion Period() bis einschließlich M30 zeigen einen Wert in Minuten an.
Wenn Zeitraum M1 dann 1
Wenn Zeitraum M2 dann 2
...
Wenn Zeitraum M30 dann 30

Es ist logisch, dass der stündliche Zeitraum 60
Zwei-Stunden-Zeitraum 120
drei Stunden 180
usw.

Aber ab H1 werden die falschen Werte angezeigt.

wenn das Programm "falsche Werte" ausgibt, müssen Sie sehen, was das Programm "denkt", aber es kann nur im Binärformat denken

Ich habe es überprüft, und es hat geklappt:

void OnStart()
{

   ENUM_TIMEFRAMES allperiod[] = {PERIOD_CURRENT, PERIOD_M1, PERIOD_M2, PERIOD_M3, PERIOD_M4, PERIOD_M5, PERIOD_M6, PERIOD_M10, PERIOD_M12, PERIOD_M15, PERIOD_M20, PERIOD_M30, PERIOD_H1, PERIOD_H2,
                                  PERIOD_H3, PERIOD_H4, PERIOD_H6, PERIOD_H8, PERIOD_H12, PERIOD_D1, PERIOD_W1, PERIOD_MN1
                                 };
   for(int i = 0; i < ArraySize(allperiod); i++)
      Print(UintToBinary((uint)allperiod[i]));

}
//+------------------------------------------------------------------+
string UintToBinary(uint n)
{
   string r = "";
   if(n == 0) return("0");
   while(n != 0)
   {
      r = (n % 2 == 0 ? "0" : "1") + r;
      n /= 2;
   }
   return(r);
}
//+------------------------------------------------------------------

2020.04.10 00:38:57.118 tst (EURUSD,H1) 0

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1

2020.04.10 00:38:57.118 tst (EURUSD,H1) 10

2020.04.10 00:38:57.118 tst (EURUSD,H1) 11

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 101

2020.04.10 00:38:57.118 tst (EURUSD,H1) 110

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1010

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1111

2020.04.10 00:38:57.118 tst (EURUSD,H1) 10100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 11110

2020.04.10 00:38:57.118 tst (EURUSD,H1) 10000000001

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000010

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000011

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000110

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000001000

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1000000001100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000011000

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000001

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1100000000000001


 
Artyom Trishkin:
facepalm ...

Wirklich Ärmel...

Drucken in verschiedenen Zeiträumen.

Print(_Period);
2020.04.09 23:39:49.963 VP (EPM20,M1)   1
2020.04.09 23:39:53.135 VP (EPM20,M3)   3
2020.04.09 23:39:53.758 VP (EPM20,M5)   5
2020.04.09 23:39:54.377 VP (EPM20,M10)  10
2020.04.09 23:39:55.094 VP (EPM20,M15)  15
2020.04.09 23:39:55.679 VP (EPM20,M30)  30
2020.04.09 23:39:56.384 VP (EPM20,H1)   16385  //Почему не 60 ?
2020.04.09 23:39:57.071 VP (EPM20,H4)   16388  //Почему не 240 ?
2020.04.09 23:39:57.641 VP (EPM20,D1)   16408  //Почему не 1440 ?
2020.04.09 23:39:58.181 VP (EPM20,W1)   32769  и т.д.
2020.04.09 23:39:58.768 VP (EPM20,MN1)  49153
Grund der Beschwerde: