Erros, bugs, perguntas - página 1460

 
não consegue encontrar o analógico iBarsShiaft em MQL5 . sugira ....
 
Vladimir Pastushak:
não consegue encontrar o analógico iBarsShiaft em MQL5 . sugira ....
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:

Fi-lo um pouco diferente, penso que é mais fiável:

//+------------------------------------------------------------------+
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;
  }
//+------------------------------------------------------------------+

O que pensa?

 

Caros colegas, quem me pode dizer qual é o problema e porque é que o indicador se está a desmoronar (muitas setas extra) depois de algum tempo de operação?

Notei isso apenas no m1. Depois de voltar a activar o TF, tudo é exibido normalmente.

O problema está no indicador ou no terminal e nas citações m1?


Arquivos anexados:
 
Aleksandr Novikov:

Caros colegas, quem me pode dizer qual é o problema e porque é que o indicador se está a desmoronar (muitas setas extra) depois de algum tempo de operação?

Notei isso apenas no m1. Depois de voltar a activar o TF, tudo é exibido normalmente.

O problema com o indicador ou com o terminal e as citações m1?


Limpar os amortecedores dentro do laço logo no início, antes do cálculo dos valores de amortecedores.
Buffer[i]=0;
 
Vladimir Pastushak:
Não consigo encontrar o analógico iBarsShiaft em MQL5 . sugiro ....
Na verdade, a 2ª variante da função Bars é um análogo directo, mas tem algumas falhas. Para ser mais preciso, costumavam fazê-lo no início do ano, talvez já estivessem fixados.
 

O compilador pensa e pensa e silenciosamente morre com editor neste programa curto (32,64 bit, incluindo SO diferentes - o mesmo):

struct TCoord {
        int x, y;
};

void OnStart() {        
        TCoord coord = {100, 100};
        TCoord defaultCoord = {0,0};
        coord = (2 == 2) ? coord : defaultCoord;
}
Em algum lugar um bug no optimizador.
A propósito, quando o MetaEditor falha, o seu estado(ficheiros abertos, definições de interface) não é guardado.
 
Aleksandr Novikov :


Quando isto acontece, o indicador reinicia ... e tudo volta ao normal.
 
Rodrigo da Silva Boa:
Quando isto acontece, o indicador reinicia ... e tudo volta ao normal.

Não há necessidade de reiniciar nada. É o lixo nos amortecedores que precisa de ser limpo no ciclo indicador. Por exemplo:

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

Basta adicionar a zeragem tampão ao início do ciclo, em vez de reiniciar o indicador constantemente quando há lixo no gráfico

 

Como posso derrotar isto? Ubuntu numa caixa virtual, todos os programas ficam online sem um proxy, ligação directa em todo o lado

mas o terminal continua a pedir um procurador.