Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4484
Beiträge: 40720
Benutzer: 6.868
Aktive Benutzer: 253
Links: 80
Wir begrüßen unseren neuesten Benutzer: huseceti
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 14 Stunden
- huseceti
vor einem Tag
- petra25
vor 4 Tagen
- hk0163
vor 4 Tagen
- magnr1
vor 5 Tagen
- boypac007

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 104
Gesamt: 107
Team: 0
Team:  
Benutzer:  AVT, Indikator-Trading, MA-EA
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Jun 2020
Beiträge: 7
isevs befindet sich auf einem aufstrebenden Ast
Standard MQL4: _Symbol einen anderen Wert zuweisen

HAllo,
momentan scheint es so, als dient _Symbol nur dazu den String des momentanen Chats auszulesen.
Ich würde aber lieber in einem EA
1. Abfragen welcher Chzart aktiv ist
2. Wenn ich , abhängig von einer Bedingung, in einem anderen Chart etwas Ordern möchte, muss ich dorthin wechseln
3. Wenn ich den EA versehentlich auf einen falschen Chart gezogen habe, muß ich den Chart wechslen. Dazu sollte ich
a) ein neues Chartfenster mit dem von mir gewollten Chart und der korrekten Periode aufrufen und
b) dort ggf. einen Order platzieren
Habe bisher keine Funktion wie OpenNewChartWindow(..) gefunden.
ODER
c) im momentanen Chart _Symbol eine anderen String zuweisen!?

Kennt jemand einen solchen Befehl?

VG
Mit Zitat antworten
  #2 (permalink)  
Alt vor 3 Wochen
AVT AVT ist gerade online
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 376
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von isevs Beitrag anzeigen
Ich würde aber lieber in einem EA
1. Abfragen welcher Chzart aktiv ist
2. Wenn ich , abhängig von einer Bedingung, in einem anderen Chart etwas Ordern möchte, muss ich dorthin wechseln
3. Wenn ich den EA versehentlich auf einen falschen Chart gezogen habe, muß ich den Chart wechslen. Dazu sollte ich
a) ein neues Chartfenster mit dem von mir gewollten Chart und der korrekten Periode aufrufen und
b) dort ggf. einen Order platzieren
Habe bisher keine Funktion wie OpenNewChartWindow(..) gefunden.
ODER
c) im momentanen Chart _Symbol eine anderen String zuweisen!?

Kennt jemand einen solchen Befehl?

VG
1. Abfrage Beispiel:
Code:
string CurrentChartSymbol=_Symbol;
Print(" CurrentChartSymbol=",CurrentChartSymbol);
// result: EURUSD
2. Nein, nicht zwingend. Du kannst für alle Order-Befehle angeben, auf welches Symbol sich der Befehl beziehen soll.
Code:
int  OrderSend( 
   string   symbol,  // für welches Symbol 
   int      cmd,        // was, z.B. OP_BUY
   ........
}
3. siehe 2.
AVT
Mit Zitat antworten
  #3 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Jun 2020
Beiträge: 7
isevs befindet sich auf einem aufstrebenden Ast
Standard Symbol andern Wert zuweisen, damit auch der Chart statt EURUSD z.B. den Dax anzeigt

Hallo AVT!

Danke für Deine Antwort.
Das habe ich schon alles durch.

Ich möchte unter OnInit prüfen, ob ich den richtigen Chat getroffen habe. Falls nicht, möchte ich das Chartfenster von z.B. DJ nach DAX wechselt.

Falls das nicht geht, könnte ich mir vorstellen, dass es ein Array gibt in dem ich suchen muß, welches der gewollte Chart in der Leiste ist und dort z.B. dann noch die gewollte Periode (z.B. PERIODE_M15)einstellen, falls dies möglich ist!?

VG
Mit Zitat antworten
  #4 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.376
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Na dann das hier:

Code:
int OnInit()
  {
   if (Symbol() != "EURUSD") ChartSetSymbolPeriod(0, "EURUSD", PERIOD_M5);
   return(INIT_SUCCEEDED);
  }
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Jun 2020
Beiträge: 7
isevs befindet sich auf einem aufstrebenden Ast
Standard Symbol andern Wert zuweisen, damit auch der Chart statt EURUSD z.B. den Dax anzeigt

HAllo traderdoc!

Danke für Deinen Tip.

Habe es eingebaut aber im Testbereich ist 0 Reaktion geschehen:

1. HAbe NQ100 mit Periode_M15 voreingestellt(s. Datei 1).

2. Mein Code:
>>>>>>>
int OnInit()
{
double barVol=0,barVolumenGesamt=0;

bool TimeFunction=ChartSetSymbolPeriod(chart_id,chartNa me,a);

if (Symbol() != "EURUSD") ChartSetSymbolPeriod(0, "EURUSD", PERIOD_M5);

...

//---
return(INIT_SUCCEEDED);
}

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

3. Mein Comment nach Schnellvorlauf:
Symbol() und _Symbol liefern immer noch "[NQ100]" als Chart und die Periode ist M15 (s.a. 2. Datei).
Der Chart wird dem entsprechend angezeigt.

HAbe ich da einen Denkfehler oder funzt das im Testbereich nicht?

VG
Angehängte Grafiken
Dateityp: png TestLaufeinstellungen-01.png (21,6 KB, 1x aufgerufen)
Dateityp: png testCommentAfterChangeToEURUSD-02.png (12,2 KB, 2x aufgerufen)
Mit Zitat antworten
  #6 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.376
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also:
1. War bisher keine Rede vom Strategietester, dort funktioniert das natürlich nicht. Ob das richtige WP und TF eingestellt ist, erkennt man doch eigentlich sehr gut!, da bedarf es doch keiner Kontrollfunktion.
2. Was soll bool TimeFunction=ChartSetSymbolPeriod(chart_id,chartNa me,a);
bewirken. Mal von der Logik des Namens der Rückgabevariablen TimeFunction her: die Funktion ändert das Underlying und das TimeFrame des Charts, nicht mehr und nicht weniger.
3. Mal bitte in Zukunft lieber etwas länger über die Formulierung der Aufgabenstellung nachdenken und dann v.a. exakter formulieren. Das erleichtert die Kommunikation ungemein.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #7 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Jun 2020
Beiträge: 7
isevs befindet sich auf einem aufstrebenden Ast
Standard Symbol andern Wert zuweisen, damit auch der Chart statt EURUSD z.B. den Dax anzeigt

Vielen Dank fürs Feedback, traderdoc!
zu 1.: Wenn das in der Testumgebung nicht funzt, brauche ich auch nicht groß zu probieren. Thanks.

zu 3.: versuche ich auf jeden Fall:
'Vorher über bessere Formulierung nachdenken.'

zu 2.: der Variablenname ist sicherlich nicht ganz nachzuvollziehen und einfach nur schnell mal was geschrieben um zu testen, ob es einen Fehler wirft(Nacharbeit noch erforderlich).

aber warum bool?

aus der F1-Hilfe für ChartSetSymbolPeriod:

...
bool ChartSetSymbolPeriod(
long chart_id, // Chart ID
string symbol, // Symbol name
ENUM_TIMEFRAMES period // Period
);
...

Deshalb bool als Typ der ErgebnisVariablen.


Nun kurz zu Teilfragen / möglichen Optionen von mir (s.a. tw. weiter unten):

A. 'könnte ich mir vorstellen, dass es ein Array gibt in dem ich suchen muß, welches der gewollte Chart in der Leiste ist ':
Dort nach einem gewollten Chart suchen, prüfen, ob ein EA geöffnet ist und ggf dort in den richtigen TimeFrame wechseln (mit o.g. Befehl)

Gibt es so ein Array, welches immer unter MQL4 ansprechbar ist?

B. Eine weiter Option für einen EA (habe ich mir so vorgestellt) wäre es, den EA zu starten und ein zusätzliches Chartfenster im MT4 zu öffnen, um dort dann den o.g. Befehl zu nutzen.

Gehe ich Recht in der Annahme, dass es dafür keinen expliziten Befehl / Funktionsaufruf gibt?


VG
Mit Zitat antworten
  #8 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.376
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Es ging mir nicht bool als solches, sondern um den Namen
der Variablen in Beziehung zum Variablentyp bool.

Im Tester kann man das Chart nicht wechseln.
Und für den normalen Lauf habe ich den Code geliefert.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #9 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Jun 2020
Beiträge: 7
isevs befindet sich auf einem aufstrebenden Ast
Standard Neues Chartfenster im MT4 aus EA raus unter OnInit öffnen

Hallo traderdoc,

hatte ja geschrieben, dass ich beim Variablennamen noch nicht ganz fertig war und für den Befehl zum ändern habe ich mich ja auch schon bedankt.

Testen kann ich das ganze wohl nur, während der Handelszeiten.

Hattest Du die beiden Fragen weiter unten
---------------------------------------------------
A.
'könnte ich mir vorstellen, dass es ein Array gibt in dem ich suchen muß, welches der gewollte Chart in der Leiste ist ':
Dort nach einem gewollten Chart suchen, prüfen, ob ein EA geöffnet ist und ggf dort in den richtigen TimeFrame wechseln (mit o.g. Befehl)

Gibt es so ein Array, welches immer unter MQL4 ansprechbar ist?

B.
Eine weiter Option für einen EA (habe ich mir so vorgestellt) wäre es, den EA zu starten und ein zusätzliches Chartfenster im MT4 zu öffnen, um dort dann den o.g. Befehl zu nutzen.

Gehe ich Recht in der Annahme, dass es dafür keinen expliziten Befehl / Funktionsaufruf gibt?
---------------------------------------

nicht gesehen oder bewußt darauf nicht geantwortet?

VG
Mit Zitat antworten
  #10 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.376
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Egal ob es so ein Array gäbe, im Tester kannst Du nicht wechseln.
Mit string chart_symbol = Symbol(); kann man das Underlying des Charts feststellen ... und dann?
Den gewollten Chart muss Du doch eh im Vorfeld festlegen, z.B. über
string my_chart = "EURUSD";
Was man noch machen kann ist, egal in welchem Chart man testet, permanent auf das sog. gewollte Chart intern zugreifen. Dann muss man allerdings im Code auch einiges umschreiben.
Z.B. wird aus der Verwendung des Wertes Bid des aktuellen Charts dann
double vbid = MarketInfo(my_chart, MODE_BID);
bzw.
double vask = MarketInfo(my_chart, MODE_ASK);

D.h. über die Funktion MarketInfo sind alle relevanten Daten eines "fremden" Charts intern aufruf und verarbeitbar.

B funktioniert im Tester auch nicht.

Und meinst Du nun mit Testen, das Laufenlassen des EAs im Demo bzw. Live oder im Strategietester?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
chart, periode, ändern

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:15 Uhr.





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