Erros, bugs, perguntas - página 1783

 
A100:

Pergunta: Quando é que o OnDeinit->M5 será chamado ?

A minha resposta: Nunca!

A sua resposta acima: de forma assíncrona e com um atraso

Passaram mais de 30 minutos e OnDeinit->M5 ainda não foi chamado

E agora vamos alterar o código do Expert Advisor (alterar ligeiramente a ordem) ...

Resultado:

2017.02.06 01:31:45.002 OnInit->M5
2017.02.06 01:31:48.340 OnDeinit->M5:1 Chamada imediatamente e sem demora!
2017.02.06 01:31:48.409 OnInit->M15

Arquivos anexados:
Test.mq5  2 kb
 
A100:

Passaram mais de 30 minutos, e ainda não há nenhuma chamada OnDeinit->M5

E agora vamos alterar o código Expert (alterar ligeiramente a ordem) ...

Anexe o código, por favor.
 
Renat Fatkhullin:
Anexe o código, por favor.
Anexado ao último post com o mesmo nome. Na realidade, uma chamada estática foi substituída por uma dinâmica e o resultado é fundamentalmente diferente
 
A100:
Anexado ao último post com o mesmo nome. Na realidade, uma chamada estática foi substituída por uma dinâmica e o resultado é fundamentalmente diferente
Obrigado, vamos analisar o assunto.

Parece que no primeiro caso a ausência do OnDeinit e a variável estática, que nos esquecemos de chamar o destruidor no resultado, pregaram um mau golpe na optimização.
 
Alexey Kozitsyn:
Pode esclarecer quais os fios de que estamos a falar? Todos os indicadores do mesmo símbolo não funcionam no mesmo fio?
Sim. Os diferentes fios serão se o gráfico alterar o símbolo, e não o prazo.

Se alterarmos apenas o período de tempo, a nova cópia do indicador será calculada no mesmo fio que a antiga.

Mas também não podemos confiar no facto de que o comando Deinit em M5 será processado mais cedo do que o comando Init em M15
 
Slawa:
Se alterarmos apenas o período de tempo, a nova cópia do indicador será calculada no mesmo fio que a antiga.

Mas aqui não podemos confiar no facto de que o comando Deinit em M5 será processado mais cedo do que o comando Init em M15.
Por favor, adicione-a à Ajuda, por favor.
 
Slawa:

Olá,

por favor, preste muita atenção à mensagem https://www.mql5.com/ru/forum/166358/page4#comment_4064293

Isto é muito importante,

há um novo erro 1158, não está na ajuda?

cannot set millisecond timer (500)
cannot set millisecond timer (500)
  • www.mql5.com
Здравствуйте, клиент прислал лог файл, в котором я увидел такую запись cannot set millisecond timer (500) что она значит? и почему...
 

Erro de execução

Violação de acesso em 0x030A00AD ler a 0x00000005 em 'Test_s.ex5'.

//Test_s.mq5 //Скрипт
class A {};
#import "TestA.ex5"
        A *error();
#import
class B { protected:
    B( const string& name ) : name( name ) {}
    virtual int g( const MqlParam& param[] ) const { return ::IndicatorCreate( NULL, PERIOD_CURRENT, IND_CUSTOM, ::ArraySize( param ), param ); }
        const string name;
bool f( int h ) const
{
        if ( ::ChartIndicatorAdd( 0, 0, h ) )
                return true;
        error();
        return false;
}
};
class C : protected B { protected:
    C( int h, string name ) : B( name ), h( h ) { f( this.h ); }
        const int h;
};
class D : C { public:
    D( string path ) : C( g( path ), path ) {}
int g( const string& path )
{
        MqlParam param[ 1 ];
        param[ 0 ].type         = TYPE_STRING;
        param[ 0 ].string_value = path;
        return g( param );
}
};
void OnStart() { D d( "Test_i" ); }
//TestA.mq5
#property library
class A {};
A * error() export { return NULL; }

Todos os ficheiros (excepto o Indicador) estão localizados na pasta MQL5\Scripts

O Indicador em si não é necessário, mas pode ser descarregado, por exemplo, a partir dehttps://www.mql5.com/ru/forum/1111/page1803#comment_4063671

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
fxsaber:
Coloque-o em Ajuda, por favor.
Veja aqui - Programas em curso

Para um resumo dos programas em MQL5, ver o quadro abaixo:

Programa

Execução

Nota

Roteiro

No seu próprio fio condutor, tantos guiões quantos os fios de execução para eles

Um guião em loop não pode interromper o trabalho de outros programas

Perito

No seu próprio fio, tantos especialistas - tantos fios de execução para eles

Um perito em loop não pode interromper o trabalho de outros programas

Indicador

Um fio de execução para todos os indicadores num só símbolo. Tantos símbolos indicadores - tantos fios de execução para eles

O loop infinito num único indicador irá parar todos os outros indicadores neste símbolo

 
A100:

Estão escritas no formulário B'1111111111111111111111111111111111'.

Infelizmente, não estou familiarizado com este formato.

A experiência mostrou que o número no buffer gráfico é representado pelas mesmas regras que o dobro - ou seja, não é possível passar um número tão longo através do buffer gráfico - frustrante.

Razão: