|
Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
DLL Werte behalten
Hi,
ich habe mal wieder eine Frage an die programmier Profis hier. Und zwar habe ich im moment eine kleine Herausforderung: Ich habe eine DLL in C++ erstellt, die ein Array enthält, was maximal 256 Werte aufnehmen kann (default Wert: 0). Code:
long ChartId[255] = { 0 }; Jetzt wollte ich es so gestalten, dass ein Indikator von seinem Chart die ChartID ins Array beginnend mit Index 0 reinschreibt. Im nächsten Chart dann entsprechend Index 1 die Chart ID usw. Dabei stoße ich auf folgendes Problem: Wenn ich den Indikator nur in ein Chart hineinlade, den Wert schreiben lasse, und danach die Timeframe wechsel, initialisiert mir der Indikator alles komplett neu, also auch die DLL. Habe ich jedoch den gleichen Indikator bereits in mehrere Charts geladen, und wechsel ich die Timeframe in irgend einem Chart, wirkt sich der re-init auf die DLL nicht mehr aus. zum Verständnis für was es sein soll: Ich erhalte per httprequest Rückgabewerte die ich zum späteren Zeitpunkt für eine Weiterverarbeitung innerhalb des MQL Codes benötige. Da der Indikator nun beim Timeframe wechsel, soweit mir bekannt ist, immer alles Values neu initialisiert, wollte ich dies anhand der DLL umgehen und die Werte dort zwischenspeichern um sie hinterher wieder auslesen zu können. Hat irgend wer einen Tipp, wie ich das lösen kann ? Vielen Dank für Antworten und Anregungen. marquez Geändert von marquez (15.06.16 um 08:18 Uhr) |
|
|||
Werte behalten
Wären Globalvariablen nicht die einfachere Lösung?
|
|
|||
Nein, da leider beim umschalten der Periode durch den Benutzer der ganze Indikator neu initalisiert wird, und somit auch die Globalen Variablen einen reset erleiden. Außerdem habe ich bei einer globalen Variable nur innerhalb des einen asset Zugriff auf die Werte.
Wenn ich eine DLL nutze, kann ich die Werte bei jedem Chart auslesen und nutzen, und nicht nur in dem einem Asset. Oder weiss ich da irgendwas nicht mit globalen Variablen ? |
|
|||
Hallo marquez,
ich denke Kronenchakra meinte diese globalen Variablen: https://docs.mql4.com/globals Diese sind global im Terminal und werden durch Neuinitialisierungen von EAs nicht resettet. Gruß yytrader |
|
|||
Reset bei Periodenwechsel
Hallo marquez!
Also beim MT5 bleiben die Globalen Variablen erhalten. Hab da schnell einen Testindikator gebastelt, da ich die globalen Variablen ja auch brauche. Ich steuere damit die Indikatoren die mir meine eigenen Tickdaten speichern. Somit kann ich beliebig viele Indis ein- oder ausschalten. LG Otto Geändert von Kronenchakra (31.07.16 um 20:28 Uhr) Grund: Ergänzung |
|
|||
Hi,
In der Tat muß ich zugeben, diese globalen kannte ich noch gar nicht. Danke für Eure Hinweise. Die sind echt Gold wert. Alle Daumen hoch die ich habe dafür. Aber eine Frage hätte ich dann dazu noch eben. Sind die dann nur innerhalb des Charts abrufbar, oder von jedem Tab alle benutzbar ? Bsp: Tab1 setzt Value1 , und tab3 soll Value1 abfragen können |
|
|||
Globale Variable
Die sind von allen Tabs(Charts) aufrufbar.
Wie schon beschrieben, steuere ich damit Indikatoren auf mehreren Charts. LG Otto Geändert von Kronenchakra (01.08.16 um 17:14 Uhr) Grund: Ergänzung |
|
|||
Danke für Eure Antworten.
Die haben mir echt geholfen. Eine kurze Frage hätte ich dann zu den globalen Variablen noch Können globale Variablen nur als Double benutzt werden ? Oder gibt es ne Möglichkeit, in globalen Variablen auch andere formate abzuspeichern wie strings o.ä. ? Zudem, kann man auch echte Arrays mit globale Variablen erzeugen ? Oder muss man die wirklich erzeugen a la "globaleVariable1, globaleVariable99" etc ? |
|
|||
Die globalen Variablen können nur double.
Falls du was anderes brauchst, schreib es in Dateien. Ist zwar langsam, aber wenn du ssd hast, erträglich. |
|
|||
Ok,
danke nochmal für die Auskünfte. Eine (hoffentlich abschliessende) Frage habe ich noch. Ich habe jetzt meinen Code soweit umprogrammiert, so dass ich mit den globalen Variablen arbeiten kann. Soweit so gut, ABER: wenn ich die compilierte Datei weiter gebe, gibt es Anwender, bei denen es damit zu Probleme führt. Das einzige was ich rückschliessen konnte bisher, diese Anwender haben allesamt (soweit ich verfolgen konnte) Windows 10. Ist irgendwas bekannt, dass es mit Windows 10, oder eine bestimmten Metatraderversion Probleme gibt mit den globalen Variablen ? Ich habe bei mir alles unter Windows 7 erstellt und fehlerfrei gestestet. Daher stehe ich damit jetzt ein wenig auf dem Schlauch. Und ich kann mir keins von den Windows 10 Systemen oder Computern beschaffen um diesen Fehler nachstellen zu versuchen. DANKE NOCHMAL FÜR HINWEISE. |
Lesezeichen |
Stichworte |
dll, dll import, http request, import, indicator, mql5, programmierung, programmierung metatrader |
|
|