Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fehlermeldung nach Kompilieren

Geschrieben

Moin Freunde,

 

kann sich mal jemand mein Programm anschauen, ich finde den Fehler nicht, der nach dem Compilieren angezeigt wird.

Sicherlich nur eine Kleinigkeit, aber ich finde ihn nicht...

wk_superindikator_advisor.mq4

wk_superindikator.mq4

Bearbeitet von ronner
Titel geändert

Featured Replies

Geschrieben
Moin Freunde,

 

kann sich mal jemand mein Programm anschauen, ich finde den Fehler nicht, der nach dem Compilieren angezeigt wird.

Sicherlich nur eine Kleinigkeit, aber ich finde ihn nicht...

 

du hast die Variable iMA deklariert. Im MetaEditor siehst du, dass diese farblich anders dargestellt wird als all deine anderen Variablen.

Und zwar aus dem Grund, da diese einen bereits benutzten Namen eines fest eingebauten Indikators nutzen möchte.

Geschrieben

//Indikatorberechnung
  MA01=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE, i);   // MA aktuell
  MA02=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE,i+1);   // MA vor 1 Balken 
  MA03=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE,i+2);   // MA vor 2 Balken

	L1=	MA01-MA02; //
	L2=	MA02-MA03;
	Dyn=   L1/(MathAbs(MA01-MA03));
	 
//Einstiegsrichtung
  if (iMA>0 && iMAold<0)	   
  longentry=true; 

  if (iMA< && iMAold>0)   
  shortentry=true;

iMAold wird nicht gesetzt.

iMA ist eine Indikator der vom MT4 bereits belegt ist den du hier keine Parameter gibst. MT4 verlangt für diesen Indikator Werte.

Deine Variabeln heissen MA01, MA02 und MA03. Die tauchen aber nicht auf für deiner Einstiegsentscheidung.

Du hast versucht die relevante Information vom Indikator rauszukopieren und in deinem Advisor reinzukopieren. Versucht doch einfach den Indikator per iCustom zu benutzen.

if(CalcCurOrd()==0) 
  if(CalcCurOrd()!=0) { Order_nachsenden(); }

Macht keinen Sinn. Entweder ist etwas ==0 oder !=0

Geschrieben
  • Autor
wie sieht denn die Fehlermeldung aus? Ist der Fehler im Indi oder im EA?

Ein bissl mehr info als nur "da passt was nit, sagt mir bitte was es is" wäre nett.

 

 

Fehlermeldung ist im EA

Geschrieben
  • Autor
Fehlermeldung ist im EA

 

 

Es zeigt nach meinem Eingriff noch diesen Fehler an: '>' - left parenthesis expected

und: '<' - left parenthesis expected

 

Was ich aber überhaupt nicht verstehe, denn die Klammern sind doch (wie ich meine) richtig gesetzt...

Überarbeitetes Programm habe ich nochmal im Anhang.

wk_superindikator_advisor.mq4

Geschrieben

   
if (iMA>0)		
  longentry=true;  
...
if (iMA<0)		 
  shortentry=true;

Du kannst auch draufklicken auf die Fehlermeldung und er springt dann ins entsprechende Feld wo er diesen Fehler sieht.

Hierbei handelt es sich um die Parametergabeüber vom iMA welche bei dir fehlen.

HIER findest du die Doku welche Parameter MT4 haben will.

Geschrieben
Es zeigt nach meinem Eingriff noch diesen Fehler an: '>' - left parenthesis expected

und: '

Welche Zeile?

 

Was ich aber überhaupt nicht verstehe, denn die Klammern sind doch (wie ich meine) richtig gesetzt...

 

ja, die Klammern sind richtig, aber du hast das Problem von vorher nicht behoben.

Was genau hast du denn getan um das Problem zu beheben? (Das Problem war, das du einer Variable einen reservierten(also unerlaubten) Namen gegeben hast)

Geschrieben
  • Autor
Welche Zeile?

 

 

 

ja, die Klammern sind richtig, aber du hast das Problem von vorher nicht behoben.

Was genau hast du denn getan um das Problem zu beheben? (Das Problem war, das du einer Variable einen reservierten(also unerlaubten) Namen gegeben hast)

 

 

Okay Freunde,

 

das eine Problem habe ich erkannt und habe die richtigen Variablen eingesetzt (hoffe ich doch). Jetzt erscheinen nur noch drei Warnungen:

 

Function "CalcCurOrd" is not referenced and will be removed from exp-file

Function "PointX" is not referenced and will be removed from exp-file

Function "Order_nachsenden" is not referenced and will be removed from exp-file

 

Diese Warnungen erschienen aber vorher nicht, kann ich nicht verstehen.

 

Noch eine kleine Frage: wie muß ich eigentlich vorgehen, wenn ich den Quelltext hier im Editor in einen dafür vorgesehenen Container einbetten möchte ?

 

Danke

wk_superindikator_advisor.mq4

Geschrieben
Function "CalcCurOrd" is not referenced and will be removed from exp-file

Das bedeutet nur das die jeweilige Funktion zwar geschrieben ist, aber nirgends verwendet wird. Wenn du also denkst das eine der genannten Funktionen schon verwendet wird, solltest nochmal nachschauen, ansonsten ist alles ok.

 

Bei der Fehleranzeige ist es so: Wenn davor bereits Fehler auftreten, vor allem bei Syntaxfehlern, dann werden nicht immer alle anderen Fehler auch angezeigt, da der Compiler dann ja nicht weiß wie es richtig sein sollte, und damit möglicherweise andere Fehler übersieht oder ignoriert.

 

Noch eine kleine Frage: wie muß ich eigentlich vorgehen, wenn ich den Quelltext hier im Editor in einen dafür vorgesehenen Container einbetten möchte ?

 

Du schreibst es so (also der Text der jetzt im Container steht, dann einfach direkt in den Post)

[mql]
...beliebiger mql code
[/mql]

Geschrieben
  • Autor
Du schreibst es so (also der Text der jetzt im Container steht, dann einfach direkt in den Post)

 

Danke für die Hilfe. Kannst Du nochmal nachschauen was die Ursache dafür ist, daß er im Backtest nur Longpositionen generiert ?

Ich selbst finde im Programm leider auch nicht den Fehler...

Bearbeitet von ronner
Zitat gekürzt + vorhergehender (Zitat)Beitrag gelöscht

Geschrieben

	  MA01=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE, i);   // MA aktuell
//Einstiegsrichtung
  if (MA01>0)		
  longentry=true; 
  if (MA01<0)		 
  shortentry=true;

schau dir den code mal an.

du machst es abhängig davon ob ein moving average positiv oder negativ ist.

MA01= iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE, i); // MA aktuell

da wir aber IMMER einen positiven closewert haben muss der moving average der darauf basiert auch immer positiv sein.

Geschrieben
  • Autor
	  MA01=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE, i);   // MA aktuell
//Einstiegsrichtung
  if (MA01>0)		
  longentry=true; 
  if (MA01<0)		 
  shortentry=true;

schau dir den code mal an.

du machst es abhängig davon ob ein moving average positiv oder negativ ist.

MA01= iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE, i); // MA aktuell

da wir aber IMMER einen positiven closewert haben muss der moving average der darauf basiert auch immer positiv sein.

 

 

Ehrlich gesagt komme ich noch nicht ganz mit. Ich will doch erreichen, daß eine Longposition aufgebaut wird, wenn der MA positiv wird und eine Shortposition wenn er negativ wird. Das habe ich doch aber geschrieben in der Einstiegsrichtung...

Geschrieben
  • Autor
Schau dir mal die Werte des MA im Chart (bzw. Datenfenster) an, siehst du da einen Bar wo der MA negativ ist? Wenn ja mach bitte einen Screenshot und stells hier rein.

 

 

Ich meine den Indikatorwert. Wenn dieser unter die Null-Linie geht, wird er doch negativ. Wahrscheinlich deute ich hier irgendwas nicht richtig. Im Anhang ist aber das was ich meine.Indikator.xls

Geschrieben

Hier findest du die Doku für iCustom womit du einen Indikator direkt abrufen kannst.

Der Code hierbei würde dann so aussehen

 //Indikator
  double supertrend;
  supertrend=iCustom(NULL, 0, "wk_Superindikator",Period_MA1,History,0,0);
  //Einstiegsrichtung
  if (supertrend>0)		
  longentry=true; 
  if (supertrend<0)		 
  shortentry=true;

ich weiss aber nicht ob du diesen hier 1 zu 1 übernehmen kannst da der aufgerufene Indikator "wk_Superindikator" bei dir "wk-Superindikator" heissen könnte. ->Unterstrich-Bindestrich.

dies ist schon ein wenig kürzer als dein Code

 

 //--------- Berechnung i -----------------------------------------------------------  

int i, Counted_bars;				
  Counted_bars=IndicatorCounted(); 
  i= Bars-Counted_bars-1;		   
  if (i>History-1)
  i= History-1;		   

//Indikatorberechnung
  MA01=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE, i);   // MA aktuell
  MA02=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE,i+1);   // MA vor 1 Balken 
  MA03=   iMA(NULL,0,Period_MA1,0,MODE_EMA,PRICE_CLOSE,i+2);   // MA vor 2 Balken

	L1=	MA01-MA02; //
	L2=	MA02-MA03;
	Dyn=   L1/(MathAbs(MA01-MA03));
   
//Einstiegsrichtung
  if (MA01>0)		
  longentry=true; 
  
  if (MA01<0)		 
  shortentry=true;

Dein Fehler lag übrigens daran dass du MA01 zum entry verglichen hast. Du hättest ehr den Dyn nehmen sollen der im Indikator auch genommen wurde. Dein MA01 war nur eine Zwischenvariable den man zu berechnung braucht.

Geschrieben
  • Autor

Habe ich verwendet und es funktioniert jetzt auch. Die Backtest-Ergebnisse sind aber nicht so berauschend...

Es ist eben doch nicht so einfach, ein wirklich gut funktionierendes Programm, das auch gute Handelsergebnisse bringt, zu erstellen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.