Erros, bugs, perguntas - página 311

 

Bug em nova construção, só possível em sistemas x64 (especificamente janelas 7, processador i7 do núcleo). Não existia tal insecto na construção anterior. Este insecto tem o seguinte significado.

Se eu não alterar significativamente o código fonte do Expert Advisor (por exemplo, alterar apenas o valor de alguma variável) e recompilar depois disso, o resultado do teste permanece o mesmo.

Cheguei mesmo ao seguinte :

No vazio OnTick() função I insert return; :) compilar, executar, e o resultado é o mesmo !!!! Embora em geral, a linha deveria ser.

A saída era ou apagar o ficheiro *.ex5 e compilar novamente, ou escrever algum lixo para fazer o compilador funcionar, e depois compilar.

Amanhã irei verificar se o mesmo acontece no SO de x32 bits.

Também reparei que demora demasiado tempo a abrir novas janelas com gráficos em x64 e demora demasiado tempo a removê-los!

E o terminal fica pendurado com a inscrição "sem resposta" durante cerca de 5 segundos.

 
bobsley:

Bug em nova construção, só possível em sistemas x64 (especificamente janelas 7, processador i7 do núcleo). Não existia tal insecto na construção anterior. Este insecto tem o seguinte significado.

Se eu não alterar significativamente o código fonte do Expert Advisor (por exemplo, alterar apenas o valor de alguma variável) e recompilar depois disso, o resultado do teste permanece o mesmo.

Cheguei mesmo ao seguinte :

No vazio OnTick() função I insert return; :) compilar, executar, e o resultado é o mesmo!!!! Embora em geral, a linha deveria ser.

A saída era ou apagar o ficheiro *.ex5 e compilar novamente, ou escrever alguns disparates para fazer o compilador avisar e depois compilar.

Amanhã irei verificar se o mesmo acontece no SO de x32 bits.

Também reparei que demora demasiado tempo a abrir novas janelas com gráficos em x64 e demora demasiado tempo a removê-los!

E o terminal fica pendurado com a inscrição "sem resposta" durante cerca de 5 segundos.

Verifique esta pasta (Nome de utilizador\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) talvez a sua EA se compila lá
 
bobsley:

Bug em nova construção, só possível em sistemas x64 (especificamente janelas 7, processador i7 do núcleo). Não existia tal insecto na construção anterior. Este insecto tem o seguinte significado.

Se eu não alterar significativamente o código fonte do Expert Advisor (por exemplo, alterar apenas o valor de alguma variável) e recompilar depois disso, o resultado do teste permanece o mesmo.

Cheguei mesmo ao seguinte :

No vazio OnTick() função I insert return; :) compilar, executar, e o resultado é o mesmo!!!! Embora em geral, a linha deveria ser.

A saída era ou apagar o ficheiro *.ex5 e compilar novamente, ou escrever algum lixo para fazer o compilador funcionar, e depois compilar.

Amanhã irei verificar se o mesmo acontece no SO de x32 bits.

...

Não apanhei este insecto especialmente, mas notei um comportamento semelhante nos 32-bit. É o erro que se configura se se compila uma expressão que não se terminou, como um ponto-e-vírgula.
 
Im_hungry:
é claro que há uma história, mas nem todos os vermes têm uma história espalhada!

1. Não vamos falar de tudo, apenas deste, o servidor do programador - access.metatrader5.com:443 (bem, não conheço ninguém com melhor história em MT5 neste momento).

Tomemos o meu guião, não é muito bom, mas mesmo assim não está acabado. Vamos fazer o teste na TF "1 semana" e o número de barras 930.

Obtemos o seguinte resultado

2011.02.22 11:38:50     -   1:1993.05.09 00:00 open = 1.2368, high = 1.2368, low = 1.2084, close = 1.219, volume = 252, spread = 50
2011.02.22 11:38:50     -   0:1993.05.02 00:00 open = 1.2334, high = 1.2466, low = 1.2267, close = 1.2332, volume = 0, spread = 0
2011.02.22 11:38:50     -   Скопировано баров: 930

Aparentemente, os spreads nos bares semanais são de 1993.05.02 e a história dos bares é ainda mais profunda. Mas estes dados podem não ser tão profundos se o Euro existir oficialmente desde 1999 (embora, Deus esteja com ele, é uma questão diferente).

2. Tentemos agora especificar a profundidade da informação difundida nos gráficos diários.

Tomemos como base o facto de que há 5 dias de negociação numa semana e tentemos encontrar o início da história dos dados de propagação nos gráficos diários (vou dizer desde o início que o número aproximado é 4630).

2011.02.22 11:56:06     -   2:1993.05.13 00:00 open = 1.2148, high = 1.2158, low = 1.2084, close = 1.2099, volume = 100, spread = 50
2011.02.22 11:56:06     -   1:1993.05.12 00:00 open = 1.2138, high = 1.2171, low = 1.2105, close = 1.2152, volume = 0, spread = 0
2011.02.22 11:56:06     -   0:1993.05.11 00:00 open = 1.2167, high = 1.2202, low = 1.2121, close = 1.2141, volume = 0, spread = 0
2011.02.22 11:56:06     -   Скопировано баров: 4630

Assim, podemos ver que a história da propagação nos bares diários começa em 1993.05.13.

PS

Penso que mais adiante, por analogia (a data mais antiga no menor espaço de tempo que entendo e será aquele lugar que procuramos)...

Apenas salientarei que isso se espalha:

H12 disponível desde 1993.05.13 (mas barras lá como eu entendi diariamente) - a profundidade é de cerca de 7790 barras

H6 estão disponíveis a partir de 1993.05.13 (barras diárias) - a profundidade é de cerca de 14100 barras

 
sergey1294:
Verifique esta pasta (Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) talvez a sua EA se compila lá

Verifiquei, é claro, que está tudo em branco. E porque seria, tenho os esperts em ...Examplos de especialistas...

é aí que aparecem as suas compilações.

Hoje verifiquei-o no SO x32 no trabalho. Antes da actualização estava tudo bem, melhorou o terminal e imediatamente a mesma falha!

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic:


tem de ser assim
 double op=0, sp=0;
 
sergey1294:
Tem de ser assim.
Porquê?
 
Academic:
Porquê?

Não há realmente nada de errado nisto.

As variáveis são reiniciadas durante a inicialização.

Aqui pode verificar.

int i;

printf("i=%d",i);

 
bobsley:

Não há realmente nada de errado nisto.

As variáveis são reiniciadas durante a inicialização.

Aqui pode verificar.

int i;

printf("i=%d",i);

Este aviso não deve ser dado, porque é passada uma referência à função ObjectGetDouble e a declaração se verifica a verdade devolvida por ambas as chamadas, e portanto só se ambas as funções voltarem a ser verdadeiras é que estas variáveis são tratadas, o que significa que ambas as variáveis não podem ser definidas para o valor correcto.

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5