Seconds Tick and Range Charts MT5
- Utilitários
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - Versão: 1.0
- Ativações: 10
Barras de segundos (de 1 a 30 segundos), barras de ticks e barras de range para o MetaTrader 5, construídas a partir do histórico de ticks reais da corretora como um símbolo personalizado e atualizadas a cada tick. Qualquer indicador, template ou EA pode rodar no gráfico. Uma ajuda visual no gráfico mostra o horário real de cada barra. O EA nunca opera em um gráfico.
O que ele faz
Anexe o EA ao gráfico de um símbolo da corretora. Ele:
- cria um símbolo personalizado, por exemplo EURUSD_S5, com as especificações do símbolo de origem
- constrói o histórico dele a partir dos ticks reais da corretora, por padrão os últimos 3 dias, em partes (nos testes, 3 dias de BTCUSDm, 376.095 ticks, levaram 2,0 s)
- abre o gráfico personalizado, com o seu template, se você indicar um
- adiciona ao gráfico personalizado cada novo tick do símbolo de origem assim que ele chega
- relê do terminal cada nova barra algumas vezes por segundo (medido no MetaTrader 5 build 6230: barras que o terminal constrói a partir de ticks ao vivo podem sumir quando nenhum gráfico ou programa as lê; leituras regulares evitam isso)
- a cada 60 segundos confere as barras com o histórico de ticks da corretora e conta os ticks que o símbolo personalizado guarda para elas
- quando inicia de novo em um gráfico personalizado existente (após reiniciar o terminal, por exemplo), verifica se todas as barras da última parte do histórico estão presentes antes de continuar
- se uma barra continua errada, reconstrói todo o símbolo personalizado a partir do histórico de ticks, desde o mesmo primeiro tick: o único reparo que foi exato em todos os testes (medido no build 6230: gravar barras isoladas ou apagar parte de um símbolo personalizado que recebe ticks ao vivo pode fazer o terminal perder outras barras ou ticks)
Tipos de gráfico
- Barras de segundos (Seconds bars): 1, 2, 3, 4, 5, 6, 10, 12, 15, 20 ou 30 segundos. Uma barra contém os ticks de um intervalo. Um intervalo sem ticks não tem barra, assim como um minuto sem ticks não tem barra no M1.
- Barras de ticks (Tick bars): uma nova barra a cada N ticks.
- Barras de range (Range bars): uma nova barra abre quando o próximo preço faria a amplitude entre máxima e mínima da barra ficar maior que N pontos, de modo que nenhuma barra é maior que N pontos. Quando o preço salta, a nova barra abre no novo preço; nenhuma barra de preenchimento é desenhada para o salto.
As barras são desenhadas pelo preço Bid. O volume de ticks de uma barra é o número de ticks nela.
Várias cópias podem rodar ao mesmo tempo, um EA por símbolo personalizado: por exemplo, barras de 5 segundos de EURUSD em um gráfico e barras de range de 200 pontos de XAUUSD em outro. Um segundo EA para o mesmo símbolo personalizado não inicia e informa o motivo no seu painel.
Cada tick em exatamente uma barra
O símbolo personalizado recebe os próprios ticks da corretora, não uma cópia das barras. Nos testes, as barras foram comparadas com uma reconstrução independente a partir do histórico de ticks da corretora:
- a soma dos volumes de ticks é igual ao número de ticks de origem
- cada barra (abertura, máxima, mínima, fechamento e volume de ticks) é igual à reconstrução
- nas barras de segundos, nenhum intervalo sem barra tinha tick de origem
Em um teste de 75 minutos com 10 símbolos personalizados ao mesmo tempo (barras de 1, 2 e 5 segundos, barras de 20, 50 e 100 ticks, barras de range de 200 e 1000 pontos; 2.537.558 ticks no total), as três condições valeram para todos os símbolos, inclusive para os símbolos reconstruídos depois que o terminal ficou congelado por 2 minutos.
Lacunas nos gráficos de segundos: no BTCUSDm (cerca de um tick por segundo em um sábado), o gráfico de 1 segundo tinha 81.920 barras para 121.859 ticks. Cada intervalo de 1 segundo sem barra foi conferido com os ticks da corretora e não tinha nenhum. Uma lacuna em um gráfico de segundos é um período em que a corretora não enviou nenhum tick, não uma barra perdida.
A escala de tempo (por favor, leia)
O MetaTrader 5 não tem timeframe abaixo de um minuto, e um gráfico personalizado é sempre desenhado na escala de tempo do M1. Por isso cada barra do gráfico personalizado ocupa um slot de um minuto, e as datas sob o gráfico contam esses slots a partir de janeiro de 1971: elas não são o horário do relógio. Esta é a única forma de existirem barras menores que um minuto em um gráfico do MetaTrader 5.
O EA adiciona ao gráfico personalizado uma pequena ajuda visual que mostra o horário real (em toda esta descrição, horário real significa o horário do servidor da corretora, como no próprio gráfico do símbolo da corretora):
- Last bar: (última barra) horário de início com precisão de milissegundo, duração e número de ticks
- Cursor bar: (barra sob o cursor) o mesmo para a barra sob o mouse
- uma segunda escala de tempo com os horários reais, acima da escala do próprio gráfico
- se o gráfico está sendo atualizado: "Live: updated on every tick of EURUSD", "Building history from real ticks: 40.0%", "Waiting for the connection to the trade server", "Checking the bars after the start (up to 60 s)", "Not updating for 12 s: check the EA on the EURUSD chart" ou "Not updating: no EA builds EURUSD_S5 now"
Mantenha o gráfico personalizado no M1: uma barra de M1 é uma barra de segundos, de ticks ou de range. Um timeframe maior junta várias barras.
Velocidade
Medido em um teste de 75 minutos com 10 EAs e 8 gráficos personalizados ao mesmo tempo em um terminal: o tempo desde o momento em que um indicador no gráfico de origem viu um tick até o momento em que um indicador no gráfico personalizado o viu. O BTCUSDm estava ao vivo em uma conta demo. O ouro e o índice Nasdaq estavam fechados (sábado), então os gráficos deles foram alimentados com os ticks reais de sexta-feira no ritmo real deles, até 61 ticks por segundo.
| Gráfico personalizado | Ticks por segundo | Mediana | 99% dos ticks em até | Mais lento |
|---|---|---|---|---|
| BTCUSDm, barras de 5 segundos (ao vivo) | 1 | 0,2 ms | 30 ms | 262 ms |
| BTCUSDm, barras de 1 segundo (ao vivo) | 0,9 | 0,3 ms | 35 ms | 262 ms |
| BTCUSDm, barras de 50 ticks (ao vivo) | 1 | 0,2 ms | 32 ms | 281 ms |
| Ouro, barras de 1 segundo (reprodução) | 12 | 0,4 ms | 65 ms | 173 ms |
| Ouro, barras de 100 ticks (reprodução) | 12 | 0,3 ms | 111 ms | 140 ms |
| Nasdaq, barras de 5 segundos (reprodução) | 61 | 0,6 ms | 40 ms | 1,7 s (*) |
| Nasdaq, barras de range de 1000 pontos (reprodução) | 61 | 0,8 ms | 41 ms | 2,5 s (*) |
(*) Nos 2 minutos após o terminal ter ficado congelado por 2 minutos: os ticks atrasados chegaram todos de uma vez e o EA reconstruiu o símbolo. Em todos os outros momentos, o tick mais lento levou 142 ms e 156 ms. Ao longo dos 75 minutos, o terminal usou ao todo cerca de um núcleo de CPU e de 680 a 703 MB de memória, sem lentidão dos primeiros para os últimos 10 minutos.
O painel no gráfico de origem mostra, enquanto roda, o tempo de gravação do próprio EA por evento de tick, mediana e percentil 99 (mediana de 0,03 ms no teste).
Perda de conexão, reinício e alterações
Medido no mesmo teste de 75 minutos, nos reinícios do terminal depois dele e em um teste separado de alterações de parâmetros:
- Terminal congelado por 2 minutos: quando voltou, informou que a conexão com o servidor de negociação foi perdida e restabelecida. Em até 15 segundos, os EAs encontraram 4 símbolos personalizados com barras ou ticks faltando e os reconstruíram (de 0,2 a 2,4 s cada). Depois disso, os 10 símbolos passaram na verificação acima. Uma queda de rede de vários minutos não foi testada.
- Timeframe do gráfico de origem alterado (de M1 para M5 e de volta): o EA continuou a partir da última barra, sem reconstrução.
- Parâmetros alterados por meio de um template com outros parâmetros: o EA continuou a partir da última barra.
- Tipo de gráfico alterado com o EA rodando (de barras de 5 segundos para barras de 50 ticks e de volta): ele construiu o novo símbolo personalizado e deixou o gráfico antigo no lugar; de volta às barras de 5 segundos após 91 s, continuou o símbolo antigo e adicionou os ticks desses 91 s. Os dois símbolos passaram na verificação acima.
- Gráfico de origem fechado por 3 minutos: a ajuda visual mostrou "Not updating: no EA builds BTCUSDm_S1 now". Quando o gráfico foi aberto novamente com o EA, ele continuou a partir da última barra e os ticks desses 3 minutos estavam no gráfico 0,34 s depois.
- Terminal fechado e iniciado novamente 7 vezes (fechado de 3 segundos a cerca de 1,5 minuto): 40 das 51 inicializações do EA continuaram a partir de suas últimas barras. 11 encontraram barras faltando (descartadas pelo terminal, veja as limitações), esperaram os 60 segundos (na versão final, a ajuda visual mostra "Checking the bars after the start" enquanto isso) e reconstruíram seus símbolos (de 0,2 a 1,3 s cada). Após 5 das 7 inicializações, o terminal descartou, alguns minutos depois, barras do símbolo sem gráfico aberto; o EA detectou isso na verificação seguinte e reconstruiu o símbolo (em 2 testes, o teste terminou antes dessa verificação).
- Um segundo EA para o mesmo símbolo personalizado não iniciou, inclusive em 7 inicializações do terminal, quando todos os EAs do terminal iniciam juntos.
Remover o EA deixa o símbolo personalizado e seu gráfico no lugar. Anexe-o novamente com as mesmas configurações e ele continua a partir da última barra, depois de verificar que todas as barras anteriores estão presentes (se não estiverem, ele reconstrói o histórico sozinho).
Parâmetros
| Parâmetro | Padrão | Significado |
|---|---|---|
| Chart type | Seconds bars | Seconds bars, Tick bars, Range bars |
| Seconds bars: seconds per bar | 5 seconds | 1, 2, 3, 4, 5, 6, 10, 12, 15, 20 ou 30 |
| Tick bars: ticks per bar | 100 | De 1 a 100.000 |
| Range bars: range of a bar in points | 100 | Pontos do símbolo de origem |
| Source symbol | vazio | Vazio = o símbolo do gráfico ao qual o EA está anexado |
| Days of real tick history to build | 3 | De 0,01 a 60, usado quando o símbolo personalizado é construído. O histórico de ticks da corretora pode ser mais curto. Um novo valor não reconstrói um símbolo personalizado existente: para isso, defina o próximo parâmetro como true uma vez |
| Build the history again at start | false | Caso contrário, ele continua a partir da última barra quando o tipo de gráfico, a configuração dele e a origem são os mesmos |
| Custom symbol name | vazio | Vazio = automático, por exemplo EURUSD_S5, EURUSD_T100, EURUSD_R100 |
| Open the custom chart | true | |
| Template for the custom chart | vazio | Um template de MQL5\Profiles\Templates, aplicado quando o gráfico abre |
| Show the real time of the bars on the custom chart | true | A ajuda visual descrita acima |
| Close the custom chart when the EA is removed | false | |
| Tester only: open and close sample positions | true | Veja abaixo |
Testador de estratégia
O MetaTrader 5 não permite símbolos personalizados nem novos gráficos no Testador de estratégia (medido: ambos são recusados com o erro 4014). Por isso, no testador o EA constrói as mesmas barras na memória, com o mesmo código, a partir dos ticks que o testador lhe fornece, e no modo visual as desenha em uma subjanela abaixo do gráfico do testador. Ao final de uma execução, ele grava quantas barras construiu e que cada tick está em exatamente uma barra. Use "Every tick based on real ticks" para ver as barras construídas a partir dos ticks reais da corretora.
Somente no Testador de estratégia, o EA também abre e fecha uma pequena série de posições de exemplo, porque a loja Market verifica se um Expert Advisor negocia:
- volume mínimo, uma posição por vez, até 30 posições
- a margem livre é verificada antes de cada nova posição; com dinheiro insuficiente, ele grava uma nota e não envia nada
As posições de exemplo não são uma estratégia de negociação, e os resultados delas não dizem nada sobre lucro. Em um gráfico de conta real ou demo, o EA nunca envia, modifica ou fecha uma ordem.
Limitações (por favor, leia antes de comprar)
- A escala de tempo conta slots, não o horário do relógio. Veja "A escala de tempo" acima. Indicadores que usam o horário de uma barra (sessões, pivôs diários, filtros de horário) veem no gráfico personalizado os horários dos slots, não os horários reais.
- A cotação do símbolo personalizado fica um tick atrás. Medido: quando um indicador ou EA no gráfico personalizado é chamado para um novo tick, as barras e o histórico de ticks do símbolo personalizado já o contêm, mas a cotação do símbolo personalizado (Observação do mercado, SymbolInfoTick, a linha Bid no gráfico) mostra o tick anterior até que o próximo seja adicionado. Sete maneiras de contornar isso foram testadas no MetaTrader 5 build 6230, e nenhuma funcionou. Um indicador ou EA no gráfico personalizado deve ler os preços das barras (o fechamento da última barra é o tick mais recente).
- Símbolos personalizados não podem ser negociados. Um EA que roda no gráfico personalizado precisa enviar suas ordens para o símbolo da corretora.
- Somente gráficos Bid. Símbolos que a corretora desenha pelo preço Last (ações e futuros de bolsa) são recusados com uma mensagem no painel.
- A profundidade do histórico é a da corretora. A primeira construção baixa o histórico de ticks da corretora; as corretoras o mantêm por um tempo limitado. Um histórico longo de barras curtas pode ultrapassar a configuração "Max bars in chart" do terminal (Ferramentas, Opções, Gráficos); o gráfico então mostra apenas as barras mais recentes. As verificações do próprio EA releem no máximo metade dessa configuração, então um valor baixo apenas faz com que elas examinem menos barras (testado com 5.000 e um gráfico de 1 segundo de cerca de 80.000 barras: nenhuma reconstrução extra em 8 minutos).
- As barras de segundos têm espaço por um tempo limitado. Os slots precisam ficar no passado: um gráfico de 1 segundo tem espaço para cerca de 339 dias de barras após o seu início, um gráfico de 5 segundos para cerca de 4,6 anos. Quando o espaço se esgota, o EA reconstrói o histórico sozinho.
- Mantenha o EA rodando enquanto usa o gráfico personalizado. Medido no build 6230: quando o EA foi removido ou o terminal reiniciado, o terminal às vezes descartou as barras da parte mais recente de um símbolo personalizado (até um dia de slots, 1.440 barras), mantendo os ticks. Um gráfico deixado aberto sem o EA então mostra uma lacuna. Quando o EA inicia novamente, ele detecta isso e reconstrói o símbolo. Após um reinício, o gráfico pode mostrar essa lacuna por até cerca de um minuto: o EA espera até 60 segundos para o terminal carregar as barras (a ajuda visual então mostra "Checking the bars after the start") e, se ainda faltarem barras, reconstrói o símbolo (de 0,2 a 1,3 s nos testes). Nos testes, o terminal também descartou barras alguns minutos após um reinício, com o EA rodando: o EA detectou isso com suas verificações (a cada 60 segundos; em três testes o reparo veio 74 segundos depois que o verificador do próprio teste viu a lacuna) e reconstruiu o símbolo; um símbolo sem gráfico aberto pode manter a lacuna até essa verificação ou até a próxima inicialização. Isso aconteceu com mais frequência em um símbolo personalizado sem gráfico aberto.
- Um reparo esvazia e preenche novamente todo o símbolo personalizado. Quando uma verificação encontra uma barra errada ou faltando, o EA apaga os ticks e as barras do símbolo personalizado e os grava novamente a partir do mesmo primeiro tick (de 0,2 a 2,4 s nos testes). Indicadores e EAs no gráfico personalizado veem o histórico desaparecer e voltar durante esse tempo.
- Um EA por símbolo personalizado, e ele usa o slot de EA do seu gráfico: anexe-o a um gráfico livre do símbolo de origem, não ao gráfico de um EA que negocia.
- Sem Testador de estratégia no símbolo personalizado. Medido no build 6230: o testador fornece os ticks do símbolo personalizado, mas constrói só parte das barras dele ou nenhuma (1.324 e 0 de 4.316 barras M1 em dois testes), então um EA que precisa das barras não pode ser testado nele. Teste um EA assim no símbolo da corretora.
- Ambiente testado:
- somente MetaTrader 5 build 6230, Windows 10, uma tela de 3840 x 2160 a 288 dpi
- uma conta demo em uma corretora de CFD para varejo: BTCUSDm e ETHUSDm ao vivo, ticks de sexta-feira de XAUUSDm e USTECm reproduzidos no ritmo real deles (testes de sábado); histórico de EURUSDm, XAUUSDm e USTECm para as capturas de tela
- Testador de estratégia: contas demo netting e hedging do servidor demo da plataforma, EURUSD, GBPUSD, XAUUSD
- teste mais longo: 75 minutos; não testado em outras corretoras, em contas com dinheiro real nem em MQL5 VPS
- Por favor, experimente primeiro a demo gratuita no Testador de estratégia. A demo mostra as barras somente em uma subjanela do testador (veja "Testador de estratégia" acima); o gráfico personalizado em uma conta real ou demo precisa da versão completa.
