Erros, bugs, perguntas - página 2742

 
fxsaber:
Que bandeiras e armadilhas podem existir se de um programa MQL algo tiver de ser anexado ao ficheiro (drive RAM) o tempo todo, e dos outros (e de outro terminal) para ler a partir do mesmo ler todos estes dados anexados?

a segurança dos dados deve ser assegurada, mas penso que existem pelo menos 2 problemas:

- sem sincronização garantida durante o acesso simultâneo, ou seja, é possível reler os dados já lidos e ao mesmo tempo evitar que novos dados sejam escritos - colisões

- não há meios para detectar e controlar uma tal situação

Soluções como habitualmente - semáforos ou escreva o seu próprio gestor de escrita

ZS: parece haver uma oportunidade de colocar na memória SQLite incorporado , pelo menos para controlar o estado da base de dados pode

 
Alexey Kozitsyn:

Em Cinco, os indicadores funcionam de forma semelhante, mas tudo é normal, sem congelação.

Não, em Cinco os indicadores estão no fluxo de ferramentas.

 
Bug MT5 (build 2340) sem acesso ao operador padrão= a partir do objecto ponteiro.

class A{
public:
   char data;
   
   // uncomment to fix the bug
   //void operator=(A &a){this.data = a.data;}
};


// bypassing the bug
template<typename P1, typename P2>
void unref_assignment_operator(P1* &p1, P2* &p2){
   struct Functor{
      static void call(P1 &p1, P2 &p2){
         p1 = p2;
      }
   };
   Functor::call(p1, p2);
}

   
void OnStart(){      
   A a1;
   A a2;
   
   a2.data = 0x1;
   a1 = a2;
   printf("%d", (a1.data));               // Ok, 0x1
   
   
   A* a_ptr_1 = &a1;
   A* a_ptr_2 = &a2;
   
   a2.data = 0x2;
   a1.operator=(a2);                      //'operator=' - undeclared identifier 
   printf("%d", (a1.data));               
   
   
   a2.data = 0x3;
   unref_assignment_operator(a_ptr_1, a_ptr_2); 
   printf("%d", (a1.data));               // Ok, 0x3
}
 

Por favor, repare o bug- o terminal MT trava ao tentar depurar uma função de estrutura estática.
Mesmo no exemplo acima, se apanhar um ponto de quebra na linha "
p1 = p2;", este irá colidir com o terminal.

 
Andrey Khatimlianskii:

Não, em Cinco os indicadores estão no fluxo de ferramentas.

Desculpe, estou confuso. Estava a pensar que este é o comportamento no Quaternário (ou seja, como no Quaternário - no fluxo de ferramentas).

E onde está escrito sobre o fio de interface comum para os indicadores MT4?

Adicionado:

Indicador

Todos os indicadores partilham os recursos do fio da interface gráfica

Um loop infinito num só indicador interromperá o trabalho do terminal


Obrigado pela dica, encontrei-a.

Então o depurador não foi originalmente pensado em MT4. Teriam sido proibidos de lhe chamar indicadores, pelo menos.

 

Não sei exactamente onde reportar o insecto... Tentarei relatá-lo aqui. A essência do problema no MT5: ao utilizar a escala do gráfico através dos botões "+" ou "-", o gráfico não volta à sua posição normal (recuado a partir da borda direita do ecrã). Tenho de o devolver manualmente a toda a hora.

No MT4 não existe tal problema. Verifiquei com vários corretores...

Depois de pressionar o "+"


Muito desconfortável... Podemos consertá-lo?

 
Alexey Kozitsyn:

Acontece então que o depurador não foi originalmente concebido em MT4. Pelo menos teriam sido proibidos de lhe chamar indicadores.

Mas não estava lá desde o início. Por isso não pensaram bem no assunto.

 
Roman Agafonkin:

Não sei exactamente onde reportar o insecto... Tentarei relatá-lo aqui. A essência do problema no MT5: ao utilizar a escala do gráfico através dos botões "+" ou "-", o gráfico não volta à sua posição normal (recuado a partir da borda direita do ecrã). Tenho de o devolver manualmente a toda a hora.

No MT4 não existe tal problema. Verifiquei-o com vários corretores...


Muito desconfortável... Podemos consertá-lo?

Ao usar a escala, a reentrância regressa ao seu estado normal no próximo tick de entrada.

 
SEM:

Se for utilizada a escala, o travessão volta ao normal no próximo tick de entrada.

Aí é que está, não... no mt4 está bem... no mt5 - infelizmente, é falha...
OK, vou filmar um vídeo e adicioná-lo a este fio.

Razão: