Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   MQL4: _Symbol einen anderen Wert zuweisen (http://www.expert-advisor.com/forum/showthread.php?t=6697)

isevs 19.06.20 10:41

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

AVT 19.06.20 12:11

Zitat:

Zitat von isevs (Beitrag 43901)
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

isevs 19.06.20 13:44

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

traderdoc 19.06.20 14:38

Na dann das hier:

Code:

int OnInit()
  {
  if (Symbol() != "EURUSD") ChartSetSymbolPeriod(0, "EURUSD", PERIOD_M5);
  return(INIT_SUCCEEDED);
  }

traderdoc

isevs 20.06.20 10:44

Symbol andern Wert zuweisen, damit auch der Chart statt EURUSD z.B. den Dax anzeigt
 
Liste der Anhänge anzeigen (Anzahl: 2)
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

traderdoc 20.06.20 11:15

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

isevs 20.06.20 11:55

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

traderdoc 20.06.20 14:37

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

isevs 20.06.20 15:21

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

traderdoc 20.06.20 17:07

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:34 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum