Há um problema de dessincronização dos gráficos à esquerda e à direita da linha de tempo total. Eu gostaria que as barras fossem sincronizadas por tempo em toda a largura do gráfico.
Sugiro que os desenvolvedores pensem novamente (talvez, coloquem isso em discussão) sobre a possibilidade de visualizar o gráfico com e sem "buracos" - barras. Nesse caso, seria apenas uma visualização, ou seja, as barras de "buracos" não estariam disponíveis na MQL5.
Dmitry, provavelmente seria mais fácil fazer isso por meio do CHARTEVENT_CLICK em vez de fazer um loop...
Aqui está um exemplo de sincronização de gráficos de uma moeda
//------------------------------------------------------------------ OnChartEvent void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (id==CHARTEVENT_CLICK) { long cid=ChartFirst(); long fbar=ChartGetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR); datetime tm[], tm1[]; int rez=CopyTime(Symbol(), Period(), 0, fbar, tm); if (rez<fbar) return; while (cid!=-1) { ChartSetInteger(cid, CHART_AUTOSCROLL, false); ChartSetInteger(cid, CHART_SHIFT, false); if (cid!=ChartID() && ChartSymbol(cid)==Symbol()) { rez=CopyTime(ChartSymbol(cid), ChartPeriod(cid), TimeCurrent(), tm[0], tm1); if (rez<0) break; ChartNavigate(cid, CHART_END, rez-ChartGetInteger(cid, CHART_WIDTH_IN_BARS)+2); ChartRedraw(cid); } cid=ChartNext(cid); } } }
e é isso!
Dimitri, provavelmente seria mais fácil fazer isso por meio do CHARTEVENT_CLICK em vez de fazer um loop...
Aqui está um exemplo de sincronização de gráficos de uma moeda
e é isso!
Nem tudo é tão simples. Sua função sincroniza as barras na borda esquerda do gráfico, o que não é muito conveniente para o estudo visual do histórico. Você também deve desativar o deslocamento do gráfico, o que também não é muito conveniente (embora seja uma questão de gosto). Os desenvolvedores acrescentariam a capacidade de obter e definir o recuo a partir da borda direita ou a navegação por tempo. Em geral, muitas funções são feitas em um estilo tão universal que você pode passar o número da barra ou o tempo. Além disso, o evento é processado somente para o gráfico no qual o script funciona.
----------------------------------------------------------------------------------------------------------------
OnChartEvent
OnChartEvent() é um manipulador do grupo de eventos ChartEvent:
...
...
A função pode ser chamada somente em EAs e deve ter o tipo void e 4 parâmetros:
----------------------------------------------------------------------------------------------------------------
O tratamento de eventos funciona somente em Expert Advisors. Só pode haver um Expert Advisor em um gráfico; não se deve substituir um Expert Advisor por outros auxiliares e praticamente inúteis. É minha convicção que as ferramentas auxiliares que não estão diretamente relacionadas à execução da negociação não devem ser criadas na forma de Expert Advisors, com algumas exceções de extrema necessidade.
OnChartEvent
OnChartEvent() é um manipulador do grupo de eventos ChartEvent:
...
...
Afunção pode ser chamada somente em Expert Advisors e deve ter o tipo void e 4 parâmetros:
----------------------------------------------------------------------------------------------------------------
O processamento de eventos funciona somente em Expert Advisors. Só pode haver um Consultor Especialista em um gráfico; não se deve substituir um Consultor Especialista por outros auxiliares e praticamente inúteis. É minha convicção que as ferramentas auxiliares não diretamente relacionadas à execução da negociação não devem ser criadas na forma de Expert Advisors, com algumas exceções de extrema necessidade.
Esse não é mais o caso, fique de olho nos anúncios - https://www.mql5.com/ru/forum/23/page4:
MetaTrader 5 Client Terminal build 245
- Terminal: corrigido o erro de contabilização de fundos de margem livre em ativos (na guia Exposição).
- Terminal: corrigido o funcionamento da propriedade de gráfico "Gráfico em primeiro plano".
- Terminal: corrigida e redesenhada a janela de visualização de impressão do gráfico.
- Terminal: corrigido um erro ao trabalhar com variáveis globais temporárias.
- Terminal: combinadas as barras de ferramentas "Padrão" e "Gráficos".
- MQL5: Correções em falhas e mensagens do fórum
- MQL5: Alterado o princípio de operação das funções Copy* para Expert Advisors e scripts - agora as funções aguardarão o download e a construção dos dados solicitados. O tempo de espera para os dados solicitados não excederá 30 segundos. Uma descrição mais detalhada estará disponível na Ajuda da MQL5 em um futuro próximo.
- MQL5: adicionada a possibilidade de processamento de eventos por indicadores personalizados, semelhante aos Expert Advisors. Uma descrição mais detalhada estará disponível na Ajuda da MQL5 em um futuro próximo.
.
Não é tão simples assim. Sua função sincroniza as barras na borda esquerda do gráfico, o que não é muito conveniente para o estudo visual do histórico.
Mas é possível sincronizar as barras em qualquer borda e fornecer ao negociador botões para escolher - pelo centro, pela direita, pela esquerda....
O deslocamento do gráfico também deve ser desativado, o que também não é muito conveniente (embora seja uma questão de gosto).
Os desenvolvedores acrescentariam a capacidade de obter e definir o recuo a partir da borda direita ou a navegação por tempo. Em geral, muitas funções são feitas em um estilo tão universal que você pode passar o número da barra ou o tempo.
A propósito, esse recurso está disponível. CHART_SHIFT_SIZE
veja o exemplo ObjChartSample.mq5
Parece que algo está errado com CHART_FIRST_VISIBLE_BAR.
Se você fizer ChartNavigate() para um número obviamente maior do que o número no qual você pode visualizar o gráfico, então
ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR) se torna maior que Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID())).
Exemplo no script 2.mq5. Execute o script e aguarde um pouco.
algo me diz que o terminal não está atualizado.
Porque se você executar o script imediatamente de novo, ele funcionará na primeira vez.
Talvez seja necessário controlar o tempo
Talvez o SeriesInfoInteger possa ajudar?
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
sChartsSynchroScroll:
O script oferece uma rolagem sincronizada para todos os gráficos abertas no terminal do cliente.
Autor: Dmitry Fedoseev