Características da linguagem mql5, subtilezas e técnicas - página 205

 
fxsaber:

ExpertRemove não foi chamado.

Estou a ver. O que o impede de lidar com os códigos de desinicialização? Têm apenas a mudança de conta.

 
Artyom Trishkin:

Estou a ver. O que o impede de lidar com os códigos de desinicialização? Têm apenas a mudança de conta.

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

Peculiaridades de mql5, dicas e truques

fxsaber, 2021.06.30 15:45

Deve experimentar. Há uma longa discussão sobre este tópico no link acima.

ExpertRemove in OnDeinit é uma construção quase sem sentido.
 
fxsaber:
ExpertRemove in OnDeinit é uma construção quase sem sentido.

Que confuso :)

Já tentou ver os códigos de desinicialização no OnInit()?

Документация по MQL5: Предопределенные переменные / _UninitReason
Документация по MQL5: Предопределенные переменные / _UninitReason
  • www.mql5.com
_UninitReason - Предопределенные переменные - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

Já tentou ver os códigos de desinicialização no OnInit()?

Estudou a questão com seriedade. Se quiser compreender como funciona arquitectonicamente, não o pode fazer sem tentar.

 
fxsaber:

Experimente. Há uma longa discussão sobre o assunto no link acima.

Não vejo qual é o problema. O momento da mudança de conta é realçado a amarelo.

long prev_account = 0;

int OnInit(void)
{
        prev_account = AccountInfoInteger( ACCOUNT_LOGIN );
        EventSetTimer(1);

        Print( "Initialization on account #", AccountInfoInteger( ACCOUNT_LOGIN ) );
        return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
        Print( "Deinitialization on account #", prev_account );
        prev_account = 0;
        EventKillTimer();
}

void OnTick(void)
{
        if ( AccountInfoInteger( ACCOUNT_LOGIN ) != prev_account ) return;

        Print( "New tick on account #", AccountInfoInteger( ACCOUNT_LOGIN ) );
}

void OnTimer(void)
{
        if ( AccountInfoInteger( ACCOUNT_LOGIN ) != prev_account ) return;

        Print( "Timer on account #", AccountInfoInteger( ACCOUNT_LOGIN ) );
}
2021.07.01 11:53:13.404 test (USDCHF,M5)        Initialization on account #30966228
2021.07.01 11:53:14.404 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:15.404 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:16.404 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:17.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:18.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:19.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:20.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:21.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:22.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:23.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:24.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:25.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:25.904 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:26.419 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:27.097 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:27.214 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:27.338 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:27.416 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:27.470 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:27.574 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:27.682 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:28.282 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:28.407 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:28.408 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:29.099 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:29.411 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:29.507 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:29.644 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:29.873 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:30.234 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:30.405 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:30.449 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:31.238 test (USDCHF,M5)        New tick on account #30966228
2021.07.01 11:53:31.410 test (USDCHF,M5)        Timer on account #30966228
2021.07.01 11:53:31.720 test (USDCHF,M5)        Deinitialization on account #30966228
2021.07.01 11:53:32.226 test (USDCHF,M5)        Initialization on account #42821331
2021.07.01 11:53:33.225 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:33.338 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:33.689 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:34.220 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:35.220 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:36.220 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:36.511 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:36.624 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:36.728 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:37.157 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:37.220 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:37.391 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:37.862 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:37.960 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:38.210 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:38.225 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:38.340 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:38.571 test (USDCHF,M5)        New tick on account #42821331
2021.07.01 11:53:39.227 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:40.227 test (USDCHF,M5)        Timer on account #42821331
2021.07.01 11:53:40.689 test (USDCHF,M5)        Deinitialization on account #42821331
 
Andrey Khatimlianskii:

Não vejo qual é o problema. O momento da mudança de conta é realçado a amarelo.

Foi possível descarregar a EA na mudança de conta desta forma?

 
fxsaber:

Então, conseguiu descarregar a EA quando mudou de conta?

Não resolveu o problema da descarga, resolveu o problema com alertas desnecessários (trabalhar com a conta errada):

Peculiaridades da linguagem mql5, dicas e truques

fxsaber, 2021.06.30 14:01

Este Conselheiro Especialista alerta-me quando troco de contas. Parece que não o deveria fazer de acordo com a regra

No entanto, isto acontece devido ao temporizador.

 
Andrey Khatimlianskii:

Não resolveu o problema da descarga, resolveu o problema com alertas desnecessários (trabalhar com a conta errada):

Alerta necessário - para mostrar o que se está a passar. Demonstra uma característica.

 

Gráficos abertos pelo Testador.

<chart>
tester=1
 
Como é que conheço a tomada de lucro e a paragem da perda de uma posição na história?