Erstellen eines Roboters - Seite 7

 
Vladimir M.:
Normalerweise lösche ich das Handle und den Berechnungsteil in OnDeinit, und alles wird entfernt. Das Objekt ist kein Indikator.

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

"Das Entfernen eines Indikators aus einem Diagramm bedeutet nicht, dass auch der Berechnungsteil des Indikators aus dem Speicher des Terminals entfernt wird. Um den Indikator-Handle freizugeben, verwenden Sie die Funktion IndicatorRelease()."

Ja, Vladimir, das habe ich schon einmal getan und darüber geschrieben, aber das Ergebnis ist immer noch das gleiche.

Mit freundlichen Grüßen, Vladimir.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Neuer Handelsroboter

MrBrooklin, 2020.09.28 10:38

Ich habe mehr als eine Stunde lang an diesem Problem gearbeitet. Ich wollte den ZigZagColor-Indikator erstellen und beim Start des Expert Advisors auf dem Chart anzeigen. Dies geschah in int OnInit:

   handle_iCustom=iCustom(m_symbol.Name(),Period(),"Examples\\ZigzagColor",
                          Inp_ZZ_Depth,
                          Inp_ZZ_Deviation,
                          Inp_ZZ_Backstep);
   ChartIndicatorAdd(ChartID(),0,handle_iCustom);

Der Indikator wurde erstellt und angezeigt. Nun muss der Indikator gelöscht werden, nachdem der Expert Advisor entfernt wurde. Ich schreibe es:

void OnDeinit(const int reason)
  {
//---
   IndicatorRelease(handle_iCustom);
   ObjectsDeleteAll(0,"Examples\\ZigzagColor");
  }

Der Indikator wird jedoch nicht entfernt. Ich habe alles in Ordnung gebracht. Ich habe den Griff gereinigt und die Löschfunktion angewendet. Ich frage mich, was der Grund dafür ist, dass es sich nicht deinstallieren lässt.

Mit freundlichen Grüßen, Vladimir.


 
Alekseu Fedotov:

Entfernen Sie den Indikator aus dem Diagramm mit der Funktion


ChartIndicatorDelete(

long chart_id, // Diagramm-ID

int sub_window // Nummer des Unterfensters

const string indicator_shortname // Kurzname des Indikators

);

Danke, Alexey, ich werde es morgen mit klarem Kopf versuchen, die Informationen, die ich erhalten habe, verwirren mich bereits. Wie man so schön sagt: Morgen früh schlafe ich besser!

Jetzt habe ich noch etwas, das mich sehr verwundert und überrascht hat. Ich habe versucht, das Diagramm mit dem von Vladimir Karputov entwickelten Skript zu löschen, aber dieses Skript hat absolut alles gelöscht, außer dem benutzerdefinierten Indikator ZigzagColor! Ich habe versucht, ein einfaches ZigZag mit demselben Skript zu entfernen, aber auch das klappt nicht! Es ist ein Rätsel...

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Danke, Alexey, morgen werde ich es mit klarem Kopf versuchen, denn ich stecke schon in einem Informationswirrwarr. Wie das Sprichwort sagt: Morgenstund hat Gold im Mund!

Nun gibt es noch etwas, das mich sehr verwundert und überrascht hat. Ich habe versucht, das Diagramm mit dem von Vladimir Karputov entwickelten Skript zu löschen, aber dieses Skript hat absolut alles gelöscht, außer dem benutzerdefinierten Indikator ZigzagColor! Ich habe versucht, ein einfaches ZigZag mit demselben Skript zu entfernen, aber auch das klappt nicht! Es ist ein Rätsel...

Mit freundlichen Grüßen, Vladimir.

Versuchen Sie dieses Skript


#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int window=ChartWindowFind(0,"ZigzagColor");
   bool res=ChartIndicatorDelete(0,window,"ZigzagColor");
//--- проанализируем результат вызова ChartIndicatorDelete()
   if(!res)
     {
      PrintFormat("Не удалось удалить индикатор ZigzagColor с окна #%d. Код ошибки %d",
                  window,GetLastError());
     }
  }


 

Kurzname ZigzagColor - und das ist der Standard, wenn Sie ihn anders einstellen, müssen Sie diese Ziffern schreiben

2020.09.29 03:41:36.604 IndicatorDelete (XAUUSD,M30)    ZigZag(12,5,3)

und das ist genau das, was Sie eingeben müssen

ZigZag(12,5,3)
 
SanAlex:

Kurzname ZigzagColor - und das ist der Standard, wenn Sie ihn anders einstellen, müssen Sie diese Ziffern schreiben

und so sollte es auch geschrieben werden

oder Sie können den Indikator selbst ändern - geben Sie einen einfacheren Namen

//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag("+(string)InpDepth+","+(string)InpDeviation+","+(string)InpBackstep+")");
   PlotIndexSetString(0,PLOT_LABEL,"ZigzagColor");
//--- set an empty value

zum Beispiel

//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag");
   PlotIndexSetString(0,PLOT_LABEL,"ZigzagColor");
//--- set an empty value

-----------------------------------------------

Ich habe Ihnen bereits das Skript gezeigt - wenn dieses Skript an ein Diagramm angehängt wird und Sie keinen Indikatornamen angeben, funktioniert es, ohne einen Indikator zu löschen - aber es wird im Expert Advisor-Fenster schreiben, welche Indikatoren verfügbar sind

https://c.mql5.com/3/332/IndicatorDelete.mq5

Das habe ich

CS      0       03:41:36.549    IndicatorDelete (XAUUSD,M30)    EWO(5,35)
DF      0       03:41:36.604    IndicatorDelete (XAUUSD,M30)    ZigZag(12,5,3)
KR      0       03:41:36.626    IndicatorDelete (XAUUSD,M30)    LeMan_BrainTrend1Sig
FE      0       03:41:36.646    IndicatorDelete (XAUUSD,M30)    Hline VSC
RN      0       03:41:36.666    IndicatorDelete (XAUUSD,M30)    Pivot Lines TimeZone
KG      0       03:41:36.686    IndicatorDelete (XAUUSD,M30)    Line through two fractals
DL      0       03:41:36.706    IndicatorDelete (XAUUSD,M30)    sanbox
 
Alekseu Fedotov:

Versuchen Sie dieses Skript

Guten Tag zusammen!

Aleksey, ich habe Ihr Skript angewendet. Ich habe den Fehlercode 4115. Was das bedeutet, habe ich im Handbuch gefunden:

ERR_CHART_INDICATOR_CANNOT_DEL

4115

Fehler beim Löschen des Indikators aus dem Diagramm


Mit freundlichen Grüßen, Vladimir.

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Коды ошибок и предупреждений - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex:

oder Sie können auch den Indikator selbst ändern, indem Sie ihm einen einfacheren Namen geben

wie diese

-----------------------------------------------

Ich habe das Skript bereits heruntergeladen - wenn dieses Skript an ein Diagramm angehängt wird und Sie keinen Indikatornamen angeben, wird es funktionieren, ohne einen Indikator zu löschen - aber es wird im Expert Advisor-Fenster schreiben, welche Indikatoren vorhanden sind

https://c.mql5.com/3/332/IndicatorDelete.mq5

Das ist es, was ich habe!

Hallo! Ich habe Ihr Skript implementiert. Auf der Registerkarte Experten erscheinen zwei Indikatoren: Volumen und ZigZag (80,20,0). Es ist tatsächlich so, nur der ZigZag-Indikator wird aus irgendeinem Grund ohne Farbe geschrieben.

Mit freundlichen Grüßen, Vladimir.

 
Alekseu Fedotov:

Versuchen Sie dieses Skript

MrBrooklin:

Guten Tag zusammen!

Aleksey, wandte Ihr Skript an. Ich habe den Fehlercode 4115.

Mit freundlichen Grüßen, Vladimir.

Ich muss vorsichtiger sein.

bool  ChartIndicatorDelete( 
   long           chart_id,              // идентификатор графика 
   int            sub_window             // номер подокна 
   const string   indicator_shortname    // короткое имя индикатора 
   );

Indikatorname und Indikatorkurzname stimmen oft nicht überein.

 
MrBrooklin:

Hallo! Ich habe Ihr Skript angewendet. Auf der Registerkarte Experten erscheinen zwei Indikatoren: Volumen und ZigZag (80,20,0). Es ist tatsächlich so, nur der ZigZag-Indikator wird aus irgendeinem Grund ohne Farbe geschrieben.

Mit freundlichen Grüßen, Vladimir.

Sie müssen es also so schreiben: ZigZag (80,20,0).

In diesem Fall wird sie definitiv gelöscht.

-----------------

aber ohneFarbe

denn so steht es im Indikator geschrieben

IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag("+(string)InpDepth+","+(string)InpDeviation+","+(string)InpBackstep+")");

 
SanAlex:

Sie müssen es so schreiben - ZigZag (80,20,0)

Der ZigZag wird definitiv gelöscht.

-----------------

aber ohneFarbe

denn so steht es im Indikator geschrieben

Wenn Sie die Einstellungen ändern, müssen Sie die Nummern, die Sie im Indikator angegeben haben, hinzufügen.

zum Beispiel

ZigZag(12,5,3)