Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Pode haver uma opção mais rápida. Mas um passo para a esquerda na condição do que precisa ser contado, e a lógica pode ter que mudar consideravelmente. Não é fácil, em geral.
Não é caching, é indexação. Aqui está o caching (parte do código):
O código foi escrito apressadamente e há muito para refinar, dado o freqüente ArrayResize, mas ele atualiza exatamente o cache, ordenado por Closed. Você quer pesquisar mais tarde, use seu próprio índice. Mas você só tem que atualizar uma pequena parte cada vez.
Não me lembro porque"12*3600" está lá, não acho que todos os acordos tenham sido feitos comigo.
Não é um cache, é um índice.
Por favor, leia atentamente.
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
MT5 e Velocidade em Ação
fxsaber, 2020.08.28 21:10
Puro MQL5 é 100x mais lento que o cache parcial (somente HistorySelectByPosition).
Aqui está o caching (parte do código):
O código foi escrito apressadamente e tem algumas coisas para melhorar considerando o ArrayResize freqüente, mas ele atualiza o cache ordenado por Closed. Você quer pesquisar mais tarde, use seu próprio índice. Mas você só tem que atualizar uma pequena parte cada vez.
Este é apenas um exemplo de uma poupança histórica sem os artifícios do mundo real. Mesmo no MT4Orders o caching parcial é feito com uma margem de cinco segundos.
Não me lembro porque"12*3600" está lá, não acho que todos os ofícios tenham sido emitidos para mim.
Sempre definir INT_MAX.
Arquitetonicamente, fazer o caching completo requer muita reflexão. Há muitas armadilhas.
Não há realmente nada de complicado aí. Você pode fazer uma amostragem com horas para economizar, por exemplo, para todas as encomendas que possam aparecer na história retroativamente (o que é muito estranho, por sinal).
Este é apenas um exemplo de economia de histórico sem qualquer artifício em tempo real. Mesmo no MT4Orders o caching parcial é feito com uma margem de cinco segundos.
Sempre definir INT_MAX.
Eu não entendo o objetivo do turno. Como se houvesse um carimbo de horário atual, eu quero me relacionar com ele e é estranho que você tenha que especificar um horário que não existe. Eu meio que quero uma explicação lógica.
Meu cache, a propósito, funciona em contas reais com 10k+ negócios.
E os principais freios do código até agora são as funções de rede.
No último beta 2588, o recurso HistorySelect está muito bem armazenado em cache e quase sempre (exceto pela primeira vez) é gratuito.
É provável que façamos uma série de outras melhorias com o lançamento.
Como expliquei anteriormente, no MT5 não há custo extra na criação automática de instantâneos de mercado para cada EA antes de cada evento, como foi feito no MT4. Isto reduz os atrasos e permite que os robôs funcionem mais rapidamente. Cada desenvolvedor pergunta exatamente do que ele precisa.
Portanto, você deve entender claramente que a abordagem de "chamar a HistorySelect sobre toda a história, e depois fazer imediatamente outra seleção de HistorySelectByPosition" irá matar os esconderijos da história previamente criados. Este é um tiro no pé.
Após o lançamento, iniciaremos um grande trabalho para adicionar novas funções MQL5 mais eficientes e abrir estruturas de dados de pedidos/comércio nativas, para que possamos simplificar e acelerar algotrading.
No último 2588 beta, a função HistorySelect está muito bem armazenada em cache e quase sempre (exceto na primeira vez) é gratuita.
Resultado.
Em cada tique há um problema.
ZY instalado Win10, LatencyMon mostra que tudo está bem.
Após o lançamento, iniciaremos muito trabalho para adicionar novas funções MQL5 mais eficientes e abrir estruturas de dados de ordem/ comércio nativas para que o comércio algorítmico possa ser simplificado e acelerado.
MqlDeal, MqlOrder e MqlPosition seria ótimo. Pode até se tornar mais simples.
No momento, vejo que em 99% dos casos devemos usar apenas o HistorySelect(0, INT_MAX). Tente não utilizar as outras opções.
Se eu tenho centenas de milhares de pedidos em minha história, será também mais rápido do que fazer a história de última hora?
Então eu tenho que passar por toda essa história? Isso não faz sentido.
Se eu tenho centenas de milhares de pedidos em minha história, é também mais rápido do que fazer a história de última hora?
Deixou apenas a variante 0-INT_MAX em robôs de combate. Parou de notar os atrasos.