|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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 |
|
|||
Zitat:
Code:
string CurrentChartSymbol=_Symbol; Print(" CurrentChartSymbol=",CurrentChartSymbol); // result: EURUSD Code:
int OrderSend( string symbol, // für welches Symbol int cmd, // was, z.B. OP_BUY ........ } AVT |
|
|||
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 |
|
|||
Na dann das hier:
Code:
int OnInit() { if (Symbol() != "EURUSD") ChartSetSymbolPeriod(0, "EURUSD", PERIOD_M5); return(INIT_SUCCEEDED); }
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
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 |
|
|||
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. |
|
|||
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 |
|
|||
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. |
|
|||
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 |
|
|||
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. |
Lesezeichen |
Stichworte |
chart, periode, ändern |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|