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: 43252
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- Thomas75
vor 14 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 05.10.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Question Erste Programmierversuche...HILFE Fehlermeldung!

Hallo liebe MQL4 Experten. Ich benötige bei folgendem Fehler Eure Hilfe.
Ich - ein blutiger Programmieranfänger - kann mit folgendem Fehler leider relativ wenig anfangen... Und jetzt kommt Ihr ins Spiel. Könnt ihr mir verraten, was ich falsch mache?!

// Moving Average
double MAlang = iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,1);
double MAlangVorperiode = iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,2);
double MAkurz = iMA(NULL,0,MA_kurz,0,MODE_SMA,PRICE_CLOSE,1);
double MAkurzVorperiode = iMA(NULL,0,MA_kurz,0,MODE_SMA,PRICE_CLOSE,2);
// RSI
double RSI = iRSI(Symbol(),0,RSI_Perioden,PRICE_CLOSE,0);
double RSI1 = iRSI(Symbol(),0,RSI_Perioden,PRICE_CLOSE,1);

// Handelssignale ermitteln
if(NeuePeriodeBegonnen == true)
{
// Buy Signal
if(MAkurz>MAlang && MAkurzVorperiode<=MAlangVorperiode && RSI>RSI_BuyLevel && RSI1<RSI_BuyLevel);
{
LongSignal = true;
}
else LongSignal = false;

Hier erhalte ich beim Kompilieren die Fehlermeldung " 'else' - illegal 'else' without matching 'if' ... Letzten Endes soll der Quote zum Ausdruck bringen: "Wenn die oben genannten Bedingungen erfüllt worden sind, handelt es sich um ein LongSignal. Wenn die Bedingungen nicht vollständig erfüllt sind, gibt es kein entsprechendes LongSignal.
  #2 (permalink)  
Alt 05.10.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
// Handelssignale ermitteln
if(NeuePeriodeBegonnen == true) {  // Buy Signal
   if(MAkurz > MAlang && MAkurzVorperiode <= MAlangVorperiode && RSI > RSI_BuyLevel && RSI1 < RSI_BuyLevel) {
      LongSignal = true;
   } else LongSignal = false;
}
Da war ein ; zuviel und eine } zu wenig.

Beim Codeschreiben hier immer den #-Button oben in der Icon-Leiste drücken und vor und nach mathematischen Operationszeichen eine Leerstelle einfügen, damit man den Code besser lesen kann. Desweiteren klar strukturierte Klammern setzen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 05.10.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Standard

Sehr cool traderdoc, danke. Jetzt ist die Fehlermeldung futsch. Wenn die Strategie jetzt noch aufgeht wäre das der Knaller. Aber ein Schritt nach dem anderen
  #4 (permalink)  
Alt 07.10.17
mat mat ist offline
Neues Mitglied
 
Registriert seit: Oct 2017
Beiträge: 16
mat befindet sich auf einem aufstrebenden Ast
Standard

Das if() kannst Du noch sehr schön kürzen:

Code:
LongSignal = ( MAkurz>MAlang && MAkurzVorperiode<=MAlangVorperiode && RSI>RSI_BuyLevel && RSI1<RSI_BuyLevel );
Das ersetzt das komplette if-else, denn in der Klammer steht ja ein boolescher Ausdruck.

Analoges gilt für das äußere if, das Ganze wird zu:

Code:
if( NeuePeriodeBegonnen ) LongSignal = ( MAkurz>MAlang && MAkurzVorperiode<=MAlangVorperiode && RSI>RSI_BuyLevel && RSI1<RSI_BuyLevel );
denn NeuePeriodeBegonnen ist ja schon boolean, das muss nicht mehr mit ›true‹ oder ›false‹ verglichen werden.

LG Mat
  #5 (permalink)  
Alt 09.10.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Standard

Hey Mat,
vielen Dank für deinen (sehr guten) Hinweis. Je kürzer und einfacher es am Ende ist, desto besser
  #6 (permalink)  
Alt 09.10.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
if( NeuePeriodeBegonnen ) LongSignal = ( MAkurz>MAlang && MAkurzVorperiode<=MAlangVorperiode && RSI>RSI_BuyLevel && RSI1<RSI_BuyLevel );
Das wäre in der Tat die kürzeste Form. Nur ist in de Praxis die kürzeste Form nicht immer diejenige, welche sich am besten lesen lässt. Das hängt aber auch wieder vom Übungsgrad des Programmieres ab.

Der boolean-Vergleich entfällt bei mir auch permanent.
Für die if else-Schleife können man nun auch noch schreiben:

Code:
if (NeuePeriodeBegonnen) {  // Buy Signal
   LongSignal = false;
   if(MAkurz > MAlang && MAkurzVorperiode <= MAlangVorperiode && RSI > RSI_BuyLevel && RSI1 < RSI_BuyLevel) LongSignal = true;
}
Aber das ist alles Geschmackssache. Wichtig ist nur, dass man sich auch nach einem Jahr in seinem eigenen Code wieder gut zurechtfindet.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
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 12:56 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.
-----------------------------------------------------------------------------------------------------------------------------