|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Variable aus Indiaktor für EA Code verwenden
Hallo zusammen,
ich habe leider noch nicht viel Erfahrung im Programmieren. :-/ ich habe eine Indiaktor, der testweise gut läuft und eigentlich tut, was er soll. ergebnis des Indikator-Ablaufs ist eine Meldung und Festlegung einer Variablen: zB so: if((cal!=pal)&&(alert==1)) { r=alert; alBase="*"+WindowExpertName()+": "+_Symbol+", TF: "+strTF(_Period)+" @ "+TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTE S); alSubj=alBase+". The Price Goes Up,"; alMsg=alSubj+" Action: BUY.!!, " + r; pmnt=cmnt; pal=cal; Do_Alerts(alMsg,alSubj); } Meldung bringt er auch sauber im Journal als auch die Variable r, welche letztlich als int entweder 1, -1 oder 0 haben kann. Bei r=1 soll im EA eine Kauforder (long) ausgelöst werden und soweit eine Order für das Symbol bereist bestehe sollte, die offene schliessen Bei r=-1 soll im EA eine Kauforder (short) ausgelöst werden und soweit eine long-Order für das Symbol noch oder bereits bestehe sollte, die offene schliessen. 1. wie kann ich die Variable r aus dem Indik. für eine Weiterverarbeitung im EA nutzen? 2. Wie müsste denn der Code für zB Bei r=-1 soll im EA eine Kauforder (short) ausgelöst werden und soweit eine long-Order für das Symbol noch oder bereits bestehe sollte, die offene schliessen, aussehen. Vielen Dank für eure Mühe |
|
|||
Am simpelsten geht das mit den Globalvariablen.
Die setzt der Indi Code:
datetime GlobalVariableSet( string name, // Global variable name double value // Value to set ); Code:
double GlobalVariableGet( string name // Global variable name ); Ich würde jedoch noch einen Buffer zum Indi hinzufügen und dort die Werte eintragen, die dann der EA ausliest. Falls du einen INDICATOR_CALCULATIONS erzeugst, sieht der AE den nicht. den musst du im Datefenster sichtbar machen; Code:
SetIndexBuffer (BufIdx,aBuffer, INDICATOR_CALCULATIONS); PlotIndexSetInteger(BufIdx,PLOT_SHOW_DATA, true); Code:
SetIndexBuffer (BufIdx,aBuffer, INDICATOR_DATA); PlotIndexSetInteger(BufIdx,PLOT_DRAW_TYPE, DRAW_NONE); |
|
|||
...danke für die schnelle Antwort
wenn ich es richtig verstanden habe, definiere ich im Indikator zB datetime GlobalVariableSet( string Rueckgabe, // Global variable name double r // Value to set ); und im EA rufe ich r ab mit: double GlobalVariableGet( string Rueckgabe // Global variable name ); und kann dann r als Variabel im EA als Bedingung für Ordersend weiterverarbeiten? danke |
|
|||
Bitte verwende das # aus der Symbolleiste um Code zu formatieren.
Es ist noch einfacher: Sowohl Indi als auch EA benötigen den Namen der Globalvariablen. den definierst du am besten in einer mqh, die Indi und EA verwenden. Code:
string varName=_Symbol+"_Signal"; double Signal; Wichtig ist die Verknüpfung mit dem _Symbol, falls das auf unterschiedlichen Charts läuft. Sonst Chaos! Der Indi Schreibt die GlobalVar Code:
Signal=1; // oder 0 bzw -1 GlobalVariableSet(varName, Signal); Code:
Signal=GlobalVariableGet(varName); Ich meine damit daß der EA zuerst liest und der Indi danach schreibt. Das könnte zu Verzögerungen führen. Deshalb ziehe ich "Signalbuffer" in den Indis vor. Geändert von Kronenchakra (04.01.17 um 00:39 Uhr) Grund: Korrektur |
|
|||
... Danke... Könnte ich nicht auch den indi-code einfach in den ea kopieren und die variable direkt abgreifen?...was wäre denn zu beachten beim reinkopieren in den ea?.... Danke
|
|
|||
Ja man kann den Indikatorcode in den EA einbeziehen, wenn man nur die Indikatorwerte benötigt oder andere Variablen und keine grafische Aufbereitung.
Das Prozedere dafür lässt sich aber wirklich nicht in zwei Sätzen erläutern und für Deinen Anfang geht das über GlobalVariables wie es Dir @Kronenchakra vorgemacht hat, sehr gut. Solltest Du speziell die Indiaktorwerte von nicht standardisierten Indikatoren auslesen wollen, dann wirst Du nicht um die Funktion iCustom() kommen. Standardisierte Indikatoren wie z.B. der MA werden mittels iMA() aufgerufen. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
...vielen Dank doc :-)...
grafische Darstellung ist im Indikator mitenthalten und -uss zwar nicht - wäre aber schön, wenn er diese mit anzeigt... also bleibt letztlich - da standardisierter Indikator genutzt werden soll - nur der Weg über GlobalVariables..... Danke euch |
|
|||
Du kannst sowohl den Indi als auch den EA, der den Indi verwendet, in den Chart laden. Dann hast du auch die optische Darstellung.
Willst du es auch im Strategietester sehen, die Vorlage (Template) Tester speichern. Wichtige Templates sind: Default, Debug, Tester |
Lesezeichen |
Stichworte |
ea, indikator einbinden, inidikator, mql4, programmierung, programmierung metatrader, programmierung mql4, variable, vatiablen indikator |
|
|