Fehler, Irrtümer, Fragen - Seite 1028

 
tol64:

Dann a) warum funktioniert es für das Objekt b) wenn man es ersetzt, beginnt es zu bröckeln

'0x00000008' - can't convert enum

Nicht alle, nur 18 von 21 Zeilen...

Ich werde versuchen, sie alle neu zu schreiben, es ist immer noch nicht klar. Es scheint sich um einen Typ zu handeln.

 
Silent:

Dann a) warum funktioniert es für das Objekt b) wenn man es ersetzt, beginnt es zu bröckeln

Nicht alle, nur 18 von 21 Zeilen...

Ich werde versuchen, sie alle neu zu schreiben, es ist immer noch nicht klar. Es scheint sich um einen Typ zu handeln.

ENUM_TIMEFRAMES current_period_tf=PERIOD_CURRENT;
   string n="";
   if(_Period==PERIOD_M1)  {current_period_tf=PERIOD_M1;};
   if(_Period==PERIOD_M2)  {current_period_tf=PERIOD_M2;};
   if(_Period==PERIOD_M3)  {current_period_tf=PERIOD_M3;};
   if(_Period==PERIOD_M4)  {current_period_tf=PERIOD_M4;};
   if(_Period==PERIOD_M5)  {current_period_tf=PERIOD_M5;};
   if(_Period==PERIOD_M6)  {current_period_tf=PERIOD_M6;};
   if(_Period==PERIOD_M10) {current_period_tf=PERIOD_M10;};
   if(_Period==PERIOD_M12) {current_period_tf=PERIOD_M12;};
   if(_Period==PERIOD_M15) {current_period_tf=PERIOD_M15;};
   if(_Period==PERIOD_M20) {current_period_tf=PERIOD_M20;};
   if(_Period==PERIOD_M30) {current_period_tf=PERIOD_M30;};
   if(_Period==PERIOD_H1)  {current_period_tf=PERIOD_H1;};
   if(_Period==PERIOD_H2)  {current_period_tf=PERIOD_H2;};
   if(_Period==PERIOD_H3)  {current_period_tf=PERIOD_H3;};
   if(_Period==PERIOD_H4)  {current_period_tf=PERIOD_H4;};
   if(_Period==PERIOD_H6)  {current_period_tf=PERIOD_H6;};
   if(_Period==PERIOD_H8)  {current_period_tf=PERIOD_H8;};
   if(_Period==PERIOD_H12) {current_period_tf=PERIOD_H12;};
   if(_Period==PERIOD_D1)  {current_period_tf=PERIOD_D1;};
   if(_Period==PERIOD_W1)  {current_period_tf=PERIOD_D1;};
   if(_Period==PERIOD_MN1) {current_period_tf=PERIOD_MN1;};
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
 
tol64:
Ja, das habe ich, danke, es tickt).
 
Silent:
Ja, das habe ich, danke, es tickt).

Versuchen Sie es nun so:

   string n="";
   ENUM_TIMEFRAMES current_period_tf=_Period;
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

 
MetaDriver:

Versuchen Sie es nun so:

Ich habe es versucht, aber ich kann nicht automatisch von M1 zurückkehren. Wenn ich wie oben aufgezählt habe

if(_Period==PERIOD_M1)  {current_period_tf=PERIOD_M1;};

Ich kann ab und zu zurückkehren, aber wenn ich _Period sofort zuweise, falle ich auf M1 und bleibe dort.

Update wird nicht gespeichert, auch wenn ich zum Ende des Indikators gehe

     if(_Period==PERIOD_M1) {ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);};

Ich weiß nicht, warum es verstopft, aber ich versuche, es herauszufinden.

 

Dies ist eine Krücke anstelle der Synchronisierung (auf einem Ausgang, wenn es keine Ticks gibt). Die Idee ist wie bei einem Panzer - es liegt ein Fehler vor - auf M1 umschalten und zurückkehren.

   if(_LastError!=0)
     {
      ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
      ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
     };
   if(_LastError==0)
     {
      ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
     };
// и контрольный
   if(_Period==PERIOD_M1) {ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);};
nur von M1 lässt es sich nicht immer ganz lösen.
 
Silent:

Ich habe es versucht, von M1 kann ich nicht automatisch zurückgehen. Wenn ich wie oben aufgezählt habe

Ich kann ab und zu zurückgehen, aber wenn ich _Period sofort zuweise, falle ich auf M1 und bleibe dort.

Ihr Fall wird durch einen kleinen Ausrutscher geheilt.

   string n="";
   ENUM_TIMEFRAMES current_period_tf=_Period;
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   Sleep(150);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

Meiner ist schlimmer. (Übrigens funktionierte Ihr Gehäuse früher auch ohne Slip, vor ein paar Wochen hat es aufgehört zu funktionieren).

Dasselbe Schema funktioniert nicht mehr, ohne dass es bei anderen (nicht aktuellen) Diagrammen zu unangenehmen Zwischenfällen kommt:

void cChartReInit::Run() // Scanning all charts and reinit if button is pushed
  {
   for(long i=ChartNext(0);i>0;i=ChartNext(i))
    {
     if(!ChartGetInteger(i,CHART_WINDOW_IS_VISIBLE)) continue;
     long wc = ChartGetInteger(i,CHART_WINDOWS_TOTAL);
     long wi = ObjectFind(i, pButtonName);
     if(--wc!=wi) { CreateReinitButton(i); ChartRedraw(i); continue;}
     if(ObjectGetInteger(i,pButtonName,OBJPROP_STATE))
       {
        ObjectSetInteger(i,pButtonName,OBJPROP_STATE,false);
        ENUM_TIMEFRAMES cp = ChartPeriod(i);
        Sleep(1350);  // раньше это было не нужно
        ChartSetSymbolPeriod(i, ChartSymbol(i), ((cp==PERIOD_M1) ? PERIOD_M5 : PERIOD_M1));
        Sleep(1350);  // раньше это было не нужно
        ChartSetSymbolPeriod(i, ChartSymbol(i), cp);
       }
     ChartRedraw(i);
    } // for(Charts)
  }
Code von hier: https://www.mql5.com/ru/code/224
ChartReinit
ChartReinit
  • Stimmen: 7
  • 2010.11.29
  • Vladimir Gomonov
  • www.mql5.com
Кнопочная переинициализация чарта с перерасчетом всех индикаторов, а также простенький и прозрачный объектно-ориентированный пример обработки всех чартов из одного эксперта.
 
MetaDriver:

Ihr Fall wird mit einem kleinen Zettel behandelt.

Meiner ist schlimmer. (Übrigens, Ihr Fall ohne Slip hat früher funktioniert, seit ein paar Wochen nicht mehr).

Aber dasselbe Schema funktionierte nicht mehr, ohne dass es bei anderen (nicht aktuellen) Diagrammen zu gruseligen Ausrutschern kam:

Code von hier: https://www.mql5.com/ru/code/224/10323

Der Ausrutscher funktioniert nicht bei Indikatoren, oder?

Link zur 404-Seite wirft

 
Silent:

Der Ausrutscher funktioniert nicht bei Indikatoren, oder?

Es handelt sich um einen Link zur Seite 404.

Ja, ja.

Versuchen Sie es mit einer kostspieligen Schleife...

Man könnte es mit einer Zeitschaltuhr machen, aber das gefällt mir nicht.

// Ich habe den Link korrigiert, zuerst über "Meine Codes", jetzt über einen gemeinsamen Zugang zu kodobaza. // Funktioniert es jetzt, oder muss ich mich abmelden, um einen öffentlichen Link zu erhalten?

 
MetaDriver:

Ja. :(

Versuchen Sie eine Art kostspieligen Zyklus...

Ich kann es mit einem Timer machen, aber ich mag das alles nicht.

Ich habe versucht, OnTimer mit ChartRedraw anzuhängen, anstatt zu einem anderen Zeitrahmen zu wechseln - keine Reaktion, es wird zwar aktualisiert, aber der Fehler bleibt hängen.

Ich werde es mir noch einmal ansehen.

Update hat den Verdacht, dass dies alles mit den Fäden zusammenhängt. Irgendwo stimmen sie nicht überein, eine bleibt mit einem Fehler hängen, die andere tickt von selbst. Die Ras-Synchronisation jedoch. Und es gibt keinen Befehl für eine vollständige Neuberechnung.

Ich habe auch versucht

#define   RESET 0

   if(_LastError!=0)
     {
     return(RESET);
     };
scheint es überhaupt nicht zu funktionieren. Ich habe es aber in der kodobase aufgenommen.