Aus eigenen Werten mehrere Durchschnitte berechnen und vergleichen
hallo zusammen,
bin mal wieder am rumbastelln und frage mich ob das so funktionieren könnte ich erhalte aufgrund von berechnungen nach jedem Tick einen double wert ... nun möchte ich folgendes erreichen: sammeln der ersten 20 werte -> daraus denn durchschnitt berechnen und Temporär in einer Variable "Durchschnitt [5] speichern sammeln der nächsten 20 werte -> daraus denn durchschnitt berechnen und Temporär in einer Variable "Durchschnitt [4] speichern ... sammeln der letzten 20 werte -> daraus denn durchschnitt berechnen und Temporär in einer Variable "Durchschnitt [0] speichern dann soll z.b Durchschnitt [0] mit Durchschnitt [1] verglichen werden und darauf eine handels entscheidung getroffen werden... dannach sollt der ältere Durchschnitt [5] hinten heraus fallen, alle anderen eine stelle nachrücken, und vorne der Durchschnitt[0] durch die neuen 20 Tickwerte berechnet werden. könnte das so funktioniern wie ich es mir zusammen gebastelt habe: hier der mal der betreffende Ausschnitt: Code:
//+------------------------------------------------------------------+ |
OK das vorhin war ein noch ein sehr fehler behafteter Code ... hab aus versehen denn falschen eingestellt:
im nachfolgend hab ich schon die kleineren Fehler ausgebügelt :D 3 fehler kann ich allerdings nicht lösen: hier hab ich wohl ein double-int Kompatibilitätsproblem: da [Periode-1] eine int ist? Code:
double Du[Periode-1]; // erstellt Extern Eingestellte Anzahl an "Du" Variablen (z.B. Du 0-9) genau so auch beiden beiden anderen fehlern:( hier nochmal der korrigierte code mit denn 3 Fehlern Code:
//+------------------------------------------------------------------+ |
leider wurde meine überarbeitete Version von heute morgen noch nicht frei gegeben .... aber zudem hab ich wohl noch 2 Logische Probleme erkannt und versucht zu beheben ....
bei (Periode <=1) darf keine 1 stehen sondern eine 0: Code:
if (Periode <=0) //Wenn alle Werte der Variablen von "DU [9]-[0]" vergeben sind so sollte das richtiger sein: Code:
if (Periode <=0) //Wenn alle Werte der Variablen von "DU [9]-[0]" vergeben sind |
Ok, also ein weiteres der Probleme hab ich nach langem Forschen jetzt glaub ich zumindest mal selber wieder einkreisen können ....
Ich Versuche hier am Anfang Code:
double Du[Periode-1]; // erstellt Extern Eingestellte Anzahl an "Du" Variablen (z.B. Du 0-9) Was ich noch nicht ganz nachvollziehen kann. Denn währe die Variable "Periode" noch nicht mit einem Wert bestückt währe die Sache ja klar, da der Compiler wissen muss wieviel Speicher er belegen soll, das könnte er aber in diesem Fall nicht, da er erst zur Laufzeit festlegen kann wieviel Speicher er braucht. Darum könnte der Code also gar nicht kompiliert werden, und deswegen würde es einen Fehler geben .... Nur in meinem Fall hab ich ja die "extern int Periode = 10;" am Anfang schon auf "10" voreingestellt !? Also müsste er sie doch berechnen können? Oder hab ich da was falsch verstanden? Mfg |
Es ist immer für uns nützlich, auch den Fehler als Ausgabetext hier mit dazuzuschreiben.
traderdoc |
die Fehlermeldung die unten steht ist :
'[' - invalid index value ... also "[" - ungültiger Indexwert und zudem noch diese 3: ... (obwohl ich mir sicher bin das kein Semicolon zuviel oder zu wenig hab) :confused: '}' - semicolon expected Forum TestDatei.mq4 143 4 '}' - unexpected end of program Forum TestDatei.mq4 355 1 '}' - unexpected end of program Forum TestDatei.mq4 355 1 |
Es gibt zwei Möglichkeiten:
1. Man deklariert das Array z.B. mit double Array[5];, also einer konkreten Feldgröße oder 2. Man deklariert das Array allgemein mit double Array[]; und später über ArrayResize(Array, x); traderdoc |
ahja ok .... also quasi am Anfang:
extern int PeriodenLaenge = 10; double Du[]; und dann in: void OnTick() ArrayResize(Du,PeriodenLaenge-1); das heist also man kann ein Array nicht mal eben über ein Du[Variable] erstellen sondern muss denn Umweg über ArrayResize(Du,Variable); nehmen :eek: hab das jetzt mal so umgesetzt und der Fehler ist jetzt weg :D Super Danke :) hab jetzt auch endlich die anden 3 Fehlermeldungen lösen können manchmal sind die schon ziemlich verwirrend zeigt mir 3 fehlermeldungen obwohl letztlich nur ein ";" gefehlt hatte :confused: |
Zitat:
traderdoc |
Ok, das werd ich mal machen wenn ich wieder Zuhause bin ;)
Hab heute morgen mal nen Testlauf auf demokonto gestartet, nur leider scheint der EA noch nicht zu funktionieren :( Auf meinem mobilen MT4 wird angezeigt das er noch keinen einzigen Handel getätigt hat ... |
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:58 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