MT5 y la velocidad en acción - página 32

 
Renat Fatkhullin:

Por favor, responda al estado de esta columna.

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Nueva versión de MetaTrader 5 build 2560: Mejoras en el sistema de aprendizaje integrado

fxsaber, 2020.08.16 23:02

Historial de operaciones -> Posiciones -> La columna de comentarios está vacía para todas las operaciones. Esto debe ser un error.

No sólo está vacía, sino que además ocupa una gran parte del espacio útil.

 
fxsaber:

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

¿No se produce el estado de inicio después de un OrderSendAsync exitoso?

El estado puede ocurrir, pero el billete no.

La orden se limitó a pasar un control de corrección formal, ni siquiera una coincidencia de mercado. La orden asíncrona simplemente se pasó a la tubería y su destino se decidirá en otro lugar.

 
fxsaber:

Por favor, responda al estado de esta columna.

No sólo está vacía, sino que ocupa una gran parte del espacio útil.

Sí, así es.

Se olvidaron de trasladar correctamente el comentario al recoger las posiciones virtuales de las operaciones en el historial. Vamos a arreglarlo.

 
Renat Fatkhullin:

El estado puede ocurrir, pero el billete no.

Este estado no se puede ver porque OrdersTotal() no cambia.

 
fxsaber:

Este estado no se puede ver porque OrdersTotal() no cambia.

No llames a una puerta perdida.

Lo he explicado con detalle: "se ha comprobado la corrección formal del pedido y se ha enviado a algún sitio". Esta orden no tiene número, sólo ha pasado al siguiente paso de la cinta transportadora. Sólo se le dará un número cuando pase por la cola de ejecución.

No se puede obtener más información sobre el paquete asíncrono. Su estado de mercado/operación no cambiará hasta que reciba un detalle de su solicitud asíncrona después de algún tiempo, que puede captar en OnTradeTransaction.

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

No llames a una puerta ausente.

Lo he explicado con detalle: "se ha comprobado la corrección formal del pedido y se ha enviado a algún sitio". Este pedido no tiene número, acaba de pasar al siguiente paso de la cinta transportadora. Sólo se le dará un número cuando pase por la cola de ejecución.

No se puede obtener más información sobre el paquete asíncrono. El estado de su mercado/operación no cambiará hasta que obtenga un detalle de su solicitud asíncrona después de algún tiempo, que puede captar en OnTradeTransaction.

Gracias por la aclaración, investigaré.

 

La historia puede haber crecido.

Pero en b2617 este EA ha vuelto a las alertas.

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

MT5 y Speed en acción

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));
}
 

Comprueba la beta 2619, por favor.

Hemos realizado una serie de optimizaciones para acelerar el muestreo de la historia. Hubo un caso de invalidación forzada de la caché.

 
Renat Fatkhullin:

Comprueba la beta 2619, por favor.

Hemos realizado una serie de optimizaciones para acelerar el muestreo de la historia. Hubo un caso de invalidación forzada de la caché.

La aceleración ocurrió, pero desafortunadamente por alguna razón la actualización de la caché no es en un milisegundo, por lo que alerta en cada paso donde se actualiza el historial.

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, pruébalo en una historia grande.


Supongo que este milisegundo se debe a la asignación de memoria para la actualización de la caché. No parece que nada más lo frene.

 
fxsaber:

Gracias por la aclaración, lo investigaré.

Suban sus banderas, es un tema viejo.