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

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Expert-Advisors (http://www.expert-advisor.com/forum/forumdisplay.php?f=25)
-   -   Re-Initialisierung des EA bei Änderung des Timeframes (http://www.expert-advisor.com/forum/showthread.php?t=5475)

Adlerauge 15.02.17 12:26

Re-Initialisierung des EA bei Änderung des Timeframes
 
Hallo allerseits,

wenn man bei laufendem EA den Timeframe des Chart ändert in dem der EA läuft, intialisiert er sich neu. Im Reiter "Experten" steht dann: uninit reason 3, und direkt eine Zeile drüber: initialized.

Die Hilfe sagt:
REASON_CHARTCHANGE 3 Symbol or chart period has been changed

Kann man das irgendwie verhindern, dass er das tut?

traderdoc 15.02.17 13:03

Nein, das kann man nicht verhindern.
Bei intelligent geschriebenen EAs spielt das auch keine Rolle. Werden in der OnInit-Funktion allerdings z.B. Variablen auf 0 gesetzt, dann geht der vorher in dieser Variablen gespeicherte Wert verloren und dann hast Du im wahrsten Sinne verloren, denn es werden bestimmte Teile des EA nun anders laufen als erwartet.

Um dieses Szenario zu vermeiden bleibt nur:
1. Das TF nicht! wechseln.
2. Keine Variableninitialisierungen vornehmen
3. Den EA umschreiben (lassen)

traderdoc

Adlerauge 15.02.17 17:28

Danke doc für die eindeutige Antwort!

Ich hätte da im Zusammenhang mit der Re-Initialisierung noch eine 2. Frage:

Wenn ich bei laufendem EA über F7 die EA-Eingabemaske aufrufe und einen Wert verändere, dann re-initialisiert er offensichtlich auch alles.
Gibt es die Möglichkeit, einzelne Werte zu ändern, ohne dass er alles re-initialisiert, oder ist das im Prinzip der gleiche Sachverhalt wie beim Ändern des Timeframes?

traderdoc 15.02.17 19:25

Das ist derselbe Sachverhalt. Es wird sogar initialisiert, wenn Du F7 aufrufst, keine! Variable änderst, aber OK drückst. Nur bei Abbrechen würde keine Initialisierung stattfinden.

Man kann aber alle relevanten Variablen über entsprechende Programmierung auf den Chart legen und in diesen sog. Editierfeldern die Variablen ändern. Diese Felder werden dann permanent über eine spezielle Funktion OnChartEvent() ausgelesen und die Werte geänderter Variablen entsprechend an das Programm "übergeben".

Eine weitere Möglichkeit ist die, die Variablen, welche im Programm zur Laufzeit geändert werden und durch eine Neuinitialisierung wieder meist auf 0 gestellt werden, mittels Globaler Variablen dauerhaft im MT4 zu speichern und mit dem entsprechenden Aufrufen die Werte beibehalten. Das alles würde auch beim Abspeichern in eine csv-Datei funktionieren.

Aber wie bereits geschrieben, dass ist schon etwas aufwändiger und man muss sich mit Globalen Variablen bzw. dem Speichern von csv-Dateien sehr gut auskennen.

traderdoc

Adlerauge 15.02.17 21:14

wenn ich also in der OnInit() Funktion die

int Beispiel_Variable_1 = 0;

definiere, wird ihr beim Re-Initialisieren wieder der Wert 0 zugewiesen.

Wenn ich aber nur ein Variable

int Beispiel_Variable_2;

in der OnInit() Funktion definiere (ohne = 0), wird ihr bei Re-Initialisieren dann auch der Wert 0 zugewiesen, oder behält diese dann den Wert, den sie im Programmverlauf zugewiesen bekommen hat?

traderdoc 15.02.17 21:20

Der Variablen Beispiel_Variable_2 wird in der Regel der Wert 0 zugewiesen, wenn keine Initialisierung vorgenommen wird. Zur Sicherheit initialisiert man die Variable aber in der OnInit()-Funktion mit 0.

traderdoc

Adlerauge 26.03.17 11:59

Zitat:

Zitat von traderdoc (Beitrag 37675)
Eine weitere Möglichkeit ist die, die Variablen, welche im Programm zur Laufzeit geändert werden und durch eine Neuinitialisierung wieder meist auf 0 gestellt werden, mittels Globaler Variablen dauerhaft im MT4 zu speichern und mit dem entsprechenden Aufrufen die Werte beibehalten.

traderdoc

Hier ein Zitat aus dem mql4-book:

"Note, global variable of client terminal and global variable are different variables with similar names. The scope of global variables is one program, in which the variable is declared; while the scope of global variables of client terminal is all programs launched in the client terminal."

Welche der beiden Arten von globalen Variabelen meintest Du?

UForex 26.03.17 14:16

Im Changelog des letzten MT4-Build-Updates wurde das TF-Problem erwähnt und nun hoffentlich gefixed.

traderdoc 26.03.17 14:59

Zitat:

Zitat von Adlerauge (Beitrag 38176)
Hier ein Zitat aus dem mql4-book:

"Note, global variable of client terminal and global variable are different variables with similar names. The scope of global variables is one program, in which the variable is declared; while the scope of global variables of client terminal is all programs launched in the client terminal."

Welche der beiden Arten von globalen Variabelen meintest Du?

I mean the global variable of client terminal.

traderdoc

Kronenchakra 26.03.17 20:56

Zitat:

Zitat von Adlerauge (Beitrag 37674)
Gibt es die Möglichkeit, einzelne Werte zu ändern, ohne dass er alles re-initialisiert, oder ist das im Prinzip der gleiche Sachverhalt wie beim Ändern des Timeframes?

Es gibt Möglichkeiten Variablen zu verändern ohne den EA zu initialisieren, und zwar über ein Steuerpanel mit Eingabefeldern.
Leider sind einfache und gute Beispiele rar.
Eine weitere Möglichkeit wäre via Tastatur mittels OnChartevent() Variablen zu ändern.
Wobei hier aktuelle Werte der Variablen mit Comment() oder Print() ausgegeben werden können.


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