MT5 e velocidade em ação - página 32

 
Renat Fatkhullin:

Por favor, responda ao status desta coluna.

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Nova versão do MetaTrader 5 build 2560: Melhorias no sistema de aprendizagem incorporado

fxsaber, 2020.08.16 23:02

Histórico de negociação -> Posições -> A coluna de comentários está vazia para todas as negociações. Isto deve ser um erro.

Não só está vazio, mas também come um enorme pedaço de espaço utilizável.

 
fxsaber:

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state

O estado inicial não ocorre após um OrderSendAsync bem sucedido?

O status pode ocorrer, mas o bilhete não.

A ordem simplesmente passou por uma verificação formal de exatidão, nem mesmo uma comparação com o mercado. A ordem assíncrona foi simplesmente passada no gasoduto e seu destino será decidido em outro lugar.

 
fxsaber:

Por favor, responda ao status desta coluna.

Não só está vazio, mas também come um enorme pedaço de espaço utilizável.

Sim, é isso mesmo.

Eles se esqueceram de mover corretamente o comentário ao reunir posições virtuais de negócios na história. Vamos consertar isso.

 
Renat Fatkhullin:

O estado pode ocorrer, mas o bilhete não pode.

Este estado não pode ser visto porque o OrderTotal() não muda.

 
fxsaber:

Este estado não pode ser visto porque o OrderTotal() não muda.

Não bata em uma porta desaparecida.

Expliquei em detalhes - "o pedido foi verificado quanto à exatidão formal e enviado para algum lugar". Esta ordem não tem número, ela só foi passada para o próximo passo da esteira transportadora. Só lhe será dado um número quando passar a fila de execução.

Você não pode obter mais informações sobre o pacote assíncrono. Seu status de mercado/negociação não mudará até que você receba um detalhe passo a passo de sua solicitação assíncrona após algum tempo, que você poderá apanhar na OnTradeTransaction.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Renat Fatkhullin:

Não bata em uma porta ausente.

Expliquei em detalhes - "o pedido foi verificado quanto à exatidão formal e enviado para algum lugar". Esta ordem não tem número, apenas foi passada para o próximo passo da esteira transportadora. Só lhe será dado um número quando passar a fila de execução.

Você não pode obter mais informações sobre o pacote assíncrono. Seu mercado/estado comercial não mudará até que você receba um detalhe passo a passo de sua solicitação assíncrona após algum tempo, o que você pode apanhar na OnTradeTransaction.

Obrigado pelo esclarecimento, investigará.

 

A história pode ter crescido.

Mas na b2617 esta EA voltou a alertar.

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

MT5 e Velocidade em Ação

fxsaber, 2020.09.08 19:46

// Демонстрация полного (не частичного) пересбора HistorySelect-кеша.
#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

input int inAlertTime = 1; // Нижний порог в миллисекундах

#define _B2(A) _B(A, inAlertTime)

const bool Init = EventSetTimer(1);

void OnTimer()
{
  static MqlTradeRequest Request = {0};
  static MqlTradeResult Result = {0};

  if (PositionSelectByTicket(Result.order)) // Если позиция открыта - закрываем.
  {
    Request.type = ORDER_TYPE_SELL;
    Request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
    Request.position = Result.order;
  }
  else // Иначе - открываем.
  {
    Request.action = TRADE_ACTION_DEAL;
    Request.type = ORDER_TYPE_BUY;
    Request.symbol = _Symbol;
    Request.volume = 0.1;
    Request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    Request.position = 0;
  }

  if (OrderSend(Request, Result))
    _B2(HistorySelect(0, INT_MAX));
}
 

Verifique no beta 2619, por favor.

Fizemos uma série de otimizações para acelerar a amostragem do histórico. Houve um caso de invalidação forçada do cache.

 
Renat Fatkhullin:

Verifique no beta 2619, por favor.

Fizemos uma série de otimizações para acelerar a amostragem do histórico. Houve um caso de invalidação forçada do cache.

A aceleração aconteceu, mas infelizmente por alguma razão a atualização do cache não está em um milissegundo, então alerta a cada passo em que a história foi atualizada.

2020.09.24 05:17:49.541 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:49.543 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:50.526 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:50.527 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:51.569 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:51.571 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:52.530 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:52.532 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.


Por favor, experimente em uma história maior.


Presumo que este milissegundo seja devido à alocação de memória para atualização de cache. Nada mais parece estar diminuindo o ritmo.

 
fxsaber:

Obrigado pelo esclarecimento, vou analisar o assunto.

Levantem suas bandeiras, é um tópico antigo.

Razão: