Errori, bug, domande - pagina 1460

 
non riesco a trovare l'analogo di iBarsShiaft in MQL5. suggerire ....
 
Vladimir Pastushak:
non riesco a trovare l'analogo di iBarsShiaft in MQL5. suggerire ....
int iBarShift(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
 
Vladislav Andruschenko:

L'ho fatto un po' diversamente, penso che sia più affidabile:

//+------------------------------------------------------------------+
int BarsShift(const string sym,const ENUM_TIMEFRAMES tim,const datetime time)
  {
   if(time<0)return -1;
   datetime mas[]; int z=-1;
   while(z++<3)
      if(CopyTime(sym,tim,TimeCurrent(),time,mas)>0)
         return ArraySize(mas);
   else
      Sleep(500);
   Print(" Erorr Search BarsShift ",GetLastError());
   return -1;
  }
//+------------------------------------------------------------------+

Cosa ne pensate?

 

Cari colleghi, chi può dirmi qual è il problema e perché l'indicatore si sgretola (molte frecce in più) dopo un po' di tempo di funzionamento?

L'ho notato solo su m1. Dopo aver riattivato il TF, tutto viene visualizzato normalmente.

Il problema è nell'indicatore o nel terminale e nelle quotazioni m1?


 
Aleksandr Novikov:

Cari colleghi, chi può dirmi qual è il problema e perché l'indicatore si sgretola (molte frecce in più) dopo un po' di tempo di funzionamento?

L'ho notato solo su m1. Dopo aver riattivato il TF, tutto viene visualizzato normalmente.

Il problema è l'indicatore o il terminale e le quotazioni m1?


Cancella i buffer all'interno del ciclo proprio all'inizio, prima del calcolo dei valori del buffer.
Buffer[i]=0;
 
Vladimir Pastushak:
Non riesco a trovare l'analogo di iBarsShiaft in MQL5. suggerire ....
In realtà la seconda variante della funzione Bars è un'analogia diretta, ma ha alcuni difetti. Per essere più precisi, lo facevano all'inizio dell'anno, forse erano già fissati.
 

Il compilatore pensa e ripensa e silenziosamente muore con l'editor su questo breve programma (32, 64 bit, compreso il diverso OS - lo stesso):

struct TCoord {
        int x, y;
};

void OnStart() {        
        TCoord coord = {100, 100};
        TCoord defaultCoord = {0,0};
        coord = (2 == 2) ? coord : defaultCoord;
}
Da qualche parte un bug nell'ottimizzatore.
A proposito, quando MetaEditor va in crash, il suo stato(file aperti, impostazioni dell'interfaccia) non viene salvato.
 
Aleksandr Novikov :


Quando questo accade l'indicatore si riavvia ... e tutto torna alla normalità.
 
Rodrigo da Silva Boa:
Quando questo accade l'indicatore si riavvia ... e tutto torna alla normalità.

Non c'è bisogno di riavviare nulla. È la spazzatura nei buffer che deve essere pulita nel ciclo dell'indicatore. Per esempio:

   for(int i=limit; i>=0; i--) {
      BufferPatternDN[i]=0;               // без обнуления буферов мусор в них появляется постоянно
      BufferPatternUP[i]=0;
      BufferLevelDN[i]=EMPTY_VALUE;
      BufferLevelUP[i]=EMPTY_VALUE;
      // ... остальной код расчёта буферов
      // ...
   }  // конец цикла

Hai solo bisogno di aggiungere l'azzeramento del buffer all'inizio del ciclo, invece di riavviare costantemente l'indicatore quando c'è della spazzatura sul grafico

 

Come posso sconfiggere questo? Ubuntu in una scatola virtuale, tutti i programmi vanno online senza proxy, connessione diretta ovunque

ma il terminale continua a chiedere un proxy.