Erros, bugs, perguntas - página 2324

 

1. porquê a secção "aplicações"? em poucas palavras, não percebo.

2. onde está a secção servicedesk? quero que enviem alguém para este fio:

https://www.mql5.com/ru/forum/290284

obrigado

 
O gráfico começa a mudar novamente, como quando se prime o botão "Home" - sem padrão detectado, sem problemas durante cerca de meio ano e agora está de volta... construir 1940.
 
Um bug ponteiro
class A {};

void OnStart()
{
  A* a = NULL;
  
  if (true && a) // '&&' - illegal operation use
    ;
    
  if (a) // OK
    ;
}
 
Vladimir Pastushak:

Este é um comportamento normal de função? Em caso afirmativo, como pode o tempo ser reduzido ? A história foi pré-carregada

Resultado :

Símbolo ARSA 16 544 647

AVAN 16 506 592

Símbolo AVAZ 16 553 408

AVAZP 16 511 019

Símbolo ASSB 16 521 310


Este comportamento aparece no CFD


Comportamento aparece em todos

Aqui está o guião, demora 16 segundos a pedir o preço, neste momento o programa está pendurado no local...

void OnStart()
  {
   int     all_symbols = SymbolsTotal(false);
   string  sym_name    = "";
   MqlRates   mas[];
   Print("Symbols all ",all_symbols);
   ulong time_=GetMicrosecondCount();
   
   for(int i=0;i<all_symbols;i++)
      if((sym_name=SymbolName(i,false))!="")
        {
         SymbolSelect(sym_name,true);
         ArrayResize(mas,i+1,100000);

         time_=GetMicrosecondCount();

         CopyRates(sym_name,PERIOD_D1,0,1,mas);

         Print("Copy   N ",(i+1)," Name ",sym_name," time = ",(GetMicrosecondCount()-time_));

        }

   for(int i=0;i<all_symbols;i++)
      if((sym_name=SymbolName(i,false))!="")
        {
         SymbolSelect(sym_name,true);
         ArrayResize(mas,i+1,100000);

         time_=GetMicrosecondCount();

         double rez = iOpen(sym_name,PERIOD_D1,0);

         Print("iOpen   N ",(i+1)," Name ",sym_name," time = ",(GetMicrosecondCount()-time_));

        }
  }

Aqui está um registo parcial

DJ 0 12:18:33.507 TestCopy (EURUSD,H1) Copy N 63 Nome SGDJPY hora = 46076

OP 0 12:18:33.552 TestCopy (EURUSD,H1) Cópia N 64 Nome USDEUR_BASKET hora = 44995

IG 0 12:18:33.597 TestCopy (EURUSD,H1) Cópia N 65 Nome EURRUB_TOD hora = 44863

LI 0 12:18:33.642 TestCopy (EURUSD,H1) Cópia N 66 Nome EURRUB_TOM tempo = 45040

GS 0 12:18:33.698 TestCopy (EURUSD,H1) Cópia N 67 Nome USDRUB_TOD hora = 56006

CF 0 12:18:33.743 TestCopy (EURUSD,H1) Cópia N 68 Nome USDRUB_TOM hora = 44925

CI 0 12:18:33.787 TestCopy (EURUSD,H1) Copy N 69 Nome CNYRUB_TOD hora = 44820

ES 0 12:18:33.833 TestCopy (EURUSD,H1) Cópia N 70 Nome CNYRUB_TOM hora = 45086

CF 0 12:18:50.336 TestCopy (EURUSD,H1) Cópia N 71 Nome ABRD hora = 16503669

KL 0 12:19:06.836 TestCopy (EURUSD,H1) Cópia N 72 Nome AESL hora = 16499892

FF 0 12:19:06.881 TestCopy (EURUSD,H1) Cópia N 73 Nome AFKS hora = 44842

CH 0 12:19:06.926 TestCopy (EURUSD,H1) Copy N 74 Name AFLT time = 44963

DP 0 12:19:23.429 TestCopy (EURUSD,H1) Cópia N 75 Nome AKRN hora = 16502943

CG 0 12:19:39.929 TestCopy (EURUSD,H1) Cópia N 76 Nome ALBK hora = 16499755

RL 0 12:19:56.433 TestCopy (EURUSD,H1) Cópia N 77 Nome ALNU hora = 16503651

EG 0 12:19:56.478 TestCopy (EURUSD,H1) Cópia N 78 Nome ALRS hora = 44989

OK 0 12:20:12.978 TestCopy (EURUSD,H1) Cópia N 79 Nome AMEZ hora = 16500788

QS 0 12:20:13.034 TestCopy (EURUSD,H1) Cópia N 80 Nome APTK hora = 55954

GF 0 12:20:29.541 TestCopy (EURUSD,H1) Cópia N 81 Nome ARMD hora = 16506946

HM 0 12:20:46.051 TestCopy (EURUSD,H1) Cópia N 82 Nome ARSA hora = 16509620

DD 0 12:21:02.553 TestCopy (EURUSD,H1) Cópia N 83 Nome ASSB hora = 16501809

GK 0 12:21:19.083 TestCopy (EURUSD,H1) Cópia N 84 Nome AVAN hora = 16529765

HP 0 12:21:35.586 TestCopy (EURUSD,H1) Cópia N 85 Nome AVAZ hora = 16502812

HK 0 12:21:52.085 TestCopy (EURUSD,H1) Cópia N 86 Nome AVAZP hora = 16499796

NÃO 0 12:21:52.130 TestCopy (EURUSD,H1) Cópia N 87 Nome BANE hora = 44973


Registo completo no fundo.

Arquivos anexados:
20181120.log  196 kb
 
fxsaber:
Um bug ponteiro

Qual é a diferença?

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

fxsaber, 2018.09.17 14:17

É um insecto?
class A {};

A* a = NULL;

bool b1 = a && true; // OK
bool b2 = true && a; // '&&' - illegal operation use

 
A100:

Qual é a diferença disso?

Tenho uma memória muito má. Algumas "bicicletas" eu reinvento várias vezes.

 
Penso que existe uma razão para este erro, porque (se houvesse uma conversão de ponteiro implícito livre para bool) não é claro como interpretar
class A {
public:
        bool operator&&( bool a ) { return a; }
};
void OnStart()
{
        A *a, *b;
        if (a && b);
}

quer seja ou não

        if ((bool)a &&(bool)b);       //(1)

ou como

        if ((*a).operator&&((bool)b));//(2)
 
A100:
Penso que este erro existe por uma razão, porque (se houvesse uma conversão de ponteiro implícito livre para bool) não é claro como interpretar

Sim, há ambiguidade no seu caso. De uma boa maneira, deveria haver pelo menos um aviso de compilação para este tipo de coisas.

No meu caso, que é muito mais simples, tudo é claro. Penso que C++ também concorda com isso.

 

fxsaber:
Это баг?

class A {};

A* a = NULL;

bool b1 = a && true; // OK
bool b2 = true && a; // '&&' - illegal operation use

Como solução temporária, utilizar o operador '! (não lógico)

class A {};

A* a = NULL;

bool b1 = !!a && true;
bool b2 = true && !!a;


Vamos pensar na solução (podemos mudar o comportamento agora, quando há muito código?)
É possível que para um ponteiro, uma operação de conversão de bool seja uma operação sobre o ponteiro e não sobre o objecto para o qual aponta.

Neste caso, para realizar a operação sobre o objecto, teremos de escrever o código desta forma

class A {};

A* a = NULL;

bool b1 = *a && true;
bool b2 = true && *a;

Os operadores de conversão, também queremos acrescentar, mas esta tarefa é (muito) de baixa prioridade
 
Ilyas:

Como solução temporária, utilizar o operador '! (não lógico)

A dupla negação é optimizada pelo compilador?