![]() |
|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
![]() |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
![]()
Hallo, vielleicht kennt ihr das Problem.
Viele Broker zeigen im Exoten Chart z.B. rückwirkend bis Jahr 2016 an. Nun möchte ich in eine Abfrage von den letzten 5 Jahren ausführen, wie stellt man sicher das auch wirklich alles durchlaufen wird und nicht mittendrin abgebrochen wird, oder weil keine Daten mehr kommen. Beispiel: HighLowCalcBars=1000 for (int o=0;o<HighLowCalcBars;o++) Was passiert wenn nach 696 Bars keine Daten (oder "0") mehr ankommen/vorhanden sind? Ist das was der Broker an Zeitspanne im Chart anzeigt, auch das was maximal an Daten zur Verfügung steht? Kann man das mit einer Fehler Routine abfangen und wenn ja, wie müßte die aussehen? Danke für jede Info! Mimo |
|
|||
![]()
Dann würde ich lieber von links anfangen.
Code:
HighLowCalcBars = 1000; for (o = HighLowCalcBars - 1; o >= 0; o--)
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
![]() Zitat:
Aber was mach ich wenn statt den 1000 nur 600 Werte vorhanden sind? Kann man das mit einer Fehlerroutine abfangen? z.B. 800 Werte von 1000 sind da, es wird weiter gehandelt, halt nur mit 800 Werten 600 Werte von 1000 sind da, es wird nicht weiter gehandelt! Mimo |
|
|||
![]()
Die Abfrage wird dann dort anfangen, wo auch Kerzen vorhanden sind.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
![]()
Das ist klar, was nicht da ist, ist nicht da, aber ohne Fehlerroutine einfach akzeptieren was da ist? Wobei das nicht als Fehler zu sehen ist, es sind einfach nicht genug Daten da. Ich versuche mal etwas, wenn es klappt informe ich ich gerne.
Mimo |
|
|||
![]()
Lösung:
Um das Problem einer unvollständigen Abfrage zu verhindern, hole ich mir die notwendigen Werte, in diesem Fall iHigh und iLow von einem externen Anbieter der ganz sicher vollständige Daten hat, lese diese ein und speichere sie in globalen Variablen ab. Mimo |
|
|||
![]() Zitat:
1. Was verstehst Du unter globalen Variablen? 2. Warum sollen die dort gespeichert werden, wenn sie nach dem Einlesen eh in den historischen Daten stehen? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
![]() Zitat:
GlobalVariableSet(Symbol()+"-BlaBla", BlaBla() aber das ändere ich in statische Werte, fix codiert im EA. Beispiel: Sollte der aktuelle Preis den Fix Wert über/untersteigen gibt es einen Alert (Mail, Screen, Log). Das Problem liegt eher am historischen/aktuellen Datenfeed, nicht einmal Dukascopy hat eine Vollständigkeit. Daher habe ich mir in meinem EA ein Modul geschrieben welche alle notwendigen Werte wöchentlich in eine CSV schreibt, welche ich wiederum via Excel auswerten kann. Das ist nur notwendig wenn ein Alarm anschlägt und nur bei dem WP! Da reicht es manuell. Viele Broker haben nur History ab 2016, manche Exoten sogar erst ab 2018, dann gibt es Broker die nur 30 WP im Programm haben, andere wiederum haben eine unrealistische Margin Percentage pro WP. Manche haben 4 Digits, andere 5 Digits beim gleichen WP, uvm. Einige schreiben zwar die Änderungen im Terminal/Mailbox, aber wer liest denn das schon... Alle diese Parameter gilt es zu benennen um daraus eine Bandbreite an zu erstellen um automatisch handeln zu können. Mich interessieren keine Indikator Werte! Beispiel: Am CHF ist die Standard Margin Percentage 100-250% je nach Cross, wenn jetzt wie zu 2015 die SNB meldet und im Monat davor ALLE Broker die Margin Percentage auf 5000% angehoben haben, dann darf und kann ein EA keine CHF Order mehr (neu) öffnen und muss einen Alarm ausgeben wenn die Margin Percentage über den Standard Wert 250% steigt und das Trading gestoppt werden. Im schlimmsten Fall, steigt die "Used Margin" soweit an das es einen Margin Call gibt und der Sold Out beginnt. Wäre nicht notwendig wenn auf die "sekundär" Parameter auch Wert gelegt wird. Die manuellen Trader sehen und reagieren, die EA Trader wohl meistens nicht, daher muss ein EA auch diese Zustände verarbeiten können-aber wer beachtet die Margin Percentage? Gerade jetzt wegen ESMA Regeln sind alle Margin Werte/Routinen/Alarme als Pflichtprojekt zu sehen. Offshore zu gehen ist eine Sache, auch ASIC wird sich irgendwann den globalen Standard 1:30 annähern, in Japan ist 1:30 Normalität, oder sie werden keine EU Bewohner mehr annehmen (wie US). Die FCA UK hat trotz Brexit die ESMA Regeln bereits fix übernommen. Mimo |
|
|||
![]()
Sorry, aber Dir ging es doch initial um die Datenlücken bei den OHLC-Werten.
Und wenn Du historisch da was auswerten willst, wirst Du nicht umhinkommen, Deine Historie mit externen Daten zu füttern. Wie weit die zurückgreifen sei erst mal dahingestellt. Da braucht man doch aber nichts in irgendwelche Variablen zu schreiben. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
![]() Zitat:
Ich dachte mit Dukascopy ist man gut bedient, der Feed ist zwar zu 95% durchgängig, aber mehr als 60 WP haben sie auch nicht! Tolle Exoten wie EURCHN haben sie nicht, da kann man echt gut abkassieren! Und ja ich habe mir 20 verschiedene Broker Demos geladen, die Minimum 100 WP haben, EURILS (ILS Israel Shekel) geht auch sehr gut, es müssen ja nicht die immer wiederkehrenden 15 WP sein! Auch ist die Volatilität durch die ESMA stark reduziert und somit sind auch WP zu beachten die eine Tagesrange von 2-3000 Pips haben, auch das werte ich aus (History TagesHi-Low/5, ohne Sonntag), denn ohne Volatilität gibt es weder Verlust noch Gewinn! Darum bin ich persönlich der Meinung das man sich breiter aufstellen muss bei den WP und auch quer über alle Regulierungen arbeiten sollte und somit auch die Broker = Maximale Diversifikation, denn es wird eine Marktbereinigung bei den Brokern geben! Bei ESMA, FCA, ASIC wird es kaum Probleme geben, aber Offshore? Mimo |
![]() |
Lesezeichen |
|
|