MetaTrader 5 herunterladen

Strategy Tester: Startbeginn zu bestimmter Uhrzeit

Einloggen oder registrieren, um einen Kommentar zu schreiben
markm2001
85
markm2001  

Hallo,

irgendwie bekomme ich es nicht hin, dass der ST um z.B. 07:00 Uhr beginnt. 
"Überspringen auf..." funktioniert nicht, und in den Einstellungen kann ich nur ein Datum eintragen. Es wird also immer um 00:00 Uhr begonnen.

Kann man das irgendwo einstellen?

Gruß,
Markus

Otto Pauser
1439
Otto Pauser  
markm2001:

Hallo,

irgendwie bekomme ich es nicht hin, dass der ST um z.B. 07:00 Uhr beginnt. 
"Überspringen auf..." funktioniert nicht, und in den Einstellungen kann ich nur ein Datum eintragen. Es wird also immer um 00:00 Uhr begonnen.

Kann man das irgendwo einstellen?

Gruß,
Markus

Da hab ich ein Tool programmiert, denn das brauch ich auch.

Habe es auch dokumentiert weil ich es in der Codebase veröffentlichen wollte.

Ist in 2 Varianten programmiert. OOP und konventionell. OOP ist blos ein Beispiel wie man es auch machen kann.

Viel Erfolg damit.

Tester auf "Full Speed" schalten, beim Debugbreak() Geschwindigkeit reduzieren.

//+------------------------------------------------------------------+
//|                                                   StopAtDate.mqh |
//|                                Copyright © 2018 Ing. Otto Pauser |
//|                       https://www.mql5.com/de/users/kronenchakra |
//+------------------------------------------------------------------+
/*
   Klasse um den Metatester an einem bestimmten Datum,
   zu einer bestimmten Uhrzeit im visuellen Mode anzuhalten.
   Die Funktion hält nur ein einziges mal an!
   
   Verwendung OOP Variante:
   ------------------------
   1.)  mqh einbinden
   
   #include <Tester\StopAtDate.mqh>
   
   2.)Einsatz in der OnTick()

   void OnTick()
   {
                                                   // Code vorher
      
      if(StopAtDate.Check("2018.01.17", "20:19"))  // prüfen der Zeit
         DebugBreak();                             // hier hält das Programm an
      
                                                   // Code nachher
   }
   
   Verwendung konventionelle Variante:
   -----------------------------------
   1.)  mqh einbinden
   
   #include <Tester\StopAtDate.mqh>
   
   2.)Einsatz in der OnTick()

   void OnTick()
   {
                                                   // Code vorher
      
      if(WaitAtDate("2018.01.17", "20:19"))        // prüfen der Zeit
         DebugBreak();                             // hier hält das Programm an
      
                                                   // Code nachher
   }
   
   
*/

//+------------------------------------------------------------------+
//| Definition                                                       |
//+------------------------------------------------------------------+

class CStopAtDate
{
   private:
      bool     triggered;                          // flag triggerTime erreicht
      datetime triggerTime;                        // 
   public:
            CStopAtDate(void);                     // Konstructor. Initialisierung von Variablen etc.
           ~CStopAtDate(void) {};                  // Destructor. Muss vorhanden sein, falls Konstruktor definiert
      bool  Check(string aDate, string aTime);
};

CStopAtDate StopAtDate;                            // Instanz deklarieren

//+------------------------------------------------------------------+
//| Implementation                                                   |
//+------------------------------------------------------------------+

void CStopAtDate::CStopAtDate(void)
{
   triggered   = false;
   triggerTime = NULL;
}

bool CStopAtDate::Check(string aDate, string aTime)
{
   if(triggered)                                   // Zeit erreicht ?
      return(false);                               // ja, raus hier und nicht mehr anhalten

   if(triggerTime==NULL)                           // triggerTime noch nicht berechnet
      triggerTime = StringToTime(aDate+" "+aTime);

   triggered=TimeCurrent()>=triggerTime;           // Zeit mit Zielzeit vergleichen
      
   return(triggered);                              // false if noch nicht erreicht
}

//+------------------------------------------------------------------+
//| konventionell programmiert                                       |
//+------------------------------------------------------------------+

bool WaitAtDate(string aDate, string aTime)
{
   static bool     triggered   = false;
   static datetime triggerTime = NULL;

   if(triggered)                                   // Zeit erreicht ?
      return(false);                               // ja, raus hier und nicht mehr anhalten

   if(triggerTime==NULL)                           // triggerTime noch nicht berechnet
      triggerTime = StringToTime(aDate+" "+aTime);

   triggered=TimeCurrent()>=triggerTime;           // Zeit mit Zielzeit vergleichen
      
   return(triggered);                              // false if noch nicht erreicht
}
Dateien:
markm2001
85
markm2001  

Wau, danke für den Code!!! 
Werde es testen.

Wundert mich, das es nicht in MT5 drin ist...

Christian
2190
Christian  
markm2001:

Hallo,

irgendwie bekomme ich es nicht hin, dass der ST um z.B. 07:00 Uhr beginnt. 
"Überspringen auf..." funktioniert nicht, und in den Einstellungen kann ich nur ein Datum eintragen. Es wird also immer um 00:00 Uhr begonnen.

Kann man das irgendwo einstellen?

Gruß,
Markus

Doch das funktioniert ...siehe Bild


In die Uhrzeit klicken bis die blau wird und dann die zahl eingeben.



Otto Pauser
1439
Otto Pauser  

@Cristian: Also bei mir funktioniert das mit dem Zeit eingeben NICHT.

Der Tester startet immer bei 00:00 und ist auch mit 'Skip To' nicht dazu zu überreden zu einer anderen Uhrzeit zu beginnen.

PS: Ein interessanter Ausbruch im EURUSD ist 2018.01.17 20:10

Christian
2190
Christian  

Probier mal selber da hinzu klicken wo der Rote Pfeil endet.

Dann wird die Uhrzeit blau und ist änderbar.


Gruß

markm2001
85
markm2001  

ja, das stimmt zwar, hat aber bei mir keinen Effekt außer das der ST hängt.

Christian
2190
Christian  

Ich glaub da gibt es Missverständnisse.


@Otto Ja es stimmt ...ein Start um 7 Uhr ist nicht möglich

"Überspringen" bedeutet das er "vorspult" ....aber im Hintergrund trotzdem die Trades ausführt.


@markm     Überspringen funktioniert korrekt bedeutet aber nicht das er zu einer bestimmten Uhrzeit startet. Siehe oben


Also bleibt nur das Schibsel von Otto 

Otto Pauser
1439
Otto Pauser  

Ja, blau wird's, ändern kann ich's, aber er springt nicht zur Uhrzeit.

Kann das am Broker liegen? Kann ich mir eigentlich nicht vorstellen.

Journal Toolbox

Journal Tester

Ich starte den Tester gerne aus dem Metaeditor mit Ctrl+F5 (blauer button) da kann man mit 'Tools->Options->Tab Debug' den Tester voreinstellen.

Aber egal ob mit Debug- oder Finaler-Version, es geht nicht.

Grüße, Otto

Christian
2190
Christian  

Otto lies noch mal meinen Post oben.


Die Funktion ist falsch übersetzt. 

Es muss "vorspulen" heißen.

Starten tut er immer bei 00:00 des eingestellten Tages.

Otto Pauser
1439
Otto Pauser  
Christian:

Otto lies noch mal meinen Post oben.

Die Funktion ist falsch übersetzt. 

Es muss "vorspulen" heißen.

Starten tut er immer bei 00:00 des eingestellten Tages.

Ok, danke, kenn mich soweit aus, muss also weiterhin mein Schnipsel verwenden, bin aber damit zufrieden.

Ich verwende die englische Version, da mir bei diversen Übersetzungen, die oft unverständlich sind, speziell in der Doku, schlecht wird.

LG, Otto

12
Einloggen oder registrieren, um einen Kommentar zu schreiben