Geschrieben 23. April 201214 Jr. comment_133932 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. DankeFreundliche GrüßeSiegfried Melden
Geschrieben 23. April 201214 Jr. comment_133935 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. Melden
Geschrieben 23. April 201214 Jr. Autor comment_133944 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? Melden
Geschrieben 23. April 201214 Jr. comment_133945 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) Melden
Geschrieben 23. April 201214 Jr. Autor comment_133949 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... Melden
Geschrieben 23. April 201214 Jr. comment_133950 Das Thema passt nich so ganz in den Bereich "Wirtschaft und Politik" oder? Melden
Geschrieben 23. April 201214 Jr. comment_133951 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? Melden
Geschrieben 23. April 201214 Jr. Autor comment_133953 Das Thema passt nich so ganz in den Bereich "Wirtschaft und Politik" oder? stimmt, ist mein 1. Beitrag und habe das falsch gemacht ;-) Melden
Geschrieben 23. April 201214 Jr. comment_133954 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. Is eigentlich auch nicht meine Baustelle, aber da die Mods ein anspruchsvolles und zugleich nachwirkendes Wochenende hatten..... btw. "1.Beitrag":Herzlich Willkommen bei uns! Melden
Geschrieben 23. April 201214 Jr. Autor comment_133955 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. Melden
Geschrieben 23. April 201214 Jr. Autor comment_133956 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. Is eigentlich auch nicht meine Baustelle, aber da die Mods ein anspruchsvolles und zugleich nachwirkendes Wochenende hatten..... btw. "1.Beitrag":Herzlich Willkommen bei uns! danke, den Tipp habe ich von cxelo07 erhalten :-) Melden
Geschrieben 23. April 201214 Jr. comment_133957 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 aktualisiert2. 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. Melden
Geschrieben 23. April 201214 Jr. Autor comment_133959 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.startdie Schleife durchlaufen, d.h. jede h, Wert erfassen zum nächsten.dann filteren, high und lowdies 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... Melden
Geschrieben 23. April 201214 Jr. comment_133960 Hallo kreto 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 Melden
Geschrieben 23. April 201214 Jr. comment_133962 danke, den Tipp habe ich von cxelo07 erhalten :-)Der hier cxalgo heißt . Sei's drum: Herzlich Willkommen an Board . Melden
Geschrieben 23. April 201214 Jr. Autor comment_133963 Hallo kreto 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 DANKEIch bin überzeugt, mit eurer Unterstützung werde ich das schaffen. Melden
Geschrieben 24. April 201214 Jr. comment_133968 startdie Schleife durchlaufen, d.h. jede h, Wert erfassen zum nächsten.dann filteren, high und lowgenau, 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. Melden
Geschrieben 25. April 201214 Jr. Autor comment_133980 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 highint lowint 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. Melden
Geschrieben 25. April 201214 Jr. comment_133982 @kreto, war das Absicht ins Zitat von Mythos die Antwort zu schreiben ? Weil das liest so keiner und möchte auch keiner lesen Melden
Geschrieben 25. April 201214 Jr. Autor comment_133983 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 highint lowint close Danke für den Hinweis Melden
Geschrieben 25. April 201214 Jr. comment_133986 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... } Melden
Geschrieben 26. April 201214 Jr. Autor comment_134002 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. Melden
Geschrieben 26. April 201214 Jr. comment_134003 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. Melden
Geschrieben 26. April 201214 Jr. comment_134024 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 Melden
Geschrieben 27. April 201214 Jr. Autor comment_134030 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üßeSiegfried Melden
Geschrieben 27. April 201214 Jr. Autor comment_134031 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 27. April 201214 Jr. von Mythos code-tags eingefügt Melden
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