CopyTicksRange () não funciona corretamente na MQL5. a - página 4

 
Alexey Viktorov #:

Uma linha de volta para o diálogo:

A função deve funcionar da maneira que os desenvolvedores pretendiam, não da maneira que os usuários querem que funcione. Um quer uma coisa, outro quer outra, e o outro quer tolices.

Esta é a razão pela qual os desenvolvedores não respondem a você. E eu não sou um defensor, estou tentando trazer-lhe uma verdade simples, não sobrecarregue os outros se você mesmo não puder fazer isso. Você, por outro lado, ligou o "não......... cede..." e está inventando mitos sobre as muletas.

Isso é realmente TUDO...não tenha esperanças.

Eu sei que sim, por isso vou escrever. A função deve funcionar conforme descrito na documentação e nada mais. Se houver nuances, escreva-as na documentação e você não terá nenhum problema.

Não tenho nenhum sentido para convencê-lo de nada. É melhor deixar que os desenvolvedores conheçam verdades simples. Tenho certeza de que você nunca trabalhou em uma equipe de programadores - você é um típico programador autodidata sem uma sólida base de conhecimento. Enquanto eu tenho trabalhado e gerenciado projetos sérios. Nós costumávamos despedir pessoas por comunicar com verdades comuns não apoiadas pela experiência e conhecimento. Não preciso de você como intermediário para me comunicar com os desenvolvedores. Recebi uma resposta deles há cerca de dois anos - "faça muletas, tudo funciona aqui". Espero que o autor desta frase já tenha sido despedido porque os programadores não são Deus e muitas vezes cometem erros.

Tivemos uma posição de testador - você nem pode imaginar quantos bugs podem ser encontrados em algumas páginas de código em um programador superconfiante e inexperiente.

 
RusPro #:

Em seu exemplo funciona, porque as condições de chamada são diferentes - a hora de início é sempre igual ao início da barra existente (ou seja, sabe-se que existem carrapatos) e você lê todo o histórico de carrapatos da última barra de uma só vez.

A propósito, uma das minhas muletas funciona de forma semelhante à sua. No início, eu também recebo o tempo das barras existentes e depois as quebro em segmentos máximos contínuos e recebo os carrapatos. Mas outro problema ocorre - se não houver quantidade suficiente de recepção de dados, o resto é uma dança de pandeiro (sobre a qual eu falei acima).

E trabalhar com matrizes dinâmicas é muito mais lento e você tem que levar em conta a possível fragmentação da memória.

Você já leu todos os documentos até o final?

Примечание

Функция CopyTicksRange() предназначена для запроса тиков из строго указанного диапазона, например, за конкретный день истории.

E tudo funciona rapidamente com arrays dinâmicos.

Compare seu ping e esqueça a velocidade dos arrays dyn. :)

Não é um canal MMB dedicado

Adicionado por

Se você precisa de velocidade, então por que você "sentou" na BCS, esses u--holes limitam deliberadamente a velocidade do login padrão FORTS

de 30 transações por seg. a 10 tr. por seg.!

Adicionado

E é melhor escrever na seção "Negociação em Bolsa".

 
RusPro #:

Em forex, os mesmos erros. Corretor Alpari, conta teste. Símbolo EURUSD

O símbolo personalizado é feito com base no EURUSD, deixando o nome também

Se estamos falando da operação do CopyTicks no Testador de Estratégia, sou incompetente, porque nunca solicitei um histórico de tick no Testador de Estratégia.

Eu só posso falar pelo modo de batalha.

 
prostotrader #:

Você lê os documentos até o fim?

Sim, eu li as descrições das funções até o fim e, se eu tiver dúvidas, eu também olho através dos fóruns. Todos têm uma noção diferente de rapidez. A dinâmica é mais lenta por definição porque há uma redistribuição constante da memória. A segunda desvantagem é a fragmentação - às vezes você comete um erro com a dinâmica e depois a memória não é suficiente para fechar o terminal :))))

Ping não tem nada a ver com isso, após o primeiro download, os ticks já são dados a partir da base, em teoria, é claro :) me ensinaram que o programa deveria ser acelerado pela otimização, mas não pela base de hardware - isto é automático. E que diferença faz, qual é a conexão - hoje é uma, amanhã é outra - não depende do algoritmo.

Tenho meu próprio corretor, mas não tenho o corretor certo, apenas não sabia como abri-lo e não tenho o corretor certo. Minha tarefa agora é testar a matemática sobre carrapatos, não sobre comércio ou freelance.

 
RusPro #:

E trabalhar com matrizes dinâmicas é muito mais lento e você tem que considerar uma possível fragmentação da memória.

Favor fornecer medidas para esta declaração. Presto muita atenção às questões de desempenho em Expert Advisors.

 
fxsaber #:

Se estamos falando da operação do CopyTicks no Testador, eu não sou competente, porque nunca solicitei o histórico do tick no Testador.

Só posso falar pelo modo de batalha.

Não estou falando do testador, mas de uma conta demo. Porque é problemático verificar em Alpari em uma conta ativa em um fim de semana.

 
RusPro #:

Não me refiro ao testador, mas à conta demo. O Testador, não o testador, mas a conta demo.

Sim, se você pedir carrapatos em um intervalo onde não houve nenhum, ele não dá zero, mas para o dia inteiro.

Parece que isto é feito deliberadamente. Mas eu não sei para quê.


A investigação tem mostrado que o problema ocorre quando o tempo após o último tique da semana de negociação é atingido. Acho que é um bicho.

Em símbolos reais e personalizados, ele se comporta de forma idêntica.


Obviamente, se eu solicitar carrapatos do último carrapato do pedido anterior, o problema não ocorrerá. Mas se você fizer uma solicitação com SymbolInfoTick_time_msc, o bug pode ocorrer. Portanto, é melhor não fazer isso ainda.

 

fxsaber #:

Mas se você fizer uma consulta com SymbolInfoTick_time_msc, o bug pode aparecer. É por isso que é melhor não fazer isso ainda.

Já foi testado quantas vezes?

Se você não gosta do SymbolInfoTick, use

int  CopyTicks( 
   string           symbol_name,           // имя символа 
   MqlTick&         ticks_array[],         // массив для приёма тиков 
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков 
   ulong            from=0,                // дата, начиная с которой запрашиваются тики 
   uint             count=0                // количество тиков, поставьте 1
   );
CopyTicks

de

[em] Data a partir da qual os carrapatos são solicitados. Especificado em milissegundos desde 01.01.1970. Se o parâmetro de=0, então a última contagem de carrapatos é passada .

 
Alexey Viktorov #:

Isto já foi verificado quantas vezes?

Não gosto do uso do SymbolInfoTick

Obrigado, ótimo em trabalhar com carrapatos. Isso não invalida a existência do bug.

 
Alexey Viktorov #:

Isto já foi verificado quantas vezes?

Não gosto do uso do SymbolInfoTick

foi testado por dois anos!

Que teimoso! Leia o que foi escrito acima - CopyTicks também está com falhas. Se você gosta de procurar maneiras de fazer uma função de buggy funcionar ou encontrar soluções para o buggy, então não se preocupe - não se trata disso

Razão: