Bibliotecas: MT4Orders - página 22

 
fxsaber:

No debería afectar al tiempo real.

Desgraciadamente, en mi caso sí.

Hay un botón que muestra/oculta el historial de tratos. Por supuesto, no tiene sentido mostrarlas todas, pero a menudo necesitas seleccionar varias docenas de "las tuyas" por símbolo, mago o comentario entre varios miles de otras. Es entonces cuando empiezan los frenos. La idea es almacenar en caché la lista de "propios" y actualizarla sólo con los nuevos tratos históricos.

También he visto un corredor glitchy, que re-jacked órdenes de mercado, y un Asesor Experto de trabajo podría generar un centenar de miles de re-jacked órdenes en la historia en una hora. A continuación, el propio terminal estaba colgando....

 
fxsaber:

Necesito un ejemplo de TS en el que el historial de operaciones (no el historial de precios) afecte significativamente al tiempo de backtest.

Como fantasía: construir una curva de balance sobre las operaciones históricas y calcular el lote de nuevas operaciones en función de la pendiente de la curva.

Si no guarda su caché, tendrá que peinar el historial por completo antes de cada operación. Pero aquí, por supuesto, es más fácil recoger los valores de balance en un array, no necesitas almacenar todas las operaciones.

 
Andrey Khatimlianskii:

Yo, por desgracia, estoy teniendo un efecto.

Hay un botón, pulsando en el que muestra / oculta la historia de las ofertas. Por supuesto, no tiene sentido para mostrar todos ellos, pero a menudo es necesario seleccionar varias decenas de "su propia" por el símbolo, mago, o comentario de varios miles de otros. Es entonces cuando empiezan los frenos. La idea es almacenar en caché la lista de los "nuestros" y actualizarla sólo con los nuevos tratos históricos.

Entiendo el problema. Sí, el almacenamiento en caché en toda regla integrado en el sistema bíblico hace tiempo que debería haberse hecho. Tendré que pensar cómo implementarlo.

También he visto un corredor glitchy que re-jacked órdenes de mercado, y un Asesor Experto de trabajo podría generar un centenar de miles de re-jacked órdenes en la historia en una hora. A continuación, el terminal en sí estaba colgando....

Me gustaría ver este maravilloso broker.

 
Andrey Khatimlianskii:

Como fantasía: construcción de la curva de equilibrio por tratos históricos y cálculo del lote de nuevos tratos en función de la pendiente de la curva.

Si usted no mantiene su propia memoria caché, tendrá que peinar la historia por completo antes de cada acuerdo. Pero aquí, por supuesto, es más fácil para recoger los valores de balance en una matriz, no es necesario almacenar todas las ofertas.

Pensé en tal cosa, pero ese es el punto que el balance VR se sugiere inmediatamente. Paradójicamente, parece que el almacenamiento en caché del historial de operaciones es necesario sólo para el uso de combate (no para Tester).

 
fxsaber:

Entiendo el problema. Sí, sigue siendo necesaria una caché completa integrada en el biblah. Tendremos que pensar cómo implementarlo.

Lo ideal sería almacenar una entrada DEAL_ENTRY_IN para cada operación, ya que el 99% de las veces se ejecuta GetPositionDealIn (y HistorySelectByPosition en ella).


fxsaber:

Me encantaría ver este gran corredor.

PrimeXM-LiveUK.

Este es un puente muleta a Saxo Bank.

 
Andrey Khatimlianskii:

Idealmente, será suficiente para almacenar DEAL_ENTRY_IN billete para cada comercio, porque el 99% del tiempo GetPositionDealIn (y en ella - HistorySelectByPosition) se ejecuta.

Hash comparación con el historial de operaciones se ha hecho hace mucho tiempo. Por lo tanto, es probablemente óptimo para cavar en el lado Genérico.

¡Como un motivador para aprender este método - que va a hacer! En algún momento del verano en un entorno tranquilo....

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2017.12.08
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...
 

Actualización de fxsaber:

// 30.05.2018
// Añadir: Trabajo acelerado con el historial comercial, seleccionada una media dorada de realizaciones entre rendimiento y
// consumo de memoria - importante para VPS. Se utiliza la biblioteca Generic estándar.
// Si no desea utilizar la librería Generic, está disponible el modo antiguo de trabajar con el historial.
// Para ello, es necesario escribir la siguiente línea en la MT4Orders-library ANTES de la MT4Orders-library
//
// #define MT4ORDERS_FASTHISTORY_OFF // Desactiva la implementación rápida del historial de operaciones - no uses la librería Generic.

¡Trabajar con la historia larga ahora sólo vuela!

Moderadores, si tienen oportunidad, por favor suban el código a la base de datos.

Archivos adjuntos:
MT4orders.mqh  77 kb
 
Andrey Khatimlianskii:

Actualización de fxsaber:

¡Trabajar con la historia larga ahora sólo vuela!

Moderadores, si pueden, por favor suban el código a la base de datos.

Gracias, actualizado en todos los idiomas

 

Utilizo esta librería en mis Expert Advisors de MT4.


He encontrado un momento extraño:

Si la prueba se realiza en los servidores de Metaquotes - demo, la biblioteca funciona bien. (por ejemplo, al abrir una orden)

Si se toma para las pruebas broker fhtm demo- entonces la función OrderSend abre una operación, pero devuelve un error.

      int ticket=OrderSend(_Symbol,type,lot,price,0,0,0,comment_,magic,0,clrDarkSlateBlue);

Después de depurar ticket = -1;

El texto del registro es el siguiente:

Al mismo tiempo, el registro también muestra un mensaje de que todo es normal.

¿Por qué podría haber tal problema?

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::AccountInfoString(ACCOUNT_SERVER) = ForexTimeFXTM-Demo01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) (bool)::TerminalInfoInteger(TERMINAL_CONNECTED) = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoInteger(TERMINAL_PING_LAST) = 55335

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoDouble(TERMINAL_RETRANSMISSION) = 0.8875739644970414

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoInteger(TERMINAL_BUILD) = 1835

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) (bool)::TerminalInfoInteger(TERMINAL_X64) = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Res = false

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) MT4ORDERS::OrderSendBug = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.action = TRADE_ACTION_DEAL (1)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.magic = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.order = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.symbol = EURUSD

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.volume = 0.01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.price = 1.17681

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.stoplimit = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.sl = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.tp = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.deviation = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type = ORDER_TYPE_BUY (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type_filling = ORDER_FILLING_FOK (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type_time = ORDER_TIME_GTC (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.expiration = 1970.01.01 00:00:00

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.comment =

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.position = 2210821620

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.position_by = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.retcode = 10009

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.deal = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.order = 2210821775

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.volume = 0.01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.price = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Resultado.bid = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Resultado.ask = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.comment = Solicitud ejecutada 190.826 + 1000.396 ms

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.request_id = 154

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.retcode_external = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) MT4ORDERS: ¡No sincronizar con historial! ¡por favor enviar logs a fxsaber!

2018.06.08 22:55:47.197 EA MT5 (EURUSD,M1) OrderSend with error 4754



[Eliminado]  
Rashid Umarov:

Gracias, actualizado en todos los idiomas

Estaría bien tener fxsaber de vuelta también.