Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43274
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 5 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 268
Gesamt: 268
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 19.03.17
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 12
30acker.investing befindet sich auf einem aufstrebenden Ast
Standard 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.
  #2 (permalink)  
Alt 19.03.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von 30acker.investing Beitrag anzeigen
//letzte schnelle EMA
double LetzteSchnelleMovingAverage = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,1)
Da fehlt nen ; am Ende.

Bei den Bedingungen müssten insgesamt 4 Klammern weg können.
Zitat:
Zitat von 30acker.investing Beitrag anzeigen
//wenn der Schnelle Moving Average jetzt oben ist
if (LetzteSchnelleMovingAverage < LetzteLangsamerMovingAverage&&SchnelleMovingAverag e> LangsamerMovingAverage);

// Chart Ausgabe Kaufen
Comment ("Kaufen");

//wenn der Schnelle Moving Average jetzt unten ist
if (LetzteSchnelleMovingAverage > LetzteLangsamerMovingAverage&&SchnelleMovingAverag e< LangsamerMovingAverage);

// Chart Ausgabe Verkaufen
Comment ("Verkaufen");

}
  #3 (permalink)  
Alt 19.03.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 18
KeepItEasy befindet sich auf einem aufstrebenden Ast
Standard

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)
  #4 (permalink)  
Alt 19.03.17
Mitglied
 
Registriert seit: Feb 2017
Beiträge: 31
ping befindet sich auf einem aufstrebenden Ast
Standard

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");
}
ciao ping
  #5 (permalink)  
Alt 19.03.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Das ; fehlt aber am Ende der Deklaration dieses MA:
Zitat:
Zitat von 30acker.investing Beitrag anzeigen
//letzte schnelle EMA
double LetzteSchnelleMovingAverage = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,1)
  #6 (permalink)  
Alt 20.03.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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

Lesezeichen

Stichworte
error, fehler, fehlermeldung, mql4, programmierung, programmierung metatrader, programmierung mql4

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------