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)
-   -   Variablen-Inhalt nach MT4 Neustart (http://www.expert-advisor.com/forum/showthread.php?t=4643)

Bucardo 22.12.15 12:34

Variablen-Inhalt nach MT4 Neustart
 
Hallo zusammen,
Ich habe ein Problem mit einem meiner EAs bei dem ich nicht weiter komme.

Der EA verwaltet meine laufenden Trades und schließt bei Erreichen eines bestimmten Kurszieles (das ich extern eingebe) 50% der Position. Das funktioniert bisher sehr gut. Wenn es jedoch zu einem Neustart des Metatraders kommt (Stromausfall, etc), beginnt der EA von vorne und schließt wieder 50% der Position, usw. Diese Funktion soll aber pro Trade natürlich nur einmal durchgeführt werden.
Bisher habe ich mit Schaltern aus 'static bool' Variablen gearbeitet, die dafür sorgen, dass eine Funktion nur einmal ausgeführt wird. Also z.B.

static bool flag = true

if(Kursziel erreicht && flag == true)
{Aktion;
flag = false;}

Inzwischen bin ich auf der Suche nach einer Lösung bei den globalen Variablen gelandet (GV), komme dort aber nicht weiter. Ich habe es so verstanden, dass die GV nur Zahlenwerte im Sinne einer 'double'-Variablen annehmen können. Ich suche aber etwas in der Art wie:

(extern?) GlobalVariableSet(flag,true)

if(Kursziel erreicht && flag == true)
{Aktion;
GlobalVariableSet(flag,true) ;}

D.h. ich möchte dem EA mitteilen, dass er die Teilschließung nur einmal pro Trade vornehmen soll, egal wir oft der MT4 neu gestartet wird. Wenn ich den EA später für einen neuen Trade einsetze, soll er natürlich wieder eine Teilschließung vornehmen.

Ich hoffe mein Problem ist deutlich geworden und ihr habt eine Idee wie man das lösen könnte.

Danke & Gruß
Bucardo

traderdoc 22.12.15 13:01

Anstatt

Code:

if(Kursziel erreicht && flag == true) {
  //Aktion;
  flag = false;
}

dann

Code:

if(Kursziel erreicht && GlobalVariableGet(Variablenname) == 1) {
  //Aktion;
  GlobalVariableSet(Variablenname, 0);
}

Und dann klappt das auch.

traderdoc

Bucardo 23.12.15 17:20

Hallo Traderdoc, danke für die schnelle Antwort.

Mit deiner Hilfe konnte ich das Problem lösen. Leider ist jetzt ein neues aufgetaucht.

Ich habe den EA zum Managen meiner Positionen auf mehreren verschiedenen Symbolen laufen. Wenn ich die Globalen Variablen nutze, schaltet der EA nach der 1. Teilschließung auch alle anderen EA in den Standby.
Gibt es dazu auch eine elegante Lösung?

VG Bucardo

traderdoc 23.12.15 19:10

In diesem Falle muß die Variable Variablenname bei der Deklaration z.B. so lauten:

string Variablenname = Symbol() + "_irgendwas";

Das Symbol() steht als Funktionsaufruf des Chartsymbols.
Das _ nehme ich immer, um das Symbol vom restlichen Text zu trennen, um eine bessere Übersichtlichkeit zu erreichen.
Dann nimmt der EA, z.B. auf dem USDJPY-Chart, bei dem Aufruf von
GlobalVariableGet(Variablenname) nur den Wert, der auch von der EA-Instanz generiert wurde, die sich auf dem USDJPY-Chart befindet.

traderdoc


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