Is there any Chartevent "on drop symbol" / "on change chart symbol" ?

 

Does anyone know if in MQL5 there is a Chartevent "on drop symbol" or "on change chart symbol" ?

I'd like to run some code when the user drops a new symbol on the chart...?

 
Benjamin Thom:

Does anyone know if in MQL5 there is a Chartevent "on drop symbol" or "on change chart symbol" ?

I'd like to run some code when the user drops a new symbol on the chart...?

Ich denke dieser Artikel bringt dich weiter: https://www.mql5.com/de/articles/4575
Panels verbessern: Transparenz hinzufügen, Hintergrundfarbe ändern und von CAppDialog/CWndClient übernehmen
Panels verbessern: Transparenz hinzufügen, Hintergrundfarbe ändern und von CAppDialog/CWndClient übernehmen
  • www.mql5.com
Panels auf Basis der Klassen CAppDialog fehlen Methoden für den direkten Zugriff auf die Eigenschaften der Steuerelemente, aus denen das Panel besteht, wie die Hintergrundfarbe und die Rahmenfarbe. Daher sind alle erzeugten Panels grau.  Es ist nicht möglich, Designideen umzusetzen, ohne die Möglichkeit, die Farbe der Bedienelemente zu ändern...
 

Hi :-)

Danke für den Beitrag!

Aber dort geht es ja um eine Panel-Klasse? Damit komm ich leider nicht weiter.

Ein Indikator besitzt ja die Methode "void OnChartEvent (...) " - kann man dort nicht darauf reagieren, wenn man ein Symbol aus der Marktübersicht auf den Chart zieht? Oder einfach auf die Änderung des Chartsymbols?

 
Benjamin Thom:

Hi :-)

Danke für den Beitrag!

Aber dort geht es ja um eine Panel-Klasse? Damit komm ich leider nicht weiter.

Ein Indikator besitzt ja die Methode "void OnChartEvent (...) " - kann man dort nicht darauf reagieren, wenn man ein Symbol aus der Marktübersicht auf den Chart zieht? Oder einfach auf die Änderung des Chartsymbols?

Nein, Du kannst das Bild vom EA oder Indiaktor, die Du auf den Chart ziehen kannst, nicht auf das Symbol übertragen!

Wenn Du in der Marktübersicht ein Symbol wählst, wird für das der Chart gezeichnet. Also das Symbol ist "das Fundament",, von allem was dass darauf "gebaut" wird, nicht das Chart!

Das siehst Du daran, es gibt keinen Chart ohne Symbol, aber die Symbole (inkl. Kurse) ohne Chart (in der Marktübersicht).

 
Benjamin Thom:

Does anyone know if in MQL5 there is a Chartevent "on drop symbol" or "on change chart symbol" ?

I'd like to run some code when the user drops a new symbol on the chart...?

Bitte was meinst du damit (drop new symbol). Wenn der Anwender eine Linie, einen Pfeil etc. einzeichnet?
 
@Carl:
Danke, das klingt logisch! Gibt es vielleicht sonst irgendeinen Workaround oder Trick wie ich darauf im Code reagieren kann, wenn der Benutzer für einen Chart das Symbol ändert?

@Otto:
Ich möchte letztendlich aus der Marktübersicht ein Symbol auf einen Chart ziehen, und dieses soll dann gleichzeitig für den Chart daneben verwendet werden.

 
Benjamin Thom:
@Carl:
Danke, das klingt logisch! Gibt es vielleicht sonst irgendeinen Workaround oder Trick wie ich darauf im Code reagieren kann, wenn der Benutzer für einen Chart das Symbol ändert?

@Otto:
Ich möchte letztendlich aus der Marktübersicht ein Symbol auf einen Chart ziehen, und dieses soll dann gleichzeitig für den Chart daneben verwendet werden.

Interessante Methode den Chart zu wechseln. Die Indikatoren bleiben dabei erhalten. Experte nicht ausprobiert.

Es wird das Ereignis CHARTEVENT_CHART_CHANGE ausgelöst.

Dateien:
Event.JPG  47 kb
 

Das Problem dabei ist, daß das Ereignis erst mit dem neuen Symbol aufgerufen wird. Dabei werden Indikatoren und AE neu initialisiert.

Man hat somit keine Chance sich das vorgehende _Symbol in einer Variablen zu merken. Siehe Codebeispiel:

Das funktioniert nicht.

#property indicator_chart_window
#property indicator_plots   0

string OldSymbol=_Symbol;

int OnCalculate(const int total, const int previ, const int begin, const double &price[])
{
   return(total);
}

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
   if(id==CHARTEVENT_CHART_CHANGE)
   {
      Print("ChartChange ",OldSymbol,"  ",_Symbol);
      if(OldSymbol!=_Symbol)
         {
            OnSymbolChange(OldSymbol,_Symbol);
            OldSymbol=_Symbol;
         }
   }
}

void OnSymbolChange(string oldSymbol,string newSymbol)
{
   Alert("OldSymbol: ",oldSymbol,"  NewSymbol: ",newSymbol);
}
 

Benjamin Thom:

..
Ich möchte letztendlich aus der Marktübersicht ein Symbol auf einen Chart ziehen, und dieses soll dann gleichzeitig für den Chart daneben verwendet werden.

Du kannst mit Templates Charts für unterschiedliche Symbole automatisch mit den gleichen Indikatoren beschicken und die Fenster dann nebeneinander "Vertikal teilen" anordnen. Mehr geht nicht!

 
Otto Pauser:

Das Problem dabei ist, daß das Ereignis erst mit dem neuen Symbol aufgerufen wird. Dabei werden Indikatoren und AE neu initialisiert.

Man hat somit keine Chance sich das vorgehende _Symbol in einer Variablen zu merken. Siehe Codebeispiel:

Das funktioniert nicht.

Ach, wie genial...das Chartchange-Event sollte mir reichen...ich brauche ja auch nur das neue Symbol... DANKE!! :-) jetzt muss ich nur sicherstellen, dass dieses Event auch nur auf Symboländerung reagiert...
 
Carl Schreiber:

Du kannst mit Templates Charts für unterschiedliche Symbole automatisch mit den gleichen Indikatoren beschicken und die Fenster dann nebeneinander "Vertikal teilen" anordnen. Mehr geht nicht!

Danke ich weiß :-) aber mehr geht! Direkt ein beliebiges Symbol auf einen Chart ziehen und damit in allen verknüpften Charts anzeigen lassen finde ich auf jeden Fall eine super Sache, um unkompliziert zwischen Märkten hin und her springen zu können, wenn man nicht dutzende Profile verwenden möchte :-) bislang ging ich per Event für die Pfeiltasten "hoch" und "runter" die Symbole der Marktübersicht durch, aber damit kann man halt nicht in der Liste springen :-)
Grund der Beschwerde: