Jump to content
Tom Next - Daytrading Community

Recommended Posts

Hallo, ich benötige zur Aufbereitung von Werten für eine Handelsstrategie folgende Daten zur weiteren Verarbeitung in Excel:

- High und Low für den Zeitraum 8:00 Uhr (Vortag) bis 8:00 Uhr (Folgetag);

- Schlusskurs 8:00 Uhr (Folgetag) für mehrere Währungspaare.

Lässt sich so etwas mit einem EA, Script, oder wie machen?

Manuell ist das kein Problem, macht aber sehr viel Aufwand ;-)

Die Übernahme von Daten aus dem MT4 nach Excel ist mir bekannt und ich habe das auch bereits gemacht.

Aber eben die konkreten Zahlen zum konkreten Zeitpunkt ist mir unklar, wie ich das machen kann.

Vielleicht hat jemand eine Idee. Danke

Freundliche Grüße

Siegfried

Link to comment
Share on other sites

Hi kreto,

 

ja lässt sich machen. Wenn nur für History, dann am besten per script, sonst per EA.

Da deine Zeiten in ganzen Stundeneinheiten sind, am besten im H1 die History durchgehen und entsprechend die Werte in ein csv schreiben.

 

danke für die Antwort.

Ich kann leider weder EA noch script programmieren ;-)

Könntest du das machen?

Link to comment
Share on other sites

Könntest du das machen?

Können: ja. Aber mit beruflichen Auftragsarbeiten in dem Bereich hab ich schon länger aufgehört. Und ehrenamtliche Auftragsarbeit ist irgendwie ein Widerspruch in sich ;)

 

(Wir unterstützen dich aber natürlich gerne bei der Umsetzung)

Link to comment
Share on other sites

Können: ja. Aber mit beruflichen Auftragsarbeiten in dem Bereich hab ich schon länger aufgehört. Und ehrenamtliche Auftragsarbeit ist irgendwie ein Widerspruch in sich ;)

 

(Wir unterstützen dich aber natürlich gerne bei der Umsetzung)

 

ok, dafür habe ich Verständnis.

Wie könnte ein Unterstützung aussehen?

Will es ja auch lernen...

Link to comment
Share on other sites

Wenn du richtig EA-programmieren lernen willst, gibts hier einige gute Threads zum starten. Wenn es dir eher darum geht mit unserer Hilfe dein Export-Script auf die Beine zu stellen, würde ich vorschlagen die einzelnen Bereiche Schritt für Schritt anzugehen.

 

Die Frage ist also: was soll es sein und wieviel Erfahrung im Programmieren hast du schon?

Link to comment
Share on other sites

stimmt, ist mein 1. Beitrag und habe das falsch gemacht ;-)

Ach is nich schlimm. Wollte auch nich pingelig sein. Ist nur der Ordnung wegen, damit alle dann die interessanten Beiträge auch wiederfinden, die hier so entstehen.

Und so bleibt zudem die Arena "Wirtschaft&Polttik" für verbalmartialische Auseinandersetzungen über Europa und Grundeinkommmen usw usw. frei. good.gif

Is eigentlich auch nicht meine Baustelle, aber da die Mods ein anspruchsvolles und zugleich nachwirkendes Wochenende hatten..... vola3.gif

 

btw. "1.Beitrag":

Herzlich Willkommen bei uns! troete.gif

Link to comment
Share on other sites

Wenn du richtig EA-programmieren lernen willst, gibts hier einige gute Threads zum starten. Wenn es dir eher darum geht mit unserer Hilfe dein Export-Script auf die Beine zu stellen, würde ich vorschlagen die einzelnen Bereiche Schritt für Schritt anzugehen.

 

Die Frage ist also: was soll es sein und wieviel Erfahrung im Programmieren hast du schon?

 

Hat etwas länger gedauert, weil ich überlegen musste.

Meine Entscheidung ist, dass ich das "nur" für diesen script machen möchte.

Also nochmals Schritt für Schritt:

1. Es wird High und Low für den 24-h Zeitraum 8:00 Uhr Vortag bis 8:00 uhr aktueller Tag ermittelt.

2. Die Werte High und Low werden in eine Excel Tabell übertragen.

3. Es wird der Wert c (Abschlusswert), ebenfalls 8:00 Uhr für den aktuellen Tages ermittelt.

4. Dieser Wert wird ebenfalls in die gleiche Excel Tabelle übertragen.

Das wars eigentlich schon.

Link to comment
Share on other sites

Ach is nich schlimm. Wollte auch nich pingelig sein. Ist nur der Ordnung wegen, damit alle dann die interessanten Beiträge auch wiederfinden, die hier so entstehen.

Und so bleibt zudem die Arena "Wirtschaft&Polttik" für verbalmartialische Auseinandersetzungen über Europa und Grundeinkommmen usw usw. frei. good.gif

Is eigentlich auch nicht meine Baustelle, aber da die Mods ein anspruchsvolles und zugleich nachwirkendes Wochenende hatten..... vola3.gif

 

btw. "1.Beitrag":

Herzlich Willkommen bei uns! troete.gif

 

danke, den Tipp habe ich von cxelo07 erhalten :-)

Link to comment
Share on other sites

1. Es wird High und Low für den 24-h Zeitraum 8:00 Uhr Vortag bis 8:00 uhr aktueller Tag ermittelt.

Das geht recht einfach indem man die gesamte History der vorhandenen H1 Bars durchläuft. bei geändertem TimeDayOfYear() die Werte zurücksetzt und dazwischen mit den Bars innerhalb des Zeitraums aktualisiert

2. Die Werte High und Low werden in eine Excel Tabell übertragen.

Das würde ich nicht direkt machen, sondern die ermittelten Werte in ein csv schreiben das dann in Excel importiert werden kann. Glücklicherweise bietet MT4 sehr einfache Funktionen für Filezugriff, siehe auch hier

 

3. Es wird der Wert c (Abschlusswert), ebenfalls 8:00 Uhr für den aktuellen Tages ermittelt.

4. Dieser Wert wird ebenfalls in die gleiche Excel Tabelle übertragen.

Würde ich direkt mit High und Low ermitteln und schreiben.

 

Im wesentlichen brauchst du also vermutlich nur Bars, FileOpen, FileWrite, FileClose, High, Low, Close, Time, TimeHour und TimeDayOfYear.

 

Das wars eigentlich schon.

genau, mehr steckt da nicht dahinter.

  • Upvote 1
Link to comment
Share on other sites

Das geht recht einfach indem man die gesamte History der vorhandenen H1 Bars durchläuft. bei geändertem TimeDayOfYear() die Werte zurücksetzt und dazwischen mit den Bars innerhalb des Zeitraums aktualisiert

 

Das würde ich nicht direkt machen, sondern die ermittelten Werte in ein csv schreiben das dann in Excel importiert werden kann. Glücklicherweise bietet MT4 sehr einfache Funktionen für Filezugriff, siehe auch hier

 

 

Würde ich direkt mit High und Low ermitteln und schreiben.

 

Im wesentlichen brauchst du also vermutlich nur Bars, FileOpen, FileWrite, FileClose, High, Low, Close, Time, TimeHour und TimeDayOfYear.

 

 

genau, mehr steckt da nicht dahinter.

 

mhm, da bin ich überfordert.

Habe jetzt mal den MetaQuotes aus dem MT4 geöffnet und ein script geladen.

Und da geht es schon los.

start

die Schleife durchlaufen, d.h. jede h, Wert erfassen zum nächsten.

dann filteren, high und low

dies in csv schreiben, wie? wo liegt dann die Datei?

das Gleiche mit dem Abschlusswert.

Vom Ablauf ist es mir klar, aber wie in die richtige Reihenfolge mit den richtigen Befehlen?

Das ist schwierig...

Link to comment
Share on other sites

Hallo kreto Howdy.gif

Willkommen bei Tom-Next !

 

Da du nicht programmieren kannst (Ich auch nicht) hier mal ein "Rohling", wie so etwas aussehen könnte.

Der EA ist m.M.n. schon sehr nah dran an dem was du suchst.

Allerdings ist er in dieser Form nicht lauftüchtig da die Daten (deine Wünsche) erst entsprechend eingetragen werden müssen.

 

Einiges muß sicher verändert und umgeschrieben werden, z.B. die gleitenden Durchschnitte die du nicht benötigst,

aber vllt. schon mal ein Anfang, in Verbindung mit Mythos seinen Links.

 

// Copyright 2006, by juanchoc & neo.

// juan@forexproyect.com.ar

 

 

CSV_Export_Expert.mq4

  • Upvote 1
Link to comment
Share on other sites

Hallo kreto Howdy.gif

Willkommen bei Tom-Next !

 

Da du nicht programmieren kannst (Ich auch nicht) hier mal ein "Rohling", wie so etwas aussehen könnte.

Der EA ist m.M.n. schon sehr nah dran an dem was du suchst.

Allerdings ist er in dieser Form nicht lauftüchtig da die Daten (deine Wünsche) erst entsprechend eingetragen werden müssen.

 

Einiges muß sicher verändert und umgeschrieben werden, z.B. die gleitenden Durchschnitte die du nicht benötigst,

aber vllt. schon mal ein Einfang, in Verbindung mit Mythos seinen Links.

 

// Copyright 2006, by juanchoc & neo.

// juan@forexproyect.com.ar

 

 

CSV_Export_Expert.mq4

 

erst einmal ein ganz großes Kompliment. Diese Unterstützung habe ich nicht so erwartet.

Schnell, viele Anregungen, viele, die helfen wollen.

Ganz toll, bis hierher erst einmal DANKE

Ich bin überzeugt, mit eurer Unterstützung werde ich das schaffen.

Link to comment
Share on other sites

start

die Schleife durchlaufen, d.h. jede h, Wert erfassen zum nächsten.

dann filteren, high und low

genau, am besten vor der Schleife die 3 variablen definieren.

Wenn du das script dann standardmäßig auf H1 ausführst sind die Werte der H1 Bars in den vordefinierten Variablen High,Low,Close,Time... gespeichert und du kannst sie so direkt abfragen.

 

dies in csv schreiben, wie? wo liegt dann die Datei?

Darüber gibt die Hilfe auskunft:

int FileOpen( string filename, int mode, int delimiter=';')

 

Opens file for input and/or output. Returns a file handle for the opened file or -1 (if the function fails). To get the detailed error information, call GetLastError() function.

Notes: Files can only be opened in the terminal_directory\experts\files folder (terminal_directory ester\files if for expert testing) or in its subfolders.

FILE_BIN and FILE_CSV modes cannot be used simultaneously.

If FILE_WRITE does not combine with FILE_READ, a zero-length file will be opened. If even the file containd some data, they will be deleted. If there is a need to add data to an existing file, it must be opened using combination of FILE_READ | FILE_WRITE.

If FILE_READ does not combine with FILE_WRITE, the file will be opened only if it already exists. If the file does not exist, it can be created using the FILE_WRITE mode.

No more than 32 files can be opened within an executable module simultaneously. Handles of files opened in the same module cannot be passed to other modules (libraries).

 

In deinem Fall wirst du also

FileOpen("my_data.csv",FILE_CSV|FILE_WRITE,';');

brauchen, halt mit deinem Filenamen.

 

Vom Ablauf ist es mir klar, aber wie in die richtige Reihenfolge mit den richtigen Befehlen?

Das ist schwierig...

 

Stimmt, es is nicht einfach für einen Neuling. Wenn du deine ersten Versuche postest können wir vielleicht etwas direkter helfen bzw. aufzeigen wo die Fehler sind.

Am Anfang ist es vermutlich der Beste Ansatz sich selber zu überlegen wie man die Daten verarbeiten würde, wenn einem jemand nacheinander jeden einzelnen Bar zeigt. Genau so macht es das Script dann in der Schleife.

Link to comment
Share on other sites

genau, am besten vor der Schleife die 3 variablen definieren.

 

So das habe ich jetzt recherchiert.

Wären das die Befehle für die Schleife:

 

if(copied<0) return;

int k=0;

while(k<copied && !IsStopped())

 

Variable definieren:

 

int high

int low

int close

 

 

Wenn du das script dann standardmäßig auf H1 ausführst sind die Werte der H1 Bars in den vordefinierten Variablen High,Low,Close,Time... gespeichert und du kannst sie so direkt abfragen.

 

 

Darüber gibt die Hilfe auskunft:

 

 

In deinem Fall wirst du also

FileOpen("my_data.csv",FILE_CSV|FILE_WRITE,';');

brauchen, halt mit deinem Filenamen.

 

 

 

Stimmt, es is nicht einfach für einen Neuling. Wenn du deine ersten Versuche postest können wir vielleicht etwas direkter helfen bzw. aufzeigen wo die Fehler sind.

Am Anfang ist es vermutlich der Beste Ansatz sich selber zu überlegen wie man die Daten verarbeiten würde, wenn einem jemand nacheinander jeden einzelnen Bar zeigt. Genau so macht es das Script dann in der Schleife.

Link to comment
Share on other sites

Darf ich fragen wie du auf diese codezeilen kommst? Welchen Zweck erfüllt zB. copied? Woher hast du IsStopped?

 

Zu deiner Frage: das while ist eine Schleife, ja.

 

Wenn dus in dem Stil machen würdest dann sollte es eher so aussehen:


int k= 1;
int high,low,close;
while(k <= Bars) {

// berechnung bei offset Bars-k
k++;
}

 

Schöner wär allerdings statt while eine for zu nehmen:

for(int k= 1;k <= Bars;k++) {
// Berechnung...
}

Link to comment
Share on other sites

Da ich keinen richtigen Anhaltspunkt habe, wurde ich in google fündig ;-)

Das habe ich gefunden: Nachschlagewerk fuer die Programmiersprache MQL5 (in deutsch!)

Ich glaube, dass es das auch hier im Forum als Link gibt. Ansonsten stelle ich das natürlich gerne rein.

Ist aber sehr umfangreich, sehr komplex. Weiß auch nicht, ob das das Richtige ist.

Ich suche nach wie vor nach einer Beschreibung für die Erstellung von script.

Link to comment
Share on other sites

kreto scheint ja recht motiviert zu sein, weiß aber glaube ich gar nicht so recht, wo er überhaupt anfangen soll.

 

Wäre es nicht vllt. hilfreich, erst mal einen Beginn als Code zu posten, den man dann sukzessive nach seinen Vorstellungen weiter ausbaut ?

Könnte doch vom vom Verständnis sicher sehr lehrreich sein.

Link to comment
Share on other sites

Für alle Neulinge die das allererste mal ein Script in MT4 programmieren wollen ist der MetaEditor natürlich die erste Anlaufstelle. Dort öffnet man ein neues Script (File->New->Script). Namen etc. kann man sich frei aussuchen.

Nun hat man das Grundgerüst vor einem und muss nur noch die start() - Funktion mit der gewünschten Logik füllen.

 

Wie in mehreren Threads hier schon ausführlich erklärt ist MQL4 stark an C angelehnt. Für genauere Informationen vor allem zur Syntax etc. empfehle ich das MQL-Book. Sofern Zeit vorhanden das gesamte durchlesen, ansonsten nur die nötigen Stellen.

 

Im konkreten Fall sollte (wie schon gesagt) das Script aus 3 Teilen bestehen:

 

1. Öffnen des Files und initialisierung der Variablen. Die nötigen Funktionen (is nur eigentlich nur eine) wurden oben bereits erwähnt. In den verlinkten Stellen aus der MQL referenz sind auch Beispielcodeblöcke wie die Funktionen zu verwenden sind deswegen poste ich die hier nicht nochmal.

 

2. Die Schleife.

Wie oben geschrieben empfehle ich eine For-Schleife die von hinten (Index Bars -1) nach vorne (Index 0) alle Bars durchgeht.

Bei jedem Bar schaut man sich mit TimeHour die Stunde an, abhängig davon werden dann die variablen gesetzt. für ein Script das nur auf H1 läuft würd sowas vermutlich funktionieren:

bool newDay= false;
for(k= Bars-1;k >= 0;k--) {
int hour= TimeHour(Time[k]);
if(hour == HourStart || (!newDay && hour> HourStart)) {
 high= High[k];
 low= Low[k];
 close= Close[k];
 newDay= true;
} else if(hour > HourStart && hour >= HourEnd) {
 if(high < High[k])
   high= High[k];
 if(low > Low[k])
   low= Low[k];
 close= Close[k];
} else if(hour > HourEnd && newDay) {
 FileWrite(fileHandle,high,low,close);
 newDay= false;
}
}

 

3. File schließen - und aus ;)

 

hth

  • Upvote 1
Link to comment
Share on other sites

Hallo Mythos,

danke für die Erklärung und den Code (hätte ich nicht so zusammen bekommen!)

Warum sollte man nicht die deutsche Beschreibung MQL5 nehmen?

Sind da zum MQL 4 große Unterschiede, bzw. geht das gar nicht?

So wo stehen jetzt die Daten und wie bekomme ich die in Excel?

Werde das testen und meine Bemerkungen dazu machen.

Freundliche Grüße

Siegfried

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...