Errori, bug, domande - pagina 1028

 
tol64:

Allora a) perché funziona per l'oggetto b) se lo sostituisci, inizia a sgretolarsi

'0x00000008' - can't convert enum

Non tutti, solo 18 linee su 21...

Cercherò di riscriverli tutti, non è ancora chiaro. Sembra essere un solo tipo.

 
Silent:

Allora a) perché funziona per l'oggetto b) se lo sostituisci, inizia a sgretolarsi

Non tutti, solo 18 linee su 21...

Cercherò di riscriverli tutti, non è ancora chiaro. Sembra essere un solo tipo.

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:
Sì, l'ho fatto, grazie, sta ticchettando).
 
Silent:
Sì, l'ho fatto, grazie, sta ticchettando).

Ora provate così:

   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:

Ora provate così:

Provato, non riesco a tornare automaticamente da M1. Se enumero come sopra

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

Posso tornare ogni tanto, ma se assegno subito _Period, cado in M1 e ci resto.

upd non salva anche se mi sono spostato alla fine dell'indicatore

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

Non so perché si intasa, sto cercando di capirlo.

 

Questa è una stampella al posto della sincronizzazione (su un'uscita quando non ci sono tick). L'idea è come un carro armato - c'è un errore - passa a M1 e ritorna.

   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);};
solo da M1 molto non sempre rilascia.
 
Silent:

Provato, da M1 non posso tornare indietro automaticamente. Se enumero come sopra

Posso tornare indietro ogni tanto, ma se assegno subito _Period, cado in M1 e ci resto.

Il tuo caso è curato da una piccola scivolata.

   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);

Il mio è peggio (a proposito, il tuo caso funzionava senza Slip, ha smesso di funzionare qualche settimana fa).

Lo stesso schema ha smesso di funzionare senza scivoloni inquietanti su altri grafici (non attuali):

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)
  }
Codice da qui: https://www.mql5.com/ru/code/224
ChartReinit
ChartReinit
  • voti: 7
  • 2010.11.29
  • Vladimir Gomonov
  • www.mql5.com
Кнопочная переинициализация чарта с перерасчетом всех индикаторов, а также простенький и прозрачный объектно-ориентированный пример обработки всех чартов из одного эксперта.
 
MetaDriver:

Il tuo caso è trattato con un piccolo slittamento.

Il mio è peggio (a proposito, il tuo caso senza Slip funzionava, ha smesso qualche settimana fa).

Ma lo stesso schema ha smesso di funzionare senza scivoloni inquietanti su altri grafici (non attuali):

Codice da qui: https://www.mql5.com/ru/code/224/10323

Lo slittamento non funziona negli indicatori, vero?

Link ai lanci della pagina 404

 
Silent:

Lo slittamento non funziona negli indicatori, vero?

È un link alla pagina 404.

Sì...

Prova un qualche tipo di ciclo costoso...

Si potrebbe fare con un timer, ma non mi piace tutto questo.

// Corretto il link. Prima attraverso "i miei codici", ora attraverso un login comune in kodobaza. // Funziona ora? O devo effettuare il log-in per ottenere un link pubblico?

 
MetaDriver:

Già. :(

Prova una specie di ciclo costoso...

Posso farlo attraverso un timer, ma non mi piace tutto questo.

Ho provato a collegare OnTimer con ChartRedraw invece di passare a un altro timeframe - nessuna risposta, si aggiorna, ma l'errore si blocca.

Darò un'altra occhiata.

Update ha il sospetto che tutto questo sia legato ai fili. Da qualche parte, non corrispondono, uno si blocca con un errore, l'altro ticchetta da solo. La sincronizzazione di Ras, tuttavia. E non c'è nessun comando per il ricalcolo completo.

Ho anche provato

#define   RESET 0

   if(_LastError!=0)
     {
     return(RESET);
     };
non sembra funzionare affatto. L'ho preso nel kodobase, però.