Error 4113

 

Hallo,


wie gibts das, das ich hier Error 4113 bekomme?

Ich sehe in dem Code keinen Fehler, er soll ja den Indikator nur hinzufügen wenn er nicht vorhanden ist.

void ButtonIndicatorInit()
  {
// Indicator für die Buttons hinzufügen

   ResetLastError();

   int window = ChartWindowFind(0,"ForExpertButton");
   ResetLastError();
   
   if(window < 0)
     {
      Print("Chart Window: ", ChartWindowFind(0,"ForExpertButton"));
      
      SubWin = (int)ChartGetInteger(0, CHART_WINDOWS_TOTAL);
      i_hdl1 = iCustom(_Symbol,PERIOD_CURRENT,"ForExpertButton",100);
      if(!ChartIndicatorAdd(0, SubWin, i_hdl1))
        {
         PrintFormat("Failed to add ForExpertButton indicator on %d chart window. Error code  %d",
                     SubWin, GetLastError());
        }
     }

   if(GetLastError() !=0)
      Print("Error: ", GetLastError(), " ", __FUNCTION__);
  }
 
Wo genau?
 
Carl Schreiber:
Wo genau?

das ist jetzt die Frage aller Fragen, weil obwohl ich jetzt nicht geändert habe, erscheint er nicht mehr

 

ich hab das jetzt in ein Script gepackt

//+------------------------------------------------------------------+
//|                                                        11111.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

int i_hdl1;
int SubWin;

void OnStart()
  {
 ResetLastError();

   int window = ChartWindowFind(0,"ForExpertButton");

   //Print("window: ", window, " total: ",ChartGetInteger(0, CHART_WINDOWS_TOTAL) );
   Print(GetLastError());
   if(window < 0)
     {
      //Print("Chart Window: ", ChartWindowFind(0,"ForExpertButton"));

      SubWin = (int)ChartGetInteger(0, CHART_WINDOWS_TOTAL);
     // Print("Subwin: ", SubWin);
      
      i_hdl1 = iRSI(_Symbol,PERIOD_CURRENT,14,PRICE_CLOSE); //iCustom(_Symbol,PERIOD_CURRENT,"ForExpertButton",100);
      if(i_hdl1 == INVALID_HANDLE)
         Print("Fehler beim Handle ForExpertButton Indicator, Error: ", GetLastError());
     // Sleep(5);
      Print(SubWin, " handle: ", i_hdl1);
      
      if(!ChartIndicatorAdd(0, SubWin, i_hdl1))
        {
         PrintFormat("Failed to add ForExpertButton indicator on %d chart window. Error code  %d",
                     SubWin, GetLastError());
        }
     }

   if(GetLastError() !=0)
      Print("Error: ", GetLastError(), " ", __FUNCTION__);
   
  }

und dann beginnt das Drama, also da dürfte in meinen äugen wirklich nix sein und ich bekomme

als Ergebnis raus. Wenn mir jetzt noch wer sagen kann warum?

Es kann ja nicht sein, das ich bei einer schlichten integer eine Fehlermeldung rausbekomme, wenn ich die initialisiert habe

int window = ChartWindowFind(0,"ForExpertButton");
 
amando:

ich hab das jetzt in ein Script gepackt

und dann beginnt das Drama, also da dürfte in meinen äugen wirklich nix sein und ich bekomme

als Ergebnis raus. Wenn mir jetzt noch wer sagen kann warum?

Es kann ja nicht sein, das ich bei einer schlichten integer eine Fehlermeldung rausbekomme, wenn ich die initialisiert habe

Hast Du ChartWindowFind() richtig verwendet?

Gibt die Nummer des Subfensters zurück, in dem sich Indikator befindet. Es gibt zwei Varianten der Funktion.

1. Funktion sucht auf dem angegebenen Chart das Subfenster mit dem angegebenen "kurzen Namen" des Indikatoren (kurzer Name wird im oberen linke Teil des Subfensters ausgegeben) und im Erfolgsfall gibt die Nummer des Subfensters zurück.  

Wo ist den  der Indikator "ForExpertButton" - gibt es den schon?



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

Hast Du ChartWindowFind() richtig verwendet?

Wo ist den  der Indikator "ForExpertButton" - gibt es den schon?



n"

ja, den gibt es, was kann man am ChartWindowFind() falsch verwenden?

 
amando:

ja, den gibt es, was kann man am ChartWindowFind() falsch verwenden?

Wenn der Indikator (noch nicht) im Unterfenster läuft, wenn der ShortName falsch (geschrieben) ist.

Hier: ChartWindowFind() gibt es doch ein Beispiel eines Skripts, nimm das und änder es Schritt für Schritt in Deine Richtung.

Dokumentation zu MQL5: Konstanten, Enumerationen und Strukturen / Indikatorkonstanten / Eigenschaften der Benutzerobjekte
Dokumentation zu MQL5: Konstanten, Enumerationen und Strukturen / Indikatorkonstanten / Eigenschaften der Benutzerobjekte
  • www.mql5.com
Eigenschaften der Benutzerobjekte - Indikatorkonstanten - Konstanten, Enumerationen und Strukturen - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Carl Schreiber:

Wenn der Indikator (noch nicht) im Unterfenster läuft, wenn der ShortName falsch (geschrieben) ist.

Hier: ChartWindowFind() gibt es doch ein Beispiel eines Skripts, nimm das und änder es Schritt für Schritt in Deine Richtung.

Darum frag ich ja ab, ob es ihn schon gibt. Das ist immer der mist von mql, das es für sowas keine bool gibt

 
amando:

Darum frag ich ja ab, ob es ihn schon gibt. Das ist immer der mist von mql, das es für sowas keine bool gibt

Im Beispiel wurde der MACD anscheinend manuell gestartet, der ShortName zeigt sich in seinem Unterfenster.