Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43260
Benutzer: 7.224
Aktive Benutzer: 74
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- Sundaytrad...
vor 10 Stunden
- TS_6
vor 2 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 370
Gesamt: 370
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 03.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Question 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
  #2 (permalink)  
Alt 03.01.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Am simpelsten geht das mit den Globalvariablen.
Die setzt der Indi
Code:
datetime  GlobalVariableSet( 
   string  name,      // Global variable name 
   double  value      // Value to set 
   );
Und so liests der EA.
Code:
double  GlobalVariableGet( 
   string  name      // Global variable name 
   );
Anzeigen der Variablen mit F3

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);
Es geht aber auch mit einer unsichtbaren Linie
Code:
         SetIndexBuffer     (BufIdx,aBuffer,         INDICATOR_DATA);
         PlotIndexSetInteger(BufIdx,PLOT_DRAW_TYPE,  DRAW_NONE);
Ich hoffe du kommst damit klar
  #3 (permalink)  
Alt 03.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

...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
  #4 (permalink)  
Alt 04.01.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

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;
Der Variablenname ist dann zB "EURUSD_Signal" und die Variable Symbol definiert.
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);
Der EA liest sie
Code:
Signal=GlobalVariableGet(varName);
Wieweit diese Vorgangsweise zeitkritisch ist kann ich nicht wirklich beurteilen.
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
  #5 (permalink)  
Alt 04.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

... 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
  #6 (permalink)  
Alt 04.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #7 (permalink)  
Alt 04.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Smile

...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
  #8 (permalink)  
Alt 04.01.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

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
Thema geschlossen

Lesezeichen

Stichworte
ea, indikator einbinden, inidikator, mql4, programmierung, programmierung metatrader, programmierung mql4, variable, vatiablen indikator


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 22:32 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------