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)
-   -   Chartperiode erzwingen (http://www.expert-advisor.com/forum/showthread.php?t=1980)

idefix2 24.02.12 14:22

Chartperiode erzwingen
 
Hallo,

kann man in einem EA irgendwie die Chartperiode vorgeben, sodass sich das Chartfenster bei Start des EA automatisch auf die gewünschte Periode umstellt und sich dann nicht mehr ändern lässt - weil wenn man unbedacht eine andere Periode einstellt, wird der EA ja komplett neu gestartet, das ist ja in der Regel nicht das, was man sich wünscht.

Ich habe einen EA geschrieben, der auf die einzelnen Ticks direkt reagiert und die benötigten daten speichert, sodass er die Kerzendaten gar nicht verwendet und ihm die angezeigte Chartperiode eigentlich egal wäre. Es würde mir schon genügen, wenn ich verhindern könnte, dass der bei einem Wechsel der Periode automatisch neu initialisiert wird - wobei ja alle Variablen ihre Werte verlieren und er wieder neu zu rechnen anfangen muss.

sandmann23 24.02.12 14:40

Hi,

schau mla in der MT HIlfe unter:

int UninitializeReason( )

und/oder int Period( )

Gruss
sandmann

idefix2 25.02.12 13:29

Wenn ich das richtig verstehe, kann ich eine Änderung der Timeframe also nicht verhindern, aber ich könnte in der deinit-routine alle Variablenwerte, die ich brauche, in einem file speichern und im init wieder nachladen, dann kann der EA weitermachen, als wäre nichts geschehen.

Ist zwar mühsam, aber besser als gar nichts :)

Oder bleiben die Variablen und Felder vielleicht gar erhalten, wenn die Periode geändert wird? Das wäre natürlich optimal.

sandmann23 25.02.12 14:48

Hi,

was haben hier alle nur immer mit ihren Dateioperationen?
Das ist mit Kanonen auf Spatzen schiessen und wenn man das nicht im Griff hat, baut man sich noch mehr Fehlerpunkte ein.

int Zahl; //global deklariert für den EA

init()
{
//This function can also be called in function init() to analyze the reasons for deinitialization of the previour launch.
if(UninitializeReason() == REASON_CHARTCHANGE)
{
// Zahl soll nicht geändert werden, also beenden wir hier init()
return(0);
}
else
zahl++;
}

//For experts, it is called after the next tick has income.
start()
{}

Also nicht nachladen, sondern im init() prüfen, ob sie zurückgesetzt werden müssen (deine Variablen).

Gruss
sandmann

idefix2 26.02.12 19:29

Zitat:

was haben hier alle nur immer mit ihren Dateioperationen?
Das war die Frage, die ich noch hatte. Wenn die Werte der Variablen und Felder des EA bestehen bleiben, auch wenn die Periode geändert wird, brauche ich natürlich nichts auf eine Datei auslagern, sondern nur die Init-Routine auslassen und bei nächsten Tick ganz normal weitermachen. Aber ob das der Fall ist, war mir eben nicht klar:

Zitat:

Oder bleiben die Variablen und Felder vielleicht gar erhalten, wenn die Periode geändert wird? Das wäre natürlich optimal.

sandmann23 26.02.12 19:52

Jein,

ChartChange bedeute init() Ausführung, wenn deine Variablen dort benutzt/bearbeitet werden ändern sie sich natürlich. Zur Vermeidung siehe Codesnipplet

hast du die Vars nur in der start() deklariert, dann gibt es die natürlich nicht mehr, wenn die start() beendet ist.

Ansonsten behalten alle ausserhalb der start(),init(),deiit() deklarierten Variablen
natürlich ihren Wert.

Gruss
sandmann

idefix2 26.02.12 22:42

Danke, alles klar. Damit ist es zum Glück einfacher, als ich dachte.

Zitat:

hast du die Vars nur in der start() deklariert, dann gibt es die natürlich nicht mehr, wenn die start() beendet ist.
Das ist schon klar :) Die verschwinden ja auch ganz ohne Periodenänderung von einem Tick zum Nächsten.


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