Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Geschrieben

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

Featured Replies

Geschrieben

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.

Geschrieben
  • Autor

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?

Geschrieben

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)

Geschrieben
  • Autor

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...

Geschrieben

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?

Geschrieben
  • Autor

Das Thema passt nich so ganz in den Bereich "Wirtschaft und Politik" oder? bye2.gif

 

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

Geschrieben

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

Geschrieben
  • Autor

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.

Geschrieben
  • Autor

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 :-)

Geschrieben

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.

Geschrieben
  • Autor

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...

Geschrieben

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

Geschrieben

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

Der hier cxalgo heißt :wink:. Sei's drum: Herzlich Willkommen an Board :captn:.

Geschrieben
  • Autor

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.

Geschrieben

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.

Geschrieben
  • Autor

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.

Geschrieben
  • Autor

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

 

Danke für den Hinweis

Geschrieben

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...
}

Geschrieben
  • Autor

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.

Geschrieben

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.

Geschrieben

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

Geschrieben
  • Autor

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

Geschrieben
  • Autor

so sollte das dann aussehen:

//+------------------------------------------------------------------+
//|														excel.mq4 |
//|					  Copyright © 2012, MetaQuotes Software Corp. |
//|                                     http://www.metaquotes.net
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link	  "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function									|
//+------------------------------------------------------------------+

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

// berechnung bei offset Bars-k
k++;
}
FileOpen("my_data.csv",FILE_CSV|FILE_WRITE,';');
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;
}
}

Bearbeitet von Mythos
code-tags eingefügt

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.