Tabela de todos os ofícios. Acesso via MQL5 - página 3

 
prostotrader:

Alguém sabe qual é o erro?

O indicador funciona corretamente, mas mais barras são exibidas,

do que foi criado.

Eu não olhei o código, mas presumo que após cada nova barra, ele não leva em conta que as linhas indicadoras também são automaticamente deslocadas para a esquerda (se você olhar para o gráfico). Em outras palavras, é necessário deslocar as linhas indicadoras para a direita (quando se olha para o gráfico).
 
Karputov Vladimir:
Eu não olhei o código, mas presumo que após o aparecimento de cada nova barra, ele não leva em conta o fato de que as linhas indicadoras também são automaticamente deslocadas para a esquerda (se você olhar para o gráfico). Em outras palavras, quando aparece uma nova barra, as linhas indicadoras de mudança para a direita (quando se olha o gráfico).
Obrigado, eu encontrei o bug.
Arquivos anexados:
DealsLent.mq5  10 kb
 
prostotrader:
O toque final...

Acontece que não é o último ....

Necessidade de um pouco mais de otimização.

Vou terminar e testá-lo...

 
Se este for o caso, mantenha o indicador de tique - indicador de interesse aberto (executado em uma conta real conectada à troca).
Arquivos anexados:
 
Karputov Vladimir:
Se este for o caso, mantenha o indicador de tique - indicador de interesse aberto (executado em uma conta real conectada à troca).
Ficarei feliz em ouvir isso.
 

Foi descoberto um problema sério:

Duplicação de carrapatos com tempo_de_início diferente :(

int copied=CopyTicks(Symbol(),ticks,COPY_TICKS_ALL,start_time,0);

start_time é diferente e os carrapatos são copiados repetidamente se

eles têm o mesmo tempo

Descrevê-lo-ei em detalhes amanhã.

Construção mais recente

Arquivos anexados:
DealsLent.mq5  12 kb
 

Não consigo dormir, então pensei em anotar o que está acontecendo.

(O código indicador completo está no post acima).

As passagens da troca não chegam ao terminal estritamente por intervalos de tempo,

mas em blocos (ver captura de tela) Bloco 1, Bloco 2 etc.

O terminal "armazena" e os exibe na tabela, pois os recebe da troca (bloco por bloco).

Emambos os blocos pode haver transações com o mesmo tempo.

Se chamarmos CopyTicks() NÃO em tempo real (digamos no dia seguinte ou em alguns segundos),

então a função CopyTicks() retornará os dados exatos.

Mas, em tempo real, acontece o seguinte:

int copied=CopyTicks(Symbol(),ticks,COPY_TICKS_ALL,start_time,0);

Se start_time = (23:49:58.114), obtemos o Bloco 1 completamente (circulado em vermelho).

Em seguida, esperamos a mudança de horário para obter o Bloco 2 (circulado em verde).

Para evitar a duplicação do Bloco 1 (OnBookEvent pode acionar muito rapidamente)

introduzimos um cheque para garantir que o tempo tenha mudado

if(start_time===ulong(ticks[copy-1].time_msc)) retorna;

Quando start_time = (23:49:58.596), deveríamos ter conseguido o Bloco 2,

mas a função CopyTicks() retorna tanto o Bloco 2 como todos os carrapatos com tempo (23:49:58.114),

se o Bloco 2 tiver pelo menos um tique com o mesmo tempo (23:49:58.114).

Esta é uma notícia muito triste.... :(

A menos que os desenvolvedores consertem isso, é impossível obter uma Fita de Obras em Tempo Real.


 
prostotrader:


E por que você acha que os carrapatos são baixados de um determinado tempo e FUTURO para a história quando você pergunta por tempo? Na verdade, ao solicitar carrapatos por tempo, os carrapatos são baixados de um determinado tempo e para o FUTURO. Por exemplo:

Dados de entrada (solicitação 20000 ticks), hora 2016.08.25 20-00-00:

solicitar 20.000 ticks, tempo 2016.08.25 20-00-00:


Receba:

2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Получено тиков: 10823 код ошибки: 0
2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Тик: 2016.08.25 20:00:00 bid: 14377.0 ask: 0.0 last: 0.0 [0]
2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Тик: 2016.08.26 00:02:08 bid: 0.0 ask: 0.0 last: 0.0 [10822]
2016.08.26 07:22:06.852 CopyTicks_1_02 (SBRF-9.16,M1)   Size 0 Mb

Ou seja, os carrapatos são recebidos do horário solicitado2016.08.25 20:00: 00 rumo ao FUTURO (o último carrapato tem o horário2016.08.26 00:02:08)

Arquivos anexados:
 
Karputov Vladimir:

E por que você acha que os carrapatos são baixados de um determinado tempo e FUTURO para a história quando você pergunta por tempo? Na verdade, ao solicitar carrapatos por tempo, os carrapatos são baixados de um determinado tempo e para o FUTURO. Por exemplo:

Dados de entrada (solicitação 20000 ticks), hora 2016.08.25 20-00-00:



Receba:

Ou seja, os carrapatos são recebidos do horário solicitado2016.08.25 20:00: 00 rumo ao FUTURO (último carrapato tem tempo2016.08.26 00:02:08)

Eu não penso em profundidade, eu vejo "amurado" a partir da profundidade.

Por que pensar?

Verifique o indicador e veja por si mesmo!

E você sequer lê o que está escrito?

Если мы вызываем CopyTicks() НЕ в реальном времени (скажкем, на следующий день),

то функция CopyTicks() будет возвращать точные данные.
 
Eu notei isso por acaso quando, à noite, havia menos negócios.
Razão: