EA dreier MA crossover
Hallo zusammen,
ich bin noch ganz neu in der Mql4-Welt. Dennoch habe ich mal versucht einen einfachen EA über einen dreier MA Crossover zu schreiben. PHP-Code:
Ich hätte die Bedingungen auch in einer If-Schleife schreiben können, doch das hat auch nicht funktioniert. Kann mir da jemand weiterhelfen? Vielen Dank Postbote |
hänge den EA doch mal hier mit dran, ...
|
Hallo,
probiers mal hiermit: Code:
int start() Gruß antikythera |
Hallo,
Danke für die Hilfe. Genauso hatte ich es im ersten Schritt versucht. Trotzdem wird beim Backtesting kein Trade ausgeführt. Programmiere ich dieses allerdings nur für zwei MA, dann funktioniert alles einwandfrei. Ich habe irgendwie den Verdacht, dass mit der if-Funktion irgendwas nicht stimmt, aber das sind nur Mutmaßungen eines Anfängers ;). Vielleicht weiß jemand mehr? |
in Deiner Version sind zwei Fehler:
1. double Ma1 = iMA(NULL,0, >Ma1< ,Ma1Shift,Ma1Method,Ma1AppliedTo,1); die Variable Ma1 in iMA(..., ..., Ma1 muß durch eine Variable ersetzt werder die die Periode des MA beinhaltet. (sh. oben) 2. die if-Entscheidungen: if(Ma1>Ma2) und if(Ma11<Ma21) heben sich in Deinem Code gegenseitig auf, somit kann das nicht funktionieren double Ma1 = iMA(NULL,0,Ma1,Ma1Shift,Ma1Method,Ma1AppliedTo,1); <--------- double Ma2 = iMA(NULL,0,Ma2,Ma2Shift,Ma2Method,Ma2AppliedTo,1); <--------- double Ma3 = iMA(NULL,0,Ma3,Ma3Shift,Ma3Method,Ma3AppliedTo,1); double Ma11 = iMA(NULL,0,Ma1,Ma1Shift,Ma1Method,Ma1AppliedTo,2); <--------- double Ma21 = iMA(NULL,0,Ma2,Ma2Shift,Ma2Method,Ma2AppliedTo,2); <--------- if(Ma1>Ma2) <--------- if(Ma1>Ma3) if(Ma2>Ma3) if(Ma11<Ma21) <--------- if(OrdersTotal()==0) . . . |
Liste der Anhänge anzeigen (Anzahl: 2)
simples Teil, s. Anhang, da öffnet er zumindest trades ...
|
Zitat:
Die o.g. 1. und 4. Abfrage (Pfeile) werden sich deshalb nicht "aufheben", weil die Zuweisung der Werte zu Ma1 und MA2 aus den Indikatorabfragen 1 und 2 in die Abfragen 4 bzw. 5 (wieder fälschlicherweise als Periode) eingesetzt werden und daraus die Ma-Werte Ma 11 und Ma21 berechnet werden. Da die Perioden als int-Werte verarbeitet werden, die o.g. Perioden aber als Double-Werte eingesetzt werden, ist so oder so zweifelhaft, was die Indiaktorabfragen ergeben, wenn aus den Double-Werten durch Abschneiden der Nachkommastelle ein int-Wert reduziert wird. Also einfach in den externen Variablen den MAs die Perioden zuweisen und alles ist gut. Die Abfragelogik der Kreuzung ist soweit in Ordnung. traderdoc |
Stimmt, die Ma1/Ma2 und Ma11/Ma21 heben sich nicht gegenseitig auf - hatte die unterschiedlichen Shift Parameter ganz rechts übersehen.
Sorry:D |
Die kommen noch dazu. Aber selbst wenn dort auch eine 1 gestanden hätte, würde für Ma11 und Ma21 etwas anderes berechnet werden als für Ma1 und Ma2. Erklärung in meinem vorhergehenden Post.
traderdoc |
Super, vielen Dank!!! Ist echt nett von Euch!
Es funktioniert alles einwandfrei, genauso wie mir das vorgestellt habe. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:06 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum