|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Fehlermeldungen im Editor
Hallo schaue mir auf Youtube immer wieder Videos an vom Programmieren. Mache auch alles so wie es dort aufgeführt wird. Der Metaeditor mault aber immer etwas anderes. Ich bin schon am Verzweifeln und das geht ziemlich auf die Fingernägel. Hab den Code hier genau eingegeben.
void OnTick() { //aktuelle Kerze Langsame EMA double LangsamerMovingAverage = iMA(NULL,0,18,0,MODE_EMA,PRICE_CLOSE,0); // letzte Kerze Langsame EMA double LetzteLangsamerMovingAverage = iMA(NULL,0,18,0,MODE_EMA,PRICE_CLOSE,1); //aktuelle Kerze Schnelle EMA double SchnelleMovingAverage = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,0); //letzte schnelle EMA double LetzteSchnelleMovingAverage = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,1) //wenn der Schnelle Moving Average jetzt oben ist if ((LetzteSchnelleMovingAverage < LetzteLangsamerMovingAverage)&&(SchnelleMovingAver age> LangsamerMovingAverage)); // Chart Ausgabe Kaufen Comment ("Kaufen"); //wenn der Schnelle Moving Average jetzt unten ist if ((LetzteSchnelleMovingAverage > LetzteLangsamerMovingAverage)&&(SchnelleMovingAver age< LangsamerMovingAverage)); // Chart Ausgabe Verkaufen Comment ("Verkaufen"); } Er sagt mir aber immer wieder 'if' - semicolon expected EMA 7-18 Crossover.mq4 22 2 empty controlled statement found EMA 7-18 Crossover.mq4 22 116 empty controlled statement found EMA 7-18 Crossover.mq4 28 116 1 error(s), 2 warning(s) 2 3 Was ist nun schon wieder falsch? Danke für eure Tipps. |
|
|||
Zitat:
Bei den Bedingungen müssten insgesamt 4 Klammern weg können. Zitat:
|
|
|||
Nee! So wie der Code hier steht, wird der Comment zwar auch ausgeführt, aber unabhängig von der if-Bedingung. Nach der if-Bedingung steht kein Semikolon, sondern erst nach der 1. auszuführenden Operation, also z.b.
if(a=1) b=2; Sind mehrere Operationen unter der if-Bedingung auszuführen, müssen die in geschweiften Klammern gefasst werden, z.B. if(a=1) {b=2; c=3;} Dann muss nach jeder unter der if-Bedingung auszuführenden Operationen ein Semikolon stehen. if(a=1); nimmt der Compiler zwar auch, es gibt dann aber keine Operation, die unter der if-Bedingung auszuführen wäre. Alles klar? Geändert von KeepItEasy (19.03.17 um 21:47 Uhr) |
|
|||
Hi 30acker.investing,
ohne es getestet zu haben sollte es so laufen. Einfach kopieren und ersetzen. Einmal fehlte ein Semikolon und zweimal war eines zuviel. Wie schon in den vorhergehenden Beiträgen beschrieben, nach if() kommt kein Semikolon. Code:
void OnTick() { //aktuelle Kerze Langsame EMA double LangsamerMovingAverage = iMA(NULL,0,18,0,MODE_EMA,PRICE_CLOSE,0); // letzte Kerze Langsame EMA double LetzteLangsamerMovingAverage = iMA(NULL,0,18,0,MODE_EMA,PRICE_CLOSE,1); //aktuelle Kerze Schnelle EMA double SchnelleMovingAverage = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,0); //letzte schnelle EMA double LetzteSchnelleMovingAverage = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,1); //wenn der Schnelle Moving Average jetzt oben ist if ((LetzteSchnelleMovingAverage < LetzteLangsamerMovingAverage)&&(SchnelleMovingAverage> LangsamerMovingAverage)) // Chart Ausgabe Kaufen Comment ("Kaufen"); //wenn der Schnelle Moving Average jetzt unten ist if ((LetzteSchnelleMovingAverage > LetzteLangsamerMovingAverage)&&(SchnelleMovingAverage< LangsamerMovingAverage)) // Chart Ausgabe Verkaufen Comment ("Verkaufen"); } |
|
|||
Das ; fehlt aber am Ende der Deklaration dieses MA:
|
|
|||
Ich fasse mal zusammen, was die beiden richtigerweise herausgefunden haben.
Es gibt in diesem Code: 1. einen entscheidenden syntaktischen Fehler durch das Fehlen des ; nach der Zeile double LetzteSchnelleMovingAverage = iMA(NULL,0,7,0,MODE_jEMA,PRICE_CLOSE,1) 2. und eine logischen Fehler durch das Weglassen der der Anweisung nach den if-Abfragen, mit oder auch ohne {} Klammern. Richtig wäre z.B. : //wenn der Schnelle Moving Average jetzt oben ist if ((LetzteSchnelleMovingAverage < LetzteLangsamerMovingAverage)&&(SchnelleMovingAver age> LangsamerMovingAverage)) Comment ("Kaufen"); Die inneren () könnte man auch in diesem! Falle weglassen, stören aber weder die Compilierung noch den Prozessablauf. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
error, fehler, fehlermeldung, mql4, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|