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

 
Alexey Viktorov:
Die aktuelle Zeit von 17:08 zeigt 33. Die Taktnummer bei einer Uhrzeit von 01:00 ist also 32.
datetime t=StringToTime("01:00");

Dies ist nicht die richtige Lösung. Wenn Sie den Test um 00:00 Uhr beginnen, ergibt diese Variante 0 Balken, und es sollten 46 M30-Balken bis zur nächsten Stunde 01:00 Uhr vorhanden sein.

 
Nauris Zukas:

Falsche Entscheidung. Wenn Sie den Test um 00.00 Uhr beginnen, ergibt diese Variante 0 Balken, und bis zum nächsten 01.00 Uhr sollten 46 M30-Balken vorhanden sein.

Ich habe Ihnen eine Denkweise vermittelt, und Sie sollten wissen, wie man den nächsten 01:00-Balken um 00:59 Uhr auf die Minute bringt. Daran ist nichts Schwieriges.

 
Alexey Viktorov:

Ich habe Ihnen einen Denkanstoß gegeben, und wie Sie den nächsten 01:00-Balken um 00:59 Uhr auf die Minuten bringen, bleibt Ihnen überlassen. Daran ist nichts Schwieriges.

In jedem Fall müssen Sie die Schleife benutzen und die nächste Zeit suchen, ich sehe keine andere Möglichkeit.

 
Alexey Viktorov:
Das einzige Problem ist, dass ich nie füllen meine Speicherzelle mit unnötigen Sachen wie das, was der Wert erhalten wird gleich, da ein Bar mit einer bestimmten Zeit oder weniger von 1. Ich kontrolliere einfach jedes Mal.


Ich habe keine Ahnung, wie ich die nächstgelegene angegebene Zeit für Takte ohne Zyklus finden kann. Wenn es nicht kompliziert ist, können Sie mir die Funktion zeigen?

 

Liebe Experten, können Sie mir bitte sagen, wie ich Testergebnisse in eine Datei in mt-4 ziehen kann?

zur weiteren Verarbeitung wie hier beschrieben https://www.mql5.com/ru/articles/1467?

Автоматическая оптимизация торгового робота в процессе реальной торговли
Автоматическая оптимизация торгового робота в процессе реальной торговли
  • 2007.04.16
  • Igor Malcev
  • www.mql5.com
В статье описана и представлена библиотека функций, позволяющая проводить оптимизацию входных параметров советника, запуская оптимизацию непосредственно из советника.
 
Nauris Zukas:


Ich habe keine Ahnung, wie ich die nächstgelegene angegebene Zeit für Takte ohne Zyklus finden kann. Wenn es nicht kompliziert ist, können Sie mir die Funktion zeigen?

..... einfach keine Worte....

Wie schwer ist es zu erraten, dass man, wenn die Zeit kleiner ist als die gesuchte Zeit, die gesuchte Zeit um 24 Stunden abziehen muss?

 string st = "1:00";// можно и так писать "01:00"
 datetime t = StringToTime(st);

 if(TimeCurrent() < t)
  {
   MqlDateTime mqlDateTime; 
   TimeToStruct(t, mqlDateTime);
   mqlDateTime.day -= 1;
   t = StructToTime(mqlDateTime);
  }
 int b = Bars(_Symbol, PERIOD_M30, t, TimeCurrent());

Ohne Berücksichtigung der Ausgänge und Prüfungen auf mögliche Ausführungsfehler durchgeführt. Andere Ausführungen sind möglich, weshalb ich versuche, keine Beispielcodes zu schreiben. Heute habe ich mich dafür entschieden, morgen finde ich vielleicht eine andere Variante besser.

 
Alexey Viktorov:

Wie schwer ist es zu erraten, dass man die gesuchte Zeit um 24 Stunden abziehen muss, wenn die Zeit kleiner ist als die gesuchte Zeit?

Deshalb ist es schwer zu erraten:

Alexey Viktorov:

Ohne Berücksichtigung von Wochenenden und Prüfung auf mögliche Ausführungsfehler.

Wie viel schwieriger muss der Code sein, um am Ende ein gewünschtes Ergebnis ohne Fehler zu erhalten! Es gibt Wochenenden und Feiertage in dem Kodex. Vielen Dank für die Tipps und Beispiele, ich habe etwas Neues gelernt, es wird irgendwo nützlich sein, aber bis jetzt glaube ich, dass meine Version die einfachste und zuverlässigste ist.

 
Nauris Zukas:

Es ist schwer zu erraten, nur weil das so ist:

Wie viel komplizierter muss der Code sein, um am Ende das gewünschte Ergebnis ohne Fehler zu erhalten! An Wochenenden und Feiertagen öffnet der Markt zu einer anderen Zeit. Danke für die Tipps und Beispiele, ich habe etwas Neues gelernt, es wird auf jeden Fall nützlich sein, aber bisher sehe ich, dass meine Version die einfachste und zuverlässigste ist.

Warum nicht? Und diese Option hat ein Recht auf Leben. Und es hat sogar mich interessiert. Mit einigen Korrekturen haben wir die Funktion erhalten, die die Balkenanzahl einer bestimmten Zeit und eines bestimmten Zeitraums zurückgibt.

int findBar(string strTime, ENUM_TIMEFRAMES period = PERIOD_CURRENT)
 {
  MqlDateTime mqlTime, mqlFindTime;
  TimeToStruct(StringToTime(strTime), mqlFindTime);
  datetime arrTime[];
  int copy = PeriodSeconds(PERIOD_D1)/PeriodSeconds(period);
  CopyTime(_Symbol, period, 0, copy, arrTime);
  ArraySetAsSeries(arrTime, true);
   for(int i = 0; i < copy; i++)
    {
     TimeToStruct(arrTime[i], mqlTime);
      if(mqlTime.hour == mqlFindTime.hour && mqlTime.min <= mqlFindTime.min)
      return(i);
    }
  return(-1);
}/********************************************************************/

.

 
Alexey Viktorov:

Warum nicht? Und diese Option hat ein Recht auf Leben. Und es hat sogar mich interessiert. Mit einigen Korrekturen gibt die Funktion die Taktnummer der angegebenen Zeit und Periode zurück.

.

Herzlichen Dank!
Sie erwähnten "Gedächtniszellen", mein Wissen über dieses Thema ist bisher begrenzt. Soweit ich weiß, wirkt sich dies auf die Geschwindigkeit der Expert Advisor-Tests aus? Wird sie in irgendeiner Weise gemessen oder wird sie einfach durch die Geschwindigkeit der Prüfung bestimmt?

 
Nauris Zukas:

Herzlichen Dank!
Sie haben den Begriff "Gedächtniszelle" erwähnt, aber ich kenne mich damit nicht aus. Beeinflusst dies, soweit ich weiß, die Geschwindigkeit der Expert Advisor-Tests? Wird sie in irgendeiner Weise gemessen oder wird sie einfach durch die Geschwindigkeit der Prüfung bestimmt?

Ich habe von meinem eigenen Speicherchip gesprochen. :)))

Es geht darum, sich nicht an solche Kleinigkeiten zu erinnern, die man beim Schreiben des Codes leicht doppelt prüfen, klären, nach Bedarf erledigen und wieder vergessen kann.

Grund der Beschwerde: