Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1461

 
No MT4 no testador, como rastrear um botão de parada pressione para obter um indicador. OnDeanit não é chamado embora o teste esteja terminado. Ou como fechar arquivos abertos quando o botão de parada é pressionado no testador.
 
Valeriy Yastremskiy:
No MT4 no testador, como rastrear um botão de parada pressione para obter um indicador. OnDeinit não é chamado embora o teste esteja terminado. Ou como fechar arquivos abertos quando o botão de parada é pressionado no testador.

arquivos abertos devem ser fechados automaticamente de qualquer forma

se não, tente criar arquivos com SB, há CFile, CFileTxt como OOP - os objetos serão destruídos durante a desinicialização e os destruidores fecharão os arquivos

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: Por que você acha que OnDeinit() não é chamado? - tentar abrir e escrever um arquivo nele

 
Igor Makanu:

arquivos abertos devem ser fechados automaticamente de qualquer forma

se não, tente criar arquivos com SB, há CFile, CFileTxt como OOP - os objetos serão destruídos durante a desinicialização e os destruidores fecharão os arquivos

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: Por que você acha que OnDeinit() não é chamado? - Tente abrir e escrever um arquivo nele.

Por experiência. Eu mesmo fiquei surpreso. Embora seja logicamente correto, é um indicador e não deve ser descarregado como um Expert Advisor. Tenho que apagar o indicador do gráfico de teste manualmente ou fechar a janela. E só então eu vejo Alertas após o fechamento dos arquivos))))

Os testes são simples, eu não quero usar bíblias. Sim e eu acho que há algo mais do que eventos do mouse no botão de parada no testador de indicadores. Os cortes superficiais de busca não deram, infelizmente.

Zy, os arquivos, se não forem fechados, não terão acesso a eles, e se OnDeinit() de repente não funcionar, eles serão fechados apenas fechando o terminal.

forma experiente, esqueceu de registrar o fechamento dos arquivos))))

 
Valeriy Yastremskiy:

Experientes. Eu mesmo fiquei surpreso. Embora logicamente tudo esteja correto, ele é um indicador, e não deve ser descarregado como um Expert Advisor. Tenho que apagar manualmente o indicador do gráfico de teste ou fechar a janela. E só então eu vejo Alertas após o fechamento dos arquivos))))

Os testes são simples, eu não quero usar bíblias. Sim e eu acho que há algo mais do que eventos do mouse no botão de parada no testador de indicadores. Os cortes superficiais de busca não deram, infelizmente.

Zy, os arquivos, se não forem fechados, não terão acesso a eles, e se OnDeinit() de repente não funcionar, eles serão fechados apenas fechando o terminal.

forma experiente, esqueceu de registrar o fechamento do arquivo))))

Você nunca descreveu todo o processo de teste do indicador antes

tanto quanto eu entendi você executa o indicador no testador do MT4 em modo visual, embora você possa adicionar o indicador..... no visualizador do MT4

nunca testei um indicador no MT4, apenas o verifico na EA no código TS


como alternativa, defina a data no indicador, quando terminar o teste como uma variável e após chegar a esta data, salve o arquivo e saia OnCalculate() - o código é um par de linhas, mas definitivamente funcionará

 
Igor Makanu:

Você nunca descreveu todo o processo de teste do indicador antes

tanto quanto eu entendi você executa o indicador no modo visual do testador MT4, mas você também pode preenchê-lo no MT4 no visualizador com indicador.....

eu nunca testei um indicador no MT4, apenas o verifico na EA no código TS


como alternativa, defina a data no indicador, quando terminar o teste como uma variável e após chegar a esta data, salve o arquivo e saia OnCalculate() - o código é um par de linhas, mas definitivamente funcionará

Sim, a janela do testador não se importa se o indicador está sendo testado ou se o indicador está sobreposto na janela do testador.

Obrigado por essa muleta não tão óbvia)

boolIsTesting();

Terei que tentar, acho que é suposto voltar por uma mentira parada)
 
Valeriy Yastremskiy:

Sim, a janela do testador não se importa se o indicador está sendo testado ou se o indicador está sobreposto na janela do testador.

Obrigado por essa muleta não tão óbvia)

boolIsTesting();

eu deveria tentar, parece que deveria retornar falso por parada)

Não, não foi.

Tenho uma pergunta em aberto, como rastrear o evento 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Testador: botão de parada pressionado

fez isso)

int OnInit()
{
if(IsTesting()) FlagTest=true;
....
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

if(!IsTesting() && FlagTest) { Print("Окончание тестирования"); OnDeinit(1);}
....
}

 
Igor Makanu:

busca de artigos da Metacquot :"Nuvem".

ler há muito tempo, caso agentes remotos baixem o histórico do seu PC ou se estiverem conectados ao mesmo corretor - tirar carrapatos reais do corretor


mas posso estar errado, não o usei.


um dos artigos da Metacquot sobre este assunto, talvez haja informações sobre o mesmohttps://www.mql5.com/ru/articles/2612

Igor, obrigado. Documentação, fórum, artigos - ainda não encontrei uma resposta.

No registro há:

"REGRES_EURGBP: carrapatos já sincronizados [57 bytes]".

Espero que isto seja o que eu preciso.

 
Valeriy Yastremskiy:

Não, não foi assim.

De qualquer forma, a questão está aberta, como acompanhar no teste indicador o evento 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Testador: botão de parada pressionado

fez isso)


você tem que escrever algo como isto:

datetime t_stop=D'20.04.2021'; 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
if(time[0]>=t_stop)
{
        if(f_handle<0) return;
        FileClose(f_handle);
        f_handle = -1;
}
não se lembra MT4 deixa teste no último dia (hoje) - necessidade de pegar t_stop
 
HimOrik:

Igor, obrigado. Documentação, fórum, artigos - ainda não encontrei a resposta.

No registro há:

"REGRES_EURGBP: carrapatos já sincronizados [57 bytes]".

Espero que isto seja o que eu preciso.

os moderadores são silenciosos, há poucos usuários ativos

criar um tópico com sua pergunta na discussão geral, acho que você vai resolver seu problema mais rápido

 
Igor Makanu:

você tem que escrever algo como isto:

Não me lembro do MT4 me deixa testar no último dia (hoje) - preciso escolher t_stop

Entendo esta idéia, é útil, mas não funciona para mim neste caso. Preciso cronometrar o Testador: botão de parada pressionado no indicador

Razão: