Erros, bugs, perguntas - página 1812

 
Sergei Vladimirov:

"Doutor, eu tenho algo que dói!" © )

Dê-me um exemplo de tal expressão. Um reproduzível. Então, poderá dizer alguma coisa.

ulong PackMagic(int bs, int type, int frac, int ll)//bs=0 - sell, bs=1 - buy (в смысле ll), type - это тип FPST
     {
        int d1;
        ulong i, frac1=frac, ll1=ll, type1=type;
        
        i=1; d1=10;
        while (ll>=d1) {d1=d1*10; i=i+1;}
              
        if (type==0 || type==2) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
         type1*Pow10(frac_length+i+1)+bs*Pow10(frac_length+i+2)+Id1_class*Pow10(frac_length+i+3));
        else return(ll1+i*Pow10(i)+type1*Pow10(i+1)+bs*Pow10(i+2)+Id1_class*Pow10(i+3));
     }    
    
     ulong Pow10(ulong power) // power>0
     {
        ulong r=10;
        if (power==0) return 1;
        for (ulong i=2; i<=power; i++) r=r*10;
        return r;
     }

O problema está na função PackMagic. variáveis externas int frac_length=2; int Pow10frac_length=100; int Id1_class=1;.

 
Sergey Kudryavtsev:
O problema está na função PackMagic. variáveis externas int frac_length=2; int Pow10frac_length=100;.
Não forneceu um exemplo do erro. Em que argumentos esta função devolve o valor errado (qual?) e qual deve ser o resultado correcto?
 
Sergei Vladimirov:
Não deu um exemplo de um erro. Em que valores dos argumentos esta função devolve o valor errado (qual?) e qual deve ser o resultado correcto?

Por exemplo:

Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, return return 11299.

Deve ser 1001199. Em Expert, funções em classe, conta demo em Open.

Não é um facto que o 11299 será sempre devolvido em caso de erro.

 
Não reprodutível. Com estes parâmetros, a função retorna consistentemente 1001199. Também não há erros na própria função. Portanto, não há nada a dizer. Muito provavelmente, o problema no seu Expert Advisor não está nesta função, mas noutro lugar. Os valores dos parâmetros passados para a função são diferentes dos que espera. Por conseguinte, o resultado é diferente do esperado.
 

Está a tocar. Escreveu o seu código para script, deu o valor correcto (1001199) quando executado em modo de depuração, mas se eu compilar o release e o executar a partir da árvore em MT5, deu 11199 de forma constante. Consegui localizar o problema, aqui está o código de reprodução:

int frac_length = 2;

void OnStart()
{
        
        ulong i = 1;

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + 1);
        ulong a3 = Pow10(frac_length + i + 2);
        ulong a4 = Pow10(frac_length + i + 3);
        
        Print(IntegerToString(a1), " ", IntegerToString(a2), " ", IntegerToString(a3), " ", IntegerToString(a4));

}  

ulong Pow10(const ulong power)
{
        ulong r = 10;
        
        if (power == 0)
                return 1;
                
        for (ulong i = 2; i <= power; i++)
                r = r*10;
                
        return r;
}

No modo de depuração, funciona correctamente. Mas no início da libertação do navegador no MT5 ou produz disparates ("1000 10000 100 100 100" em vez de "1000 10000 100000 1000000") ou o MT5 pendura com a carga completa de um dos núcleos do processador.

Há duas maneiras de o corrigir. Qualquer uma destas formas:

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + (ulong)1);
        ulong a3 = Pow10(frac_length + i + (ulong)2);
        ulong a4 = Pow10(frac_length + i + (ulong)3);

Quer movendo a variável global frac_length dentro da função Start().

Este é de facto um bug de compilador, escreva para o Service Desk.

 
O MT4 começou a pesar 1,8 gigabytes (RAM). Comeu toda a UPU, o segundo terminal não pode ser ligado correctamente. Pode dizer-me como "limpar" a RAM da MT?
 

Quando se passa por cima de uma análise própria publicada recentemente para um produto do Mercado, aparecem várias sugestões/acções. Se seleccionar "editar" e alterar a revisão, aparecerá um erro "Sem direitos" após clicar em "Actualizar".

Aplicação ao RS não pode ser criada -Ocorreu um erro.

 
fxsaber:
Quando se passa por cima de uma análise própria publicada recentemente para um produto do Mercado, aparecem várias sugestões/acções. Se seleccionar "editar" e alterar a revisão, o erro "Sem direitos" aparece após clicar em "Actualizar".

Por favor especifique o nome e a versão do seu navegador.
No cromo 56.0.2924.87 o voo está bom, tanto com como sem refrescar manualmente a página de revisão.

 
fxsaber:

Aplicação ao RS não pode ser criada -Ocorreu um erro.

Compreendo, é necessário limpar os cookies para www.mql5.com.
Aparentemente, houve uma actualização dos princípios de verificação de fichas anti-cSRF.

No cromado, pode fazê-lo desta forma:
Prima F12 enquanto em www.mql5.com => no painel de instrumentos vá a Application => Cookies => clique em cookies => Limpe tudo de...
 
Sergey Dzyublik:

Por favor especifique o nome e a versão do seu navegador.
No Chrome 56.0.2924.87 o voo está bom, tanto com como sem refrescar manualmente a página de revisão.

Versão portátil cromada45.0.2454.85 + Fragata.
Razão: