Discusión sobre el artículo "Órdenes, Posiciones y Transacciones en MetaTrader 5" - página 5

 

Aquí hay información de fxsaber sobre estetema:https://www.mql5.com/ru/forum/366029/page3#comment_22547881 https://www.mql5.com/ru/forum/366029/page3#comment_22547881


@RashidUmarov

por favor pide a los desarrolladores que respondan.

Библиотеки: TradesID
Библиотеки: TradesID
  • 2021.05.21
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: TradesID
 

Después de la publicación de los frenos de trabajo con la historia, una gran cantidad de trabajo fue realizado por los desarrolladores para crear cachés. Los frenos han desaparecido.

Tal vez exista un mecanismo de almacenamiento en caché más económico. Pero es ciertamente imposible permitir los frenos.


ZY No hay comentarios sobre cómo trabajar con el historial de la manera más rápida. Por el momento la manera 100% rápida es llamar solo a HistorySelect en todas partes.

HistorySelect(0, INT_MAX)
 
fxsaber:

Después de la publicación de los frenos de trabajo con la historia, un montón de trabajo fue realizado por los desarrolladores para crear cachés. Los frenos han desaparecido.

Tal vez exista un mecanismo de almacenamiento en caché más económico. Pero es ciertamente imposible permitir los frenos.


ZY No hay comentarios sobre la forma más rápida de trabajar con la historia. De momento la forma 100% rápida es llamar sólo a HistorySelect en todas partes.

¿Por qué no
HistorySelect(t, INT_MAX)

donde t es una fecha arbitraria que no es hace mucho tiempo y no cambia de llamada a llamada (una constante unificada para todo el programa)?

 
mktr8591:
¿Por qué no

donde t es una fecha arbitraria no muy antigua y que no cambia de una llamada a otra (una constante uniforme para todo el programa)?

No estoy seguro de que esto reduzca la memoria caché.

 
fxsaber:

No estoy seguro de si eso haría la caché más pequeña.

El consumo se reduce. Al principio solía recetarlo.

bool HistorySelect2( const datetime From, const datetime To )
{
  static const datetime NewFrom = ::TimeCurrent() - 24 * 3600 & 30; // -Mes.
  
  return(::HistorySelect(From ? From : NewFrom, To));
}

#define HistorySelect HistorySelect2

Pero tuve que dejarlo por problemas graves.

 
#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  PRINT(TerminalInfoInteger(TERMINAL_MEMORY_USED));
  
  if (HistorySelect(0, INT_MAX))
  {
    PRINT(HistoryDealsTotal());
    PRINT(HistoryOrdersTotal());
    
    PRINT(MQLInfoInteger(MQL_MEMORY_USED));
    PRINT(TerminalInfoInteger(TERMINAL_MEMORY_USED));
  }
}

Ejecutar resultado en Terminal con un gráfico M1, 5000 barras, un símbolo, sin recursos y sin gráficos.

TerminalInfoInteger(TERMINAL_MEMORY_USED) = 426
HistoryDealsTotal() = 134502
HistoryOrdersTotal() = 218740
MQLInfoInteger(MQL_MEMORY_USED) = 1
TerminalInfoInteger(TERMINAL_MEMORY_USED) = 789

Es mucho. 10 EAs síncronos (OrderSend) se comen 4 gigas. Dos opciones:

  1. Abrir una cuenta nueva, transferirle fondos y seguir operando en ella. Por desgracia, no siempre es posible.
  2. Combinar todos los bots en uno solo mediante asincronía(OrderSendAsync). Esta es una variante muy difícil de detectar errores en caso de trading superactivo.
En el segundo punto, todavía es necesario escribir un gestor (GUI y así sucesivamente) de bots incrustados en un único Asesor Experto.
 
fxsaber:



  1. Combinar todos los bots en uno mediante asincronía(OrderSendAsync). Variante muy pesada de captura de errores en el comercio superactivo.

No hay otra manera. (a menos que, por supuesto, cortar la historia de edad y rehacer todo el algoritmo de trabajo con la historia, pero esto es sólo si MQ no devuelven la ordenación de edad).

 

¡Hola amigos!

Sería de gran ayuda que @MetaQuotes actualizara este artículo con las Clases de Operaciones(CAccountInfo, CSymbolInfo, COrderInfo, CHistoryOrderInfo, CPositionInfo, CDealInfo, CTrade, CTerminalInfo). Desarrollar EA bajo paradigma Orientado a Objetos podría modificar (y simplificar) estas operaciones de sincronizar caché y obtener datos sobre símbolos, órdenes, posiciones, operaciones, trades, etc.

¿Estoy en lo cierto?

Documentation on MQL5: Standard Library / Trade Classes / CAccountInfo
Documentation on MQL5: Standard Library / Trade Classes / CAccountInfo
  • www.mql5.com
CAccountInfo - Trade Classes - Standard Library - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 

si por favor como calcular comision de orden con ganancia para que sea asi

" Beneficio += beneficio + swap + comisión "

 

Por favor, ¡ayuda con la respuesta a la pregunta!

Los indicadores de posición flotante "Valor de mercado" y "Beneficio" en el terminal MT5 son calculados por el propio terminal sobre la base de las cotizaciones traducidas y la especificación de símbolos, o son traducidos por el servidor MT5 y almacenados en caché en el disco?

Si se almacenan en caché, ¿es probable que se produzca una desincronización entre las cotizaciones recibidas y los indicadores actuales "Valor de mercado" y "Beneficio"?