|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Frage an die Profis
Hi, ich bin gerade am überlegen, was genau die BREAK-Anweisung in folgendem Zusammenhang bewirkt.
Code:
void PlaceArrowUp(int Parameter){ if(Bedingung1){ for(int i=1;i<=100;ki){ if(Bedingung2){ x++; break; } } } } |
|
|||
Und noch eine Frage:
Dass man nur eine begrenzte Zahl an indicator_buffers benutzen darf ist mir bewusst. Aber kann es sein, dass man auch nur eine begrenzte Anzahl an gewöhnlichen Arrays verwenden darf ? |
|
|||
Zitat:
"Aber kann es sein, dass man auch nur eine begrenzte Anzahl an gewöhnlichen Arrays verwenden darf?" Das wäre mir neu. Nur wird die Geschwindigkeitsperformance Deines PCs unter einer Vielzahl von Arrays leiden, v.a. wenn diese mehrdimensional sind und zahlreiche Felder aufweisen. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke für die Antwort, ich frage mich nun, ob es in MQL eine Funktion gibt, die mir die Ableitung einer Indikatorlinie errechnet.
Falls es keine bessere Option gibt, errechne ich einfach die Steigung zwischen 2 nebeneinanderliegenden Punkten. |
|
|||
Nein, eine solche Funktion gibt es nicht.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Beim anwenden meines Indikators habe ich festgestellt, dass er an manchen Stellen nicht die gewünschte Anzeige macht, obwohl der Code keine Syntax-Fehler enthält.
Ist es möglich, dass der Indikator mit anderen Kursdaten arbeitet, als sie im Chart angegeben werden ? Ich meine gelesen zu haben, dass die Historie zum testen von von EA's von den angezeigten Werten abweicht und dass 2 Historien mit verschiedenen Datentypen existieren, auf die MT4 zugreift. Meine Frage lautet nun: Kann ich eine Historie downloaden und MT4 so einstellen, dass auch genau diese Historie angezeigt UND mit ihr gerechnet wird ? Geändert von Biatsch (27.04.15 um 21:30 Uhr) |
|
|||
Das Nichtanzeigen von Signalen muß ja nicht zwangsläufig auf Systaxfehler basieren. Oder anders gesagt, ein Systaxfehler würde automatisch zum Versagen der Lauffähigkeit des Indikators führen.
Und es wird nur auf die im entsprechenden Ordner hinterlegte Kurshistorie zurückgegriffen. Viel wahrscheinlicher könne sein, dass der Indikator auf Daten in einem anderen TimeFrame zugreift und diese mitverarbeitet und dann im Arbeitstimeframe daraufhin keine Signale liefert. Dazu müßte man einen Blick in den Code werfen. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Nun, die Antwort ist, wenn man den Code vor sich hat, meistens ganz einfach. So auch hier:
Code:
void PlaceArrowUp(int i){ if( (Open[i] > iMA(NULL,0,21,MA_Shift,MODE_SMA,PRICE_CLOSE,i)) && (Open[i+1] < iMA(NULL,0,21,MA_Shift,MODE_SMA,PRICE_CLOSE,i+1)) && (Close[i+1] > iMA(NULL,0,21,MA_Shift,MODE_SMA,PRICE_CLOSE,i+1)) ){ for(int k=1;k<=26;k++){ if( Low[i+k] < (iMA(NULL,0,21,MA_Shift,MODE_SMA,PRICE_CLOSE,i+k)-0.02) ){ x++; ObjectCreate("BUY" + x,OBJ_ARROW,0,Time[i],Low[MinClose]); ObjectSet ("BUY" + x,OBJPROP_COLOR,Blue); ObjectSet ("BUY" + x,OBJPROP_ARROWCODE,SYMBOL_ARROWUP); ObjectSet ("BUY" + x,OBJPROP_WIDTH,5); ObjectSet ("BUY" + x,OBJPROP_BACK,true); break; } } } } Es wird immer ein Pfeil gesetzt, wenn z.B.!! 1. das Open der Kerze 1 über dem oberen MA liegt und 2. das Open der Vorgängerkerze 2 unter und das Close dieser Kerze über dem oberen MA liegt und 3. von Kerze 2 aus gesehen (incl. dieser) 26 Kerzen nach links irgendwann mal das Low jener Kerze unter dem unteren MA liegt. Damit sind alle Bedingungen genannt. Der Pfeil in dem linken gelben Kreis ist ok, weil innerhalb der letzten 26 Kerze mindestens 2 mit dem Low unter dem unteren MA lagen. Die Kerze links neben der Pfeilkerze hat das Open unter und das Close über dem oberen MA und da Open der Pfeilkerze liegt über dem oberen MA also alles palletti! Aber!!!!!!!, auch der Pfeil in dem linken blauen Kreis ist völlig regelkonform, denn für diese Pfeilkerze gelten dieselben Bedingungen wie für die vorhergenannte, denn auch in diesem Fall befindet sich mindesten 1 Kerze mit dem Low unter der unteren MA, die Kerze links der Pfeilkerze har den oberen MA gekreuzt und das Open der Pfeilkerze liegt über dem oberen MA - auch alles paletti. Dasselbe gilt für die anderen beiden Pfeile!! traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Deshalb wollte ich ja im 2. Code eine neue Variable einfúhren, die den Wert 0 annimmt, sobald der untere MA durchbrochen wurde.
Sobald der obere MA durchbrochen wird soll ein Pfeil gesetzt werden und diese Variable den Wert 1 annemhen. Bevor diese Variable nicht wieder auf 0 ist, darf kein weiterer Pfeil gezeichnet werden. So habe ich das im 2. CODEBLOCK implementieren wollen, aber als Resultat erhalte ich das,was im 2. Bild zu sehen ist. |
Lesezeichen |
Stichworte |
break, break befehl, mql4, programmierung metatrader |
|
|