|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Expert-Advisors Expert-Advisors für Metatrader 4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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? |
|
|||
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
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? |
|
|||
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
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? |
|
|||
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
"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? |
|
||||
Im Changelog des letzten MT4-Build-Updates wurde das TF-Problem erwähnt und nun hoffentlich gefixed.
|
|
|||
Zitat:
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
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. |
Lesezeichen |
Stichworte |
chart zeit, ea, ea timeframe, expert advisor, timeframe, timeframe wechseln, zeit |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|