E se não houver carrapatos, fins de semana? Então um temporizador terá que ser conectado.
E há apenas uma questão a resolver: como determinar se o ChartNavigate foi executado com sucesso? O fato de que ele retorna verdadeiro, é apenas "para carrapatos", não ajuda no trabalho real.
Preciso verificar o código que publiquei acima em meu Consultor Especialista.
No MT5, a função Comentar faz com que o gráfico seja redesenhado explicitamente.
A diferença é exatamente isso.
Se no MT4 após a chamada Comentário você colocar à força ChartRedraw(), o comportamento ainda não é o mesmo que no MT5. ChartRedraw() no Metatrader 4 ignora o valor do comentário e decide por si mesmo se atualiza ou não o gráfico a partir do último quadro. Naturalmente, na ausência de centenas de citações por segundo que causariam uma desativação dos dados do gráfico, o ChartRedraw decide "por que desenhar um gráfico inalterado" e pula o desenho do quadro.
O Metatrader 5 também tem o mesmo sistema, mas há muito mais casos em que o desenho incondicional tem prioridade.
Os terminais são aplicações gráficas e podem fornecer centenas de quadros por segundo e funcionar em modo de exibição enxuta por razões de desempenho.
Daí conclusões adicionais ao executar os benchmarks:
não se deve considerar uma chamada de ChartRedraw para ser um verdadeiro desenho gráfico
você deve sempre saber e provar declarações "por que um gráfico será redesenhado" e "estou invalidando o quadro interno do mercado para que o terminal decida redesenhar o gráfico".
você não deve fazer múltiplas conclusões no MT5 durante os benchmarks, você deve sempre pensar em como você está afetando a renderização
O MT5 tem um sistema mais correto de troca de objetos no gráfico e é necessário entender claramente as conseqüências da mistura de comandos de leitura/escrita é recomendado não misturar comandos de leitura/escrita, e fazer leitura e escrita em massa separadamente.
O freqüente redesenho de gráficos em benchmarks leva a uma alta dependência dos resultados na placa gráfica. de fato, alguns testes podem acabar testando a placa gráfica em vez dos algoritmos ou funções. o teste em um laptop e em um computador desktop pode mostrar resultados várias vezes diferentes simplesmente por causa de uma placa gráfica 3-5 vezes mais lenta
...
voidOnTick()
{
//---
count++;
//Comment(count);if(count==9 || count==19)
{
ResetLastError();
if(position==CHART_BEGIN)
{
if(ChartNavigate(ChartID(),CHART_BEGIN,100))
Print("Успешно. redraw ",redraw,". position ",EnumToString(position));
elsePrint("Ошибка №",GetLastError(),". redraw ",redraw,". position ",EnumToString(position));
}
if(position==CHART_END)
{
if(ChartNavigate(ChartID(),CHART_END,-100))
Print("Успешно. redraw ",redraw,". position ",EnumToString(position));
elsePrint("Ошибка №",GetLastError(),". redraw ",redraw,". position ",EnumToString(position));
}
if(redraw)
ChartRedraw();
}
//--- получим номер самого первого видимого на графике бара (нумерация как в таймсерии) long first_bar=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
//--- добавим символ переноса строки string comm="\r\n";
//--- дополним коментарий
comm=comm+"Первый бар на графике имеет номер "+IntegerToString(first_bar)+"\r\n";
//--- выведем комментарий Comment(comm);
}
//+------------------------------------------------------------------+
P./S.: Além de seu segundo código: antes de atualizar a entrada de texto e a publicação através do mesmo comentário, verifique se os dados foram alterados. Caso contrário, é melhor adiar a atualização e publicação do texto.
Isto é, neste caso é se o número da primeira barra no gráfico mudou
Mmm. Não tenho bem a certeza do que se trata. OK, então. Eu o instalei. Foi verificado nos modos CHART_BEGIN e CHART_END. Está funcionando conforme anunciado. Após o reinício, tudo bem.
Ou você está chegando ao ponto em que precisa usar uma muleta - verifique o número da primeira barra no gráfico após o ChartNavigate e, se não for a barra certa, execute novamente o ChartNavigate.
Sim, a saída, é claro, eu também pensei nisso. Mas é cansativo lembrar constantemente de tais fichas do terminal. Afinal de contas, é bem possível que seja um bug.
P./S.: Além de seu segundo código: antes de atualizar uma entrada de texto e publicação através do mesmo comentário, verifique se os dados foram alterados. Caso contrário, é melhor adiar a atualização e publicação do texto.
Ou seja, neste caso, é se o número da primeira barra no gráfico mudou
Obrigado pela informação, é claro, mas não estamos falando aqui de desempenho. O problema que estamos discutindo está em um plano ligeiramente diferente, são apenas códigos de teste para verificar se o problema se manifestou ))
Obrigado, é claro, pela informação, mas não estamos falando aqui de desempenho. O problema que estamos discutindo está em um plano ligeiramente diferente, são apenas códigos de teste para verificar se o problema aparece ))
Seja bem-vindo. Mas veja também meu outro post, para o qual o que você citou é um postcript.
P./S.: Não desvalorize, por favor. Não vou executar tais códigos no meu, sabendo o que isso implica. Meu equipamento não é emitido pelo governo
Mmm. Não tenho bem a certeza do que se trata. OK, então. Instalou-o. Checado nos modos CHART_BEGIN e CHART_END. Tudo funciona como anunciado. Após o reinício, tudo bem.
Ou você está chegando ao ponto em que precisa usar uma muleta - verifique o número da primeira barra no gráfico após o ChartNavigate e, se não for a barra certa, execute novamente o ChartNavigate.
Sim, a saída, é claro, eu também pensei nisso. Mas é cansativo lembrar constantemente de tais fichas do terminal. Afinal de contas, é bem possível que seja um bug.
Eu costumava ter uma navegação funcional. Agora eu tenho que verificar de propósito.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
E se não houver carrapatos, fins de semana? Então um temporizador terá que ser conectado.
E há apenas uma questão a resolver: como determinar se o ChartNavigate foi executado com sucesso? O fato de que ele retorna verdadeiro, é apenas "para carrapatos", não ajuda no trabalho real.
Preciso verificar o código que publiquei acima em meu Consultor Especialista.
Preciso verificar o código que afixei acima no EA...
O que a EA tem a ver com isso?
O que isso tem a ver com o conselheiro?
Deveríamos verificar...
Vladimir Karputov:
Este é o indicador - coloco especificamente um atraso de nove ticks, dois tipos de movimento de cartas e uma bandeira de re-desenho forçado (on/off)
Você não é um iniciante. Por que você está enganando? Por que você está ignorando o que Renat Fatkhullin disse?
Em seu código (como aqui, então aqui) é forçado a redesenhar a tabela em cada carrapato, criando comentários em cada carrapato.
Isto é, independentemente de a bandeira nos parâmetros de entrada estar ativada ou desativada.
E a inclusão de sua bandeira nos parâmetros de entrada, neste caso, só causa um redesenho adicional viaChartRedraw().
Ou seja, em vez de ser útil, cria uma carga adicional sobre os já existentes, criando comentários
P./S..:
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Erros, bugs, perguntas
Renat Fatkhullin, 2017.12.05 02:51
...
No MT5, a função Comentar faz com que o gráfico seja redesenhado explicitamente.
A diferença é exatamente isso.
Se no MT4 após a chamada Comentário você colocar à força ChartRedraw(), o comportamento ainda não é o mesmo que no MT5. ChartRedraw() no Metatrader 4 ignora o valor do comentário e decide por si mesmo se atualiza ou não o gráfico a partir do último quadro. Naturalmente, na ausência de centenas de citações por segundo que causariam uma desativação dos dados do gráfico, o ChartRedraw decide "por que desenhar um gráfico inalterado" e pula o desenho do quadro.
O Metatrader 5 também tem o mesmo sistema, mas há muito mais casos em que o desenho incondicional tem prioridade.
Os terminais são aplicações gráficas e podem fornecer centenas de quadros por segundo e funcionar em modo de exibição enxuta por razões de desempenho.
Daí conclusões adicionais ao executar os benchmarks:
é recomendado não misturar comandos de leitura/escrita, e fazer leitura e escrita em massa separadamente.
de fato, alguns testes podem acabar testando a placa gráfica em vez dos algoritmos ou funções. o teste em um laptop e em um computador desktop pode mostrar resultados várias vezes diferentes simplesmente por causa de uma placa gráfica 3-5 vezes mais lenta
Estes erros são cometidos o tempo todo por todos.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
ChartNavigate durante a inicialização
Vladimir Karputov, 2018.06.25 18:52
Tenho que verificar...
P./S.: Além de seu segundo código: antes de atualizar a entrada de texto e a publicação através do mesmo comentário, verifique se os dados foram alterados. Caso contrário, é melhor adiar a atualização e publicação do texto.
Isto é, neste caso é se o número da primeira barra no gráfico mudou
Vou ter que verificar...
Mmm. Não tenho bem a certeza do que se trata. OK, então. Eu o instalei. Foi verificado nos modos CHART_BEGIN e CHART_END. Está funcionando conforme anunciado. Após o reinício, tudo bem.
Ou você está chegando ao ponto em que precisa usar uma muleta - verifique o número da primeira barra no gráfico após o ChartNavigate e, se não for a barra certa, execute novamente o ChartNavigate.
Sim, a saída, é claro, eu também pensei nisso. Mas é cansativo lembrar constantemente de tais fichas do terminal. Afinal de contas, é bem possível que seja um bug.
P./S.: Além de seu segundo código: antes de atualizar uma entrada de texto e publicação através do mesmo comentário, verifique se os dados foram alterados. Caso contrário, é melhor adiar a atualização e publicação do texto.
Ou seja, neste caso, é se o número da primeira barra no gráfico mudou
Obrigado pela informação, é claro, mas não estamos falando aqui de desempenho. O problema que estamos discutindo está em um plano ligeiramente diferente, são apenas códigos de teste para verificar se o problema se manifestou ))
Obrigado, é claro, pela informação, mas não estamos falando aqui de desempenho. O problema que estamos discutindo está em um plano ligeiramente diferente, são apenas códigos de teste para verificar se o problema aparece ))
Seja bem-vindo. Mas veja também meu outro post, para o qual o que você citou é um postcript.
P./S.: Não desvalorize, por favor. Não vou executar tais códigos no meu, sabendo o que isso implica. Meu equipamento não é emitido pelo governo
Mmm. Não tenho bem a certeza do que se trata. OK, então. Instalou-o. Checado nos modos CHART_BEGIN e CHART_END. Tudo funciona como anunciado. Após o reinício, tudo bem.
Ou você está chegando ao ponto em que precisa usar uma muleta - verifique o número da primeira barra no gráfico após o ChartNavigate e, se não for a barra certa, execute novamente o ChartNavigate.
Sim, a saída, é claro, eu também pensei nisso. Mas é cansativo lembrar constantemente de tais fichas do terminal. Afinal de contas, é bem possível que seja um bug.
Eu costumava ter uma navegação funcional. Agora eu tenho que verificar de propósito.
Adicionado: não preste atenção ao Comentário :)
Minha navegação costumava funcionar. Agora eu tenho que verificar de propósito.
Acrescentado: Ignorar o Comentário :)
Por quê? Eu escrevi/descrevi disparates?