Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1220
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Un segundo es a menudo la pérdida de la última operación/orden en el real. Por ejemplo, en muchas brechas una orden pasa a ejecución por el tiempo TTL, que puede ser de cinco segundos. Si no se ejecuta en cinco segundos, la orden es una redirección. O se ejecuta, pero en tres segundos.
En el caso, si no hubo ticks desde la aceptación hasta la ejecución, tal llamada HistorySelect no recibirá información sobre ella.
Quizás, el TimeCurrent debería ser igual a MathMax(LastOrder_time, MarketWatch_Time). Entonces el HistorySelect será correcto. Pero TimeCurrent puede ser demasiado caro.
Por cierto, este esquema de trabajo HistorySelect se saltará parte de la historia de las operaciones.
Aunque, a primera vista, todo está claro.
Escribir un DealsTotal() barato no es fácil en MT5. No es elemental (y gratuito) OrdersHistoryTotal() en MT4.
pensamientos en voz alta, sin pretensiones de relevancia o competencia:
Si no hubo ticks desde la aceptación hasta la ejecución, dicha llamada a HistorySelect no obtendrá información al respecto.
No va a resolver este problema, el modelo de interacción servidor - terminal - MQL fue diseñado originalmente
No he llegado a comprobarlo en MT5, pero en MT4 sé a ciencia cierta que hay situaciones, en las que hay cambios de precio en nuestro símbolo en la ventana de observación del mercado, pero puede que no haya ticks o que haya menos de los que hay en ЕА
ok, no importa, por lo que funciona, sólo tiene que elegir en la decisión TS, lo que sucede a la orden en la ausencia de información desde el servidor desde el momento de enviar la orden - es decir, la orden se establece o se rechaza a priori, y recibió la respuesta para confirmar esta decisión preliminar o cancelar - es decir, trabajar con la información no confirmada o seguir esperando la respuesta del servidor - esta oferta MQ y probablemente no se adapte
No es fácil utilizar DealsTotal() barato en MT5. No es el elemental (y gratuito) OrdersHistoryTotal() en MT4.
no escribir ;)
o mejor dicho, lo más probable es que lo hagas, y gastes recursos de EA para mantener el algoritmo, creo que debes averiguar cómo funciona SQLite, las pruebas de rendimiento MQ declaradas, el trabajo con tablas grandes y las muestras es sólo el propósito de la base de datos - el código de EA será minimalista, todo el trabajo que hará la base de datos, todo el trabajo se reduce a llenar los datos al realizar un pedido y actualizar cuando el servidor responde (sincronización, por supuesto, cuando se ejecuta EA, la base de datos en la memoria)
pero no lo harás ;)
o más bien, lo más probable es que va a escribir y va a gastar los recursos de EA para mantener el algoritmo, creo que usted necesita para averiguar cómo funciona SQLite, pruebas de rendimiento MQ declaró, el trabajo con grandes tablas y muestras es exactamente el propósito de la base de datos - código de EA será minimalista, todo el trabajo de la base de datos le hará, todo el trabajo se reducirá a llenar los datos al realizar un pedido y actualizar al responder desde el servidor (sincronización, por supuesto en el arranque de EA, la base de datos en la memoria)
Fue escrito y publicado originalmente. Es poco probable que sea más rápido.
Fue escrito y publicado originalmente. Es poco probable que sea más rápido.
Debo haber visto la tarea incorrectamente.
Pensé que necesitaba actualizar la lista de órdenes desde dos puntosOnTradeTransaction() y OnTick() , por eso sugerí hacerlo en la base de datos
Aquí está mi código. En la inicialización crea un registro en la tabla. En el cuerpo de OnTick debería devolver inmediatamente un error, porque intento añadir un registro con la misma PRIMARY KEY, y después de eso la base se cierra inmediatamente. Pero al mismo tiempo debería ver al menos ese primer registro cuando lo abro, pero cuando lo ejecuto en el probador no está. Y ni siquiera se crea la tabla. Si lo abro en el terminal, todo es normal. El primer disco está ahí.
Con la ubicación de la base de datos que no se estropeó con suerte?
No estás confundido sobre la ubicación de la base, ¿verdad?
No, no lo estoy. Todo está en Archivos. Creo que en el modo tester, la base de datos se crea en memoria y se destruye después de la prueba.
pensamientos en voz alta, sin pretensiones de relevancia o competencia:
...
o más bien, lo más probable es que va a escribir y gastar recursos de EA para mantener el algoritmo, creo que usted necesita para averiguar cómo funciona SQLite, las pruebas de rendimiento MQ declaró, el trabajo con grandes tablas y las muestras es precisamente el propósito de la base de datos - código de EA será minimalista, todo el trabajo de la base de datos le hará, todo el trabajo se reduce a llenar los datos al realizar un pedido y actualizar al responder desde el servidor (sincronización, por supuesto, cuando se ejecuta EA, la base de datos en la memoria)
¿Y qué base de datos hará todo su trabajo? ¿Puede decírmelo?
La comunicación es a través de la base de datos o a través de PUB/SUB ZMQ. Por supuesto la base de datos no es SQLite, la más adecuada para estos fines es Redis, por supuesto mi opinión personal.
Buena suerte