Testando 'CopyTicks'. - página 20

 

Quando não é zero De dentro do CopyTicks está procurando (provavelmente busca binária) lugar para começar - índice na base interna.

Favor adicionar uma função que retorna o índice no banco de dados por tempo. Então esta tarefa será possível para resolver de forma ótima

fxsaber:
Qual é o algoritmo ideal (mais rápido) para obter os carrapatos de_tempo_a_tempo?
 

Por uma boa razão, o tópico "O que é um carrapato?" foi eliminado. Darei algumas das minhas respostas a partir da história sobrevivente

В парадигме MT тик - это то, что пришло от биржи. Единица стрима(-ов). Поэтому два подряд идущих тика могут полностью совпадать (MqlTick), но при этом не обозначать одно и то же событие. Помимо MqlTick-данных есть еще номер тика, который не показывается в MT. И есть MT-нюанс с тиками, когда сама история тиков переписывается задним числом из-за нескольких источников получения тиков.

dois ticks seguidos (causando um evento Tick/Calculate) podem ser idênticos na estrutura MqlTick (todos os preços e volumes e tempo e bandeiras são iguais), mas na verdade são diferentes. Bid/Ask é sempre um múltiplo de TickSize. Last (não na troca) pode não ser um múltiplo de TickSize. TickSize pode ser muitas vezes maior que Point (veja RTS, por exemplo). Portanto, não é muito correto falar sobre Ponto neste caso.

Pode ser útil. SymbolInfoTick é uma função dessincronizada. Isto significa que pode retornar carrapatos diferentes em locais diferentes da OnTick. Além disso, mesmo se você chamar SymbolInfoTick no início do OnTick, o tick resultante não será o iniciador do evento Tick para o qual o OnTick é acionado. Os campos de sua estrutura MqlTick não serão iguais ao tick que veio da troca, porque estes campos são sintetizados pelo próprio terminal e são iguais aos valores do Marketwatch.

 
Por que os tipos INFO no conversor de moedas não são os mesmos que os tipos ALL?
 
Executando o Consultor Especialista no Teste de Estratégia
void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Ticks[1];
    
    if (SymbolInfoTick(_Symbol, Ticks[0]))  
      Print(CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, Ticks[0].time_msc + 1)); // Сколько тиков со временем больше последнего
    FirstRun = false;
  }
}

Resultado

2016.10.15 13:23:57.689 2016.10.12 00:00:16   1

Deve retornar zero, mas retorna um. As carteiras[] não mudam. Bug!

 
fxsaber:
Lançamento de um consultor especializado no teste de estratégia
void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Ticks[1];
    
    if (SymbolInfoTick(_Symbol, Ticks[0]))  
      Print(CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, Ticks[0].time_msc + 1)); // Сколько тиков со временем больше последнего
    FirstRun = false;
  }
}

Resultado

2016.10.15 13:23:57.689 2016.10.12 00:00:16   1

Deve retornar zero, mas retorna um. Neste caso, o Ticks[] não muda. Bug!

Poderia ser o fim de semana?

A partir da ajuda. CopyTicks A função recebe o ticks_array dos ticks acumulados pelo terminal durante a sessão de trabalho atual.

 
Alexey Volchanskiy:

Poderia ser o fim de semana?

A partir do arquivo de ajuda. CopyTicks A função recebe os ticks acumulados pelo terminal durante a sessão de trabalho atual em ticks_array array.

Há um bug no testador.
 

Problema de desempenho do CopyTicks.

Robo

Network 'xxx': authorized on RoboForexEU-MetaTrader 5 through Europe #1 (ping: 56.66 ms)

BCS

Network 'xxx': authorized on BCS-MetaTrader5 through Access Server #2 (ping: 45.53 ms)



Estes são os dados indicadores de carrapato. Em ambos os casos, há 2-3 mil ticks carregados. Mas no robô é mais do que uma ordem de grandeza mais rápida.

Viu as mesmas velocidades em forex durante o dia - o mercado era mais ágil então. O Copitix parece estar atrasando um relógio de mercado ativo.

O único gráfico e o único indicador em ambos os casos. E a kopitix já estava definitivamente tendo as citações carregadas na base/cache.

 

1) as pilhas estavam em ambos?

2) os carrapatos comerciais/info foram separados em seus fios originais? Roscas complexas requerem recálculo e emissão simples

3) qual foi o pedido real?

4) por quantas consultas os resultados foram validados? Seguido e exatamente como as regras de teste foram seguidas: contabilização do início frio, descartando os valores aberrantes, repetibilidade dos resultados por série, código para reproduzir.

De modo geral, os resultados numéricos devem ser precedidos por um código exato para que qualquer pessoa possa repeti-los. Caso contrário, não vale a pena discutir o assunto.

 
Renat Fatkhullin:

1) as pilhas estavam em ambos?

2) os carrapatos comerciais/info foram separados em seus fios originais? Roscas complexas requerem recálculo e emissão simples

3) qual foi o pedido real?

4) por quantas consultas os resultados foram validados? Seguido e exatamente como as regras de teste foram seguidas: contabilização do início frio, descartando os valores aberrantes, repetibilidade dos resultados por série, código para reprodução.

De modo geral, os resultados numéricos devem ser precedidos por um código exato para que qualquer pessoa possa repeti-los. Caso contrário, não vale a pena discutir o assunto.

Eu lhe dei um link para o código exato.

  1. Não existiam tumblers.
  2. Somente INFO-tipos.
  3. COPY_TICKS_INFO com desde > 0.
  4. Veja o indicador no link em operação. A repetibilidade é completa. Excluída a partida a frio. Emissões similares.
 

Vamos verificar.

Mas sobre a falta de um secador em um dos servidores, existem grandes dúvidas. Não importa que o secador não seja rendido. Se um símbolo o tem, seus dados estão sempre presentes e um algoritmo de emissão mais complexo funciona ao solicitar carrapatos.