Eröffnung einer zweiten Instanz des ActivTrade Clients

 

Hallo,

eine Frage bzw. Beobachtung:

das Öffnen eines (meines) Expert Programms im laufenden Chart erzeugt eine zweite Instanz in einem neuen Chart (neues Register)

Jedes Ent- und wieder Beladen das Hauptcharts öffnet weiter Cahrts(Instanzen, die jedoch im default Modus angezeigt werden.

Und meine Expert NICHT enthalten. Wie kann ich das Öffenen einer weiteren Instanz verhindern?

Ablauffähig ist der geladene Experte aber nur in der ursprünglichen (also Haupprogramm) Instanz.


Des weiteren: Das Debuggen einer Routine über den Meta Editor (mit Haltepunkten führt oft dazu, das dem Client offensichtlich

das Handle zum Strategy Tester verloren geht (TimeOu?). D. h. zur Weiterführung des Debuggings muß der Strategy Tester ge-

schlossen und dnach der ActiveTrade client neu gestartet werden. Das ist lästig, weil ich auf dem gleichen Client neben dem

Demo Client auch den Real Client (durch Kontowechsel erfolgt die Umschaltung)laufen habe.

Ich arbeite mit den Versionen ab 14.02.2022. es ist jedoch davon unabh., war früher genaus so.


Über eine Hilfe würde ich mich freuen, vielleicht ist das Thema an anderer Stelle bereits mal im Forum behandelt worden.

Unter den gängigen Suchbegriffen habe ich keinen Match gefunden.


Andreas Fechter

 
Andreas Fechter:

Hallo,

eine Frage bzw. Beobachtung:

das Öffnen eines (meines) Expert Programms im laufenden Chart erzeugt eine zweite Instanz in einem neuen Chart (neues Register)

Jedes Ent- und wieder Beladen das Hauptcharts öffnet weiter Cahrts(Instanzen, die jedoch im default Modus angezeigt werden.

Und meine Expert NICHT enthalten. Wie kann ich das Öffenen einer weiteren Instanz verhindern?

Ablauffähig ist der geladene Experte aber nur in der ursprünglichen (also Haupprogramm) Instanz.


Des weiteren: Das Debuggen einer Routine über den Meta Editor (mit Haltepunkten führt oft dazu, das dem Client offensichtlich

das Handle zum Strategy Tester verloren geht (TimeOu?). D. h. zur Weiterführung des Debuggings muß der Strategy Tester ge-

schlossen und dnach der ActiveTrade client neu gestartet werden. Das ist lästig, weil ich auf dem gleichen Client neben dem

Demo Client auch den Real Client (durch Kontowechsel erfolgt die Umschaltung)laufen habe.

Ich arbeite mit den Versionen ab 14.02.2022. es ist jedoch davon unabh., war früher genaus so.


Über eine Hilfe würde ich mich freuen, vielleicht ist das Thema an anderer Stelle bereits mal im Forum behandelt worden.

Unter den gängigen Suchbegriffen habe ich keinen Match gefunden.


Andreas Fechter

würde sagen, bring deinen code in Ordnung, das ist eindeutig ein code problem

scheinbar sagst du deinem ea, das er ein neues Fenster öffnen soll

und beim indicator wird vermutlich das handle nicht passen

 
Andreas Fechter:

Hallo,

eine Frage bzw. Beobachtung:

...


Über eine Hilfe würde ich mich freuen, vielleicht ist das Thema an anderer Stelle bereits mal im Forum behandelt worden.

Unter den gängigen Suchbegriffen habe ich keinen Match gefunden.


Andreas Fechter

Als Anfänger nimm doch einen funktionierenden EA und ändere stückchenweise (mit Tests!) ab bis Du Deinen Ea hast.

 

..danke für die Antworten, jedoch:

Meine Indikatoren werden über:

if(!ChartIndicatorAdd(0,subwindow,iSlowHandle))      // subwindow ist auch Hauptfenster = 0
   {
      ChartIndicatorAdd(NULL,0,iSlowHandle);
      sSlowName = "SLOW";
   }

geladen. Das Problem liegt im Verständnis der Syntax von ChartIndicatorDelete(NULL,0,sSlowName);

bei Programmende. Da wird ein String verlangt (hier sSlowName = "SLOW",was falsch plaziert ist, ich weiß) .

Wie ist dieser String anderszu generieren als in meinem Beispiel?

Funktioniert der Delete aufruf NICHT, ist mir klar, daß ich bei jedem Neustart auch eienn neuen Chart  "provoziere".

Ist ein ChartIndicatorAdd erzeugt, wie sieht dann das Gegenstück  eines ChartIndicatoDel aus?

Ein Beispiel wäre hilfreich - danke daür schon mal im voraus!

 
  1. Wenn über Fehler berichtet wird bitte immer die Einträge im Log mitposten!
  2. sSlowName muss durch diese Funktion gesetzt: IndicatorSetString(INDICATOR_SHORTNAME,shortname);
    So wie im Beispiel, wenn Du den Kursor auf ChartIndicatorDelete setzt und F1 drückst.
 
Andreas Fechter #:

..danke für die Antworten, jedoch:

Meine Indikatoren werden über:

if(!ChartIndicatorAdd(0,subwindow,iSlowHandle))      // subwindow ist auch Hauptfenster = 0
   {
      ChartIndicatorAdd(NULL,0,iSlowHandle);
      sSlowName = "SLOW";
   }

geladen. Das Problem liegt im Verständnis der Syntax von ChartIndicatorDelete(NULL,0,sSlowName);

bei Programmende. Da wird ein String verlangt (hier sSlowName = "SLOW",was falsch plaziert ist, ich weiß) .

Wie ist dieser String anderszu generieren als in meinem Beispiel?

Funktioniert der Delete aufruf NICHT, ist mir klar, daß ich bei jedem Neustart auch eienn neuen Chart  "provoziere".

Ist ein ChartIndicatorAdd erzeugt, wie sieht dann das Gegenstück  eines ChartIndicatoDel aus?

Ein Beispiel wäre hilfreich - danke daür schon mal im voraus!

du musst auch den Shortname des Indikator angeben und nicht das handle


https://www.mql5.com/de/docs/chart_operations/chartindicatordelete

Dokumentation zu MQL5: Operationen mit Charts / ChartIndicatorDelete
Dokumentation zu MQL5: Operationen mit Charts / ChartIndicatorDelete
  • www.mql5.com
ChartIndicatorDelete - Operationen mit Charts - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5