Erster Tages-Balken eines Monates

 

Liebe Experten,

ich möchte im Tages-Chart alle nachfolgenden Balken eines Monates mit dem ersten Balken des gleichen Monates vergleichen. Wie heißt aber der erste Balken eines Monates in mql5-Terminologie? Ich danke Euch im Voraus!

 

Das ist ein bisschen wenig.

Willst Du das auf einem Chart sehen, in einem EA oder einem Indikator - auf welchem Zeitrahmen läuft er?

In MQL5 gäbe es CopyRates(). Damit lädt man Kurse die Kerzen oder Bars und sucht dann den entsprechenden Zeitpunkt.

Dokumentation zu MQL5: Zugang zu Zeitreihen und Indikatoren / CopyRates
Dokumentation zu MQL5: Zugang zu Zeitreihen und Indikatoren / CopyRates
  • www.mql5.com
Abzählen der Elemente von der Startposition wird von der Gegenwart zur Vergangenheit durchgeführt, d. h. Startposition, 0, bedeutet die laufende Bar. Beim Kopieren der im voraus unbekannten Anzahl der Daten ist es empfehlenswert, als Feld-Rezipient ein dynamisches Feld zu verwenden, denn wenn die Anzahl der Daten weniger (oder mehr) ist als ein...
 
Carl Schreiber:

Das ist ein bisschen wenig.

Willst Du das auf einem Chart sehen, in einem EA oder einem Indikator - auf welchem Zeitrahmen läuft er?

In MQL5 gäbe es CopyRates(). Damit lädt man Kurse die Kerzen oder Bars und sucht dann den entsprechenden Zeitpunkt.

Wie gesagt, auf Tageschart möchte ich den Vergleich anwenden. Es soll ein EA werden, der alle nachfolgenden Kerzen eines Monates mit der ersten Kerze vergleicht.

Zum Hintergrund: Ich möchte mit dem EA einen Backtest ausführen, nicht automatisch handeln.

Gibt es in mql so eine Art Funktion wie "First candle of the week/of the month" oder sowas?

 
ProteinY:

Wie gesagt, auf Tageschart möchte ich den Vergleich anwenden. Es soll ein EA werden, der alle nachfolgenden Kerzen eines Monates mit der ersten Kerze vergleicht.

Zum Hintergrund: Ich möchte mit dem EA einen Backtest ausführen, nicht automatisch handeln.

Gibt es in mql so eine Art Funktion wie "First candle of the week/of the month" oder sowas?

Du kannst über MqlTime den ersten tag des Monats auslesen

 
ProteinY:

Wie gesagt, auf Tageschart möchte ich den Vergleich anwenden. Es soll ein EA werden, der alle nachfolgenden Kerzen eines Monates mit der ersten Kerze vergleicht.

Zum Hintergrund: Ich möchte mit dem EA einen Backtest ausführen, nicht automatisch handeln.

Gibt es in mql so eine Art Funktion wie "First candle of the week/of the month" oder sowas?

Nein, es gibt nur die Funktionen, die hier aufgelistet sind: https://www.mql5.com/de/docs/function_indices

Dokumentation zu MQL5: MQL5 Funktionenliste
Dokumentation zu MQL5: MQL5 Funktionenliste
  • www.mql5.com
Fügt Daten aus einem Array vom Typ MqlTick in die Preishistorie eines benutzerdefinierten Symbols hinzu. Das benutzerdefinierte Symbol muss im Fenster MarketWatch (Marktübersicht) ausgewählt werden Liest aus der Datei des Typs CSV die Zeile eines der Formate: "YYYY.MM.DD HH:MI:SS", "YYYY.MM.DD" oder "HH:MI:SS" - und wandelt sie in den Wert des...
 
amando:

Du kannst über MqlTime den ersten tag des Monats auslesen

die Funktion  MqlTime finde ich nicht in dieser Liste.

Naja, schade, dachte mir schon, dass es nicht einfach sein wird. :(

Danke trotzdem.

 
  • Das Datum mit TimeCurrent in ein MqlDateTime lesen.
  • Im MqlDateTime Struct das Feld .day auf 1 setzen.
  • Daraus mit StructToTime wieder ein datetime erzeugen.
  • Mit iBarShift auf D1 nach dem passenden Shift-Wert suchen.
 
lippmaje:
  • Das Datum mit TimeCurrent in ein MqlDateTime lesen.
  • Im MqlDateTime Struct das Feld .day auf 1 setzen.
  • Daraus mit StructToTime wieder ein datetime erzeugen.
  • Mit iBarShift auf D1 nach dem passenden Shift-Wert suchen.

hier meine include dazu

//+------------------------------------------------------------------+
//|                                                     ZeitMQL4.mqh |
//|                                                		     |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+

#property link      "http://www.mql5.com"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+



int Year()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.year);
  }
  
int month()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.mon);
  }

int Hour()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.hour);
  }
  

int HourGMT()
  {
   MqlDateTime tm;
   TimeGMT(tm);
   return(tm.hour);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int DayOfWeek()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.day_of_week);
  }

    
int DayOfMonth()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.day);
  }
//+------------------------------------------------------------------+
int TimeDayOfWeek(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.day_of_week);
  }
  
int DayOfYear ()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.day_of_year);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Minute()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.min);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Sekunde()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.sec);
  }
//+------------------------------------------------------------------+
 

Ja, die Zeit richtig zu berechnen kann manchmal sehr wichtig sein. Ich habe das mal etwas in Form gebracht:

datetime ErsterDesMonats()
  {
   MqlDateTime mdt;
   TimeCurrent(mdt);              // Zeit in struct einlesen
   mdt.day=1;                     // Tag des Monats auf 1. setzen
   datetime dt=StructToTime(mdt); // umwandeln in datetime (Unixzeit)
   return dt;
  }
Nachtrag: Es kann beim Rückwandeln in datetime zu Fehlern kommen, wenn zwischenzeitlich eine Zeitumstellung stattfand. Daher besser noch die Uhrzeit auf 0:00 setzen.
 
Vielen Dank für eure ausführliche und konkrete Hilfe. Ich weiß das sehr zu schätzen! Kann man gar nicht genug betonen!
Grund der Beschwerde: