Especialistas: SaveTicks

 

SaveTicks:

Este utilitário é projetado para gravar cotações de ticks no formato CSV e BIN, escolha conveniente de um conjunto de símbolos para gravação.

Autor: Alexey Volchanskiy

 

Inicialmente, tive a ideia de escrever ticks com precisão de milissegundos, e não de segundos, como permite a MQL4/5. Mas no kodobase meu código foi eliminado porque a dll do Windows"Kernel32.dll" foi usada. Eles me obrigaram a removê-la e cortaram a funcionalidade.

Aqui estão os Expert Advisors originais para MT4/5 com precisão de milissegundos, use-os melhor.



Arquivos anexados:
 
Alexey Volchanskiy:

Inicialmente, tive a ideia de escrever ticks com precisão de milissegundos, e não de segundos, como permite a MQL4/5. Mas no kodobase meu código foi eliminado porque a dll do Windows"Kernel32.dll" foi usada. Eles me obrigaram a removê-la e cortaram a funcionalidade.

Aqui estão os Expert Advisors originais para MT4/5 com precisão de milissegundos, use-os melhor.




Alexei, por favor, diga-me por que não consigo ver seus indicadores no gráfico, pois já tentei de tudo

 
fulstak:

Alexey, diga-me por que não consigo ver seus indicadores no gráfico, pois já tentei todos eles


Você precisa ver algo no gráfico? Leia a descrição, que diz: O utilitário foi projetado para registrar cotações de ticks nos formatos de texto (CSV) e binário (BIN).

 

Alexei, alguns comentários.

1. Você não tem a seleção de símbolos via SymbolSelect, que é necessária para obter cotações de todos os símbolos.

2. Seria desejável levar em conta, de alguma forma, o servidor de negociação atual ao definir os nomes (ou o caminho) dos arquivos. Assim, ao mudar para a conta de outra corretora, ele não gravaria nos mesmos arquivos. Ou simplesmente parasse de funcionar ao mudar o servidor de negociação.

3) Não faria mal adicionar uma verificação de conexão com o servidor de negociação. Caso contrário, ele continuará escrevendo quando a conexão for interrompida, e você não saberá que houve uma interrupção nesse local.

4. Há uma limitação idiota no número de arquivos abertos simultaneamente no mql (não mais que 64 arquivos), portanto, tenha em mente que o código deve ser complicado.
 
Evgeny Belyaev:

Você deveria ver algo no gráfico? Leia a descrição, ela diz: O utilitário foi projetado para registrar cotações de ticks nos formatos de texto (CSV) e binário (BIN).


Eugene, obrigado, por algum motivo não recebo mensagens privadas sobre novos comentários no KB. Por acaso, vi isso agora.

 
Alexey Navoykov:

Alexei, alguns comentários.

1. Você não tem a seleção de símbolos via SymbolSelect, que é necessária para obter cotações de todos os símbolos.

2. Seria desejável levar em conta, de alguma forma, o servidor de negociação atual ao definir os nomes (ou o caminho) dos arquivos. Assim, ao mudar para a conta de outra corretora, ele não gravaria nos mesmos arquivos. Ou simplesmente parasse de funcionar ao mudar o servidor de negociação.

3) Não faria mal adicionar uma verificação de conexão com o servidor de negociação. Caso contrário, ele continuará escrevendo quando a conexão for interrompida, e você não saberá que houve uma interrupção nesse local.

4. Há uma limitação idiota no número de arquivos abertos simultaneamente no mql (não mais que 64 arquivos), portanto, tenha em mente que o código deve ser complicado.

Alexey, obrigado por seus comentários, devo corrigi-los. Mas não tenho muita certeza sobre o Symbol Select. Ele não é usado nos exemplos da ajuda e a descrição é muito vaga em geral. Parece que ele foi desativado em termos de atualização de dados, apenas no MarketWatch ele exclui e seleciona símbolos.

Aqui está um exemplo da ajuda. Mas o SymbolIsSynchronised provavelmente deve ser definido.

Ele verifica se os dados sobre o símbolo especificado no terminal estão sincronizados com os dados no servidor de negociação.

void OnStart() 
  { 
//--- 
   int     attempts=0;     // contador de tentativas 
   bool    success=false;  // sinalizador de execução bem-sucedida de cópia de tique 
   MqlTick tick_array[];   // matriz para receber ticks 
   MqlTick lasttick;       // para obter os dados do último tique 
   SymbolInfoTick(_Symbol,lasttick); 
//--- fazer 3 tentativas para obter ticks 

***

 
Alexey Volchanskiy:

Alexey, obrigado pelos comentários, preciso corrigi-lo. Mas não tenho muita certeza sobre o Symbol Select. Ele não é usado nos exemplos da ajuda e a descrição é muito vaga. Parece que ele está desligado em termos de atualização de dados, apenas no MarketWatch ele remove e seleciona símbolos.

Aqui está um exemplo da ajuda. Mas o SymbolIsSynchronised provavelmente deve ser definido.

Ele verifica se os dados sobre o símbolo especificado no terminal estão sincronizados com os dados no servidor de negociação.

***

Por que adivinhar? Tudo pode ser verificado facilmente. Tente obter uma cotação para qualquer símbolo que não esteja presente no Market Watch. Você obterá zeros. É por isso que você precisa selecioná-lo primeiro.

E SymbolIsSynchronised é outra coisa. Sinceramente, não entendo seu significado, porque as cotações são sempre sincronizadas com o servidor (se houver uma conexão). Embora agora, no fim de semana, ele dê falso. Talvez o significado não seja o servidor, mas a plataforma de negociação da qual as cotações são recebidas. Nesse caso, é de fato uma função necessária que deve ser levada em conta.

 
Alexey Navoykov:

Não preciso adivinhar. Tudo pode ser facilmente verificado. Tente obter uma cotação para qualquer símbolo que não esteja no Market Watch. Você obterá zeros. É por isso que você precisa selecioná-lo primeiro.

E SymbolIsSynchronised é outra coisa. Sinceramente, não entendo seu significado, porque as cotações são sempre sincronizadas com o servidor (se houver uma conexão). Embora agora, no fim de semana, ele dê falso. Talvez o significado não seja o servidor, mas a plataforma de negociação da qual as cotações são recebidas. Nesse caso, é de fato uma função necessária que também deve ser levada em conta.

Entendo, eu sempre mantenho todos os símbolos na Visão geral, não considerei essa opção. Esse é um benefício claro para a comunidade: uma pessoa deixará passar algo e outra perceberá.

Lembro-me de que, há muito tempo, quando éramos estudantes, com um amigo - um engenheiro eletrônico - estávamos desenvolvendo um projeto, trabalhando em um par, e eu era um bom engenheiro eletrônico.

E notamos que havia muito menos erros e que a velocidade aumentava muito mais. Ele perdia alguma coisa, eu apontava, e vice-versa.

PS: o site destaca a palavra Técnico em Eletrônica em vermelho, e esse é o título oficial da profissão, eu o tinha anotado no meu histórico de emprego há muito tempo. Não confunda com o filme "The Adventures of Electronik". ))


 
Como os arquivos com dados de ticks podem se tornar facilmente muito grandes, eu teria gostado se houvesse uma opção para empacotar os dados.
 
Carl Schreiber:
Como os arquivos com dados de ticks podem se tornar facilmente muito grandes, eu teria gostado se houvesse uma opção para empacotar os dados.

Gostaria de saber para que você usaria os dados (empacotados)?

Pela minha experiência, o fator limitante desse coletor de dados não é o tamanho dos dados, mas sim a qualidade (integridade) dos dados salvos. O fluxo é interrompido com muita frequência, seja pelo broker ou pela conexão, mas principalmente ao reiniciar/atualizar o terminal, organizar o conteúdo da janela do terminal ou quando o terminal congela temporariamente.