Discussão do artigo "Criação e teste de símbolos personalizados na MetaTrader 5" - página 5

 
fxsaber:

Há uma função diferente com esse nome. Substituí-la por uma função Replace não é realmente entender para que serve TicksAdd: lançar os eventos Tick correspondentes.


Não vejo TicksAdd, acho que originalmente era TicksAdd, mas depois foi renomeado por analogia com RatesUpdate (que adiciona e exclui dados), para que não houvesse discrepância e eles fizeram isso corretamente.

Eu o substituo por Replace porque a função Update não funciona (se você executar o script, verá a mesma coisa, os arquivos em Common/Files estarão lá).
.

Arquivos anexados:
 
AndreyKrivcov:

Tenho intellescence que não está vendo o TicksAdd

Atualização para a versão 1700.

 
AndreyKrivcov:

Mas eu estava errado sobre algo com certeza - a função provavelmente funciona, mas não consegue registrar todos os ticks que solicitei (estou tentando registrar muitos ticks)

Ela não se destina à gravação.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.

Versão beta do MetaTrader 5 build 1700: Projetos no MetaEditor e ferramentas sintéticas

MetaQuotes Software Corp., 2017.12.05 14:22

  1. Terminal: adicionada a capacidade de lançar cotações em tempo real para instrumentos personalizados. Agora você pode escrever um Expert Advisor em MQL5 que irá lançar quaisquer cotações para um determinado instrumento personalizado. A nova função CustomTicksAdd é usada para essa finalidade.
    .
    int  CustomTicksAdd(
       const string           symbol,       // nome do caractere
       const MqlTick&         ticks[]       // matriz com dados de ticks a serem aplicados ao instrumento do usuário
       );
    A função CustomTicksAdd permite que você traduza os ticks como se eles viessem do servidor da corretora. Os dados não são registrados diretamente no banco de dados de ticks, mas são enviados para a janela "Market Watch". E, a partir dessa janela, o terminal salva os ticks em seu banco de dados. Se o volume de dados transferidos em uma chamada for grande, a função mudará seu comportamento para economizar recursos. Se mais de 256 ticks forem transferidos, os dados serão divididos em duas partes. A primeira parte (a maior) é gravada diretamente no banco de dados de ticks (como faz o CustomTicksReplace). A segunda parte, que consiste nos últimos 128 ticks, é transferida para a janela "Market Watch" e, em seguida, salva no banco de dados pelo terminal.
 
fxsaber:

Não foi feito para ser registrado.


Provavelmente por causa da compilação. Tenho uma versão antiga até agora, certo. Mas, para meus propósitos, não preciso lançar ticks em tempo real, preciso usá-los no testador e é isso.

 
AndreyKrivcov:

Provavelmente por causa da compilação. Até agora, tenho uma versão antiga, certo. Mas, para meus propósitos, não preciso lançar ticks em tempo real, preciso usá-los no testador e pronto.

É para isso que serve o Replace.

 
Ao exportar o histórico de ticks, o volume do arquivo CSV aumenta significativamente, e seu formato contém informações sobre cada tick com precisão de milissegundos. Com base nesses dados, o terminal formará um histórico de minutos, que será usado para criar todos os outros períodos de tempo.

Camaradas, o que devo pressionar para que o terminal gere um histórico de minutos a partir do histórico de ticks?

 

Bom dia.

Peço sua ajuda:

Uma vez por dia, gravo caracteres personalizados em um arquivo CSV ("para o dia anterior a ontem" com duração de 24 horas).

Em seguida, excluo o segmento correspondente no histórico (excluo "anteontem" com duração de 24 horas) por meio de CustomRatesDelete.

Em seguida, redesenho o gráfico por meio de ChartRedraw.

Como resultado, espero ver um arquivo de histórico ***.hcc menor do que era antes de excluir parte do histórico.

No entanto, ele continua crescendo.

Recarregar o terminal também não tem efeito.

Como posso economizar espaço nos dados do histórico e fazer com que eles correspondam aos dados do gráfico?

 
vestrub:

Como resultado, espero ver um arquivo de histórico ***.hcc menor do que era antes de a parte do histórico ser removida.

Entretanto, ele continua a crescer.

O crescimento do *.tkc e do *hcc é um recurso antigo. Talvez eles consertem isso na nova compilação.

 
fxsaber:

O crescimento de *.tkc e *hcc é um recurso antigo. Talvez eles consertem isso na nova versão.

Entendo corretamente que a única opção para economizar espaço em disco será:

1. salvar todo o histórico no SCV.

2. excluir o *hcc e reiniciar o terminal para começar a escrever o histórico do zero.

?

 
vestrub:

Estou correto em entender que a única opção para economizar espaço em disco seria:

1. salvar todo o histórico no SCV.

2. excluir o *hcc e reiniciar o terminal para começar a escrever o histórico do zero.

?

Isso não é salvar. O CSV ocupa mais espaço em um dia do que o hcc ocupa em uma semana.