Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Neuer Valerius Metatrader 4 EA (http://www.expert-advisor.com/forum/showthread.php?t=5159)

MA-EA 13.09.16 20:35

Liste der Anhänge anzeigen (Anzahl: 1)
Wenn mein CCI so falsch ist, warum hat der EA dann heute im Demo
rund 30 € Gewinn gemacht? Obwohl tatsächlich die Ausstiegs-Bedingungen ungünstig geproggt waren.

Mit der Version im Anhang müsste es besser laufen.

ralfbenker 13.09.16 21:31

Nur weil der EA heute mal Gewinn gemacht hat muss die Einstiegsbedingung ja nicht unbedingt richtig programmiert sein.

Hast Du Dir mal die Werte von IL1_B1 oder IL1_B0 mit Print() anzeigen lassen.
Beide Variablen sind immer NULL !!!

somit musst Du in Zeile 123 nicht schreiben CCI_B1<IL1_B1
Sondern könntest auch schreiben CCI_B1< 0
Statt CCI_B0<IL1_B0 geht dann auch CCI_B0<0.

Dasselbe ist in Zeile 135 CCI_B1>IL1_B1 kannst Du ersetzen mit CCI_B1>0


Dein EA wird dasselbe Ergebnis liefern im Backtest aber nicht das tun was du denkst was er tut :-)
Hast Du eigentlich nen System nach dem Du die geschweiften Klammern setzt oder machst Du das nach Zufallsprinzip solange bis keine Fehlermeldungen erscheinen ?
Sorry, Du musst das Sprachkonzept lernen sonst wird das nie was.

traderdoc 13.09.16 21:52

Zitat:

Zitat von ralfbenker (Beitrag 35740)
Nur weil der EA heute mal Gewinn gemacht hat muss die Einstiegsbedingung ja nicht unbedingt richtig programmiert sein.

Hast Du Dir mal die Werte von IL1_B1 oder IL1_B0 mit Print() anzeigen lassen.
Beide Variablen sind immer NULL !!!

Hast Du eigentlich nen System nach dem Du die geschweiften Klammern setzt oder machst Du das nach Zufallsprinzip solange bis keine Fehlermeldungen erscheinen ?
Sorry, Du musst das Sprachkonzept lernen sonst wird das nie was.

Ja, davon rede ich schon die ganze Zeit!!
Aber der Junge ist einfach lernresistent.

traderdoc

traderdoc 13.09.16 22:30

Ach so, was ich noch dazu ergänzen wollte:

Das ist ne richtig logische Logik: "Der EA hat heute Gewinn gemacht, da muß er ja richtig programmiert sein".

Was es aber nicht auch alles gibt.

traderdoc

MA-EA 13.09.16 22:40

Kollegen...

Sorry, ich hab keinen Bock, jetzt noch mal Alles zu erklären. ;)
Also macht einfach folgendes Experiment: Kompiliert den EA,
den ich heute zuletzt hoch geladen hab. Dann testet ihn mal mit
"Indicator Line"s 100 u. -100. Dann noch mal mit "Period" 1 und 1. Oder was Ihr Euch da gedacht habt.

Dann helft mir bitte mit dem Einbau des Relativ Vigor Index. Wenn
wir uns beim CCI nicht einig werden, kann zur Not der RVI dessen Job
übernehmen.

Viel Spaß und gute Nacht. :cool:

traderdoc 13.09.16 23:14

Zitat:

Zitat von MA-EA (Beitrag 35745)
Kollegen...

Sorry, ich hab keinen Bock, jetzt noch mal Alles zu erklären. ;)
Also macht einfach folgendes Experiment: Kompiliert den EA,
den ich heute zuletzt hoch geladen hab. Dann testet ihn mal mit
"Indicator Line"s 100 u. -100. Dann noch mal mit "Period" 1 und 1. Oder was Ihr Euch da gedacht habt.

Dann helft mir bitte mit dem Einbau des Relativ Vigor Index. Wenn
wir uns beim CCI nicht einig werden, kann zur Not der RVI dessen Job
übernehmen.

Viel Spaß und gute Nacht. :cool:

Du brauchst es nicht zum 100. mal erklären. Damit wird es auch nicht besser.

Diese Zeile ist richtig, weil die dritte Variable eine Indikatorperiode ist!!!
double CCI_B0 = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 0);

In dieser Zeile steht als Indikatorperiode eine -100. Erstens können Perioden nur positiv sein, ansonsten setzt der Compiler dafür eine 0 ein und damit ist das Ergebnis IL1_B0 immer!!!!!!!! 0.
double IL1_B0 = iCCI(_Symbol,_Period, indicator_level1, CCI_Price, 0);//-100

In dieser Zeile wird zwar für IL_2B0 ein Wert errechnet, weil die dritte Variable positiv ist, aber mit der Periode 100 soll da sicherlich nicht gerechnet werden, d.h. der errechnete Wert bezieht sich auf die letzten 100!!! Kerzen.
double IL2_B0 = iCCI(_Symbol,_Period, indicator_level2, CCI_Price, 0);//+100

So, also wenn Du nun immer noch nicht Deinen fatalen Denkfehler erkannt hast, dann kann Dir keiner mehr helfen. Und das hat nichts mit "nicht Bock haben" zu tun und auch nicht mit "nicht einig werden". Das hat was mit einer simplen, aber korrekten Programmierung zu tun.
Alles andere ist Murks, Ausprobiererei, Nonsens.

traderdoc

MA-EA 14.09.16 09:32

Liste der Anhänge anzeigen (Anzahl: 2)
Ok, wisst Ihr was? Wir (bzw. Ihr) lassen den CCI einfach raus. ;) Stattdessen
verwenden wir einfach den Relativ Vigor Index. Weiß aber nicht so
richtig, wie einbaun. :confused:

traderdoc 14.09.16 10:35

Ich habe ja nun schon wirklich unzähligen Usern programmtechnisch geholfen, den richtigen Weg zu finden. So auch in Deinem Fall, nur mit dem Unterschied alle! anderen haben die Tips und Hinweise dankend angenommen, sofort umgesetzt und nicht vor lauter Trotz das Handtuch hingeschmissen.
Das ist definitiv der falsche Weg, weil Du so nicht weiter kommen wirst. Das, was hier passiert ist, wird symptomatisch weiterbestehen. Eingebaute Fehler, die nicht sofort sichtbar sind, wie der mit dem iCCI(), werden dann nicht erkannt und könnten sich ggf. sehr negativ auswirken.

traderdoc

ralfbenker 14.09.16 18:48

Kann ich nur bestätigen. Ob iCCI(), iRVI(), iRSI() oder wie die Indikatorfunktionen alle heißen- deren Verwendung ist immer gleich. Und wenn das mit iCCI zu kompliziert für dich ist wird das mit iRVI auch nicht besser.

Programmieren kann man lernen. Aber nur mit probieren ohne Verständnis wird das nichts.

MA-EA 14.09.16 19:16

Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von ralfbenker (Beitrag 35758)
Falls Du dann doch mql4 Code schreiben solltest findest Du die Definition des iCCI in der Referenz:

double iCCI(
string symbol, // symbol
int timeframe, // timeframe
int period, // averaging period
int applied_price, // applied price
int shift // shift
);
Die Funktion iCCI benötigt genau diese 5 Parameter um ein Ergebnis zu liefern.
Oder an welcher Stelle meinst Du der Funktion iCCI mitzuteilen über wieviele Perioden sie berechnet werden soll?
Mit iCCI deklariest Du keine Linien sondern den Wert des iCCI im angegebenen Bar(shift).
Und ob der iCCI <>100/-100 ist prüfst Du dann mit einem Vergleich
iCCI()>100 oder iCCI<-100.

Shift funktioniert nicht. Darf ich fragen, wo Du die 5-Zeilen Liste
her hast? Ich jedenfalls hab in der Quelldatei nur diese
Parameter gefunden:
Code:

extern int InpCCIPeriod = 14;
extern double indicator_level1 = -100.0;
extern double indicator_level2 = 100.0;
input ENUM_APPLIED_PRICE CCI_Price = PRICE_TYPICAL;

Der Rest bezieht sich wohl auf diese MA-Quelldatei. S. Anhang.

Wenn ich das richtig verstehe, wird der CCI hier nicht als
Funktion benutzt, sondern nur abgefragt. Bin aber Voll-Noob. :rolleyes:


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:31 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