Un artículo muy interesante. Falta para completarlo:
1. ¿De dónde sacamos las cotizaciones, se pueden sacar de los archivos hst?
2. ¿Cómo hacer que esta biblioteca sea compatible con la del MateLab 2009a o 2009b? ¿No tienen también C y C++ allí?
Una petición muy grande.
- Las cotizaciones se toman del terminal: ahora son detalladas y profundas (10 años y más).
Bajo ninguna circunstancia debemos mirar directamente en los archivos binarios de los almacenes de los terminales - sólo causará graves conflictos de acceso a los datos. Incluso si las pruebas mostraron "funcionó, sin problemas", todavía llegará un momento de acceso simultáneo a estos datos de la terminal y el programa externo, y alguien se estrellará como resultado. La gente ha tropezado con ella muchas veces. - Acoplar las bibliotecas en MQL5 es ahora mucho más fácil, debido al soporte transparente para las convenciones stdcall / cdecl en las llamadas DLL.
Si alguien escribe un artículo bueno y detallado sobre la vinculación de MetaTrader 4/5 y Matlab a través de DLL, ganará 200 dólares o más.
La comunidad MQL4.ya tiene artículos sobre el paquete Matcad - MetaTrader 4:
- www.mql5.com
Necesito enlazar dos terminales, para que traduzcan sus cotizaciones en Excel en tiempo real.
En MT4 se puede hacer con DDE. En MT5 parece que a través de DLL es la única salida.
Pero si cada tick entrante se pasa a la DLL... Creo que será algo inimaginablemente lento. Por supuesto, aún no he intentado ponerlo en práctica... pero honestamente, no quiero probarlo. Va a ser una pesadilla.
En resumen, devolvamos el DDE a MT5. Es un anacronismo, pero a veces puede ser necesario.
P.D. Gracias por este artículo, es muy oportuno. He echado de menos un material así.
Renat, ¿qué pasa con la velocidad de llamada de la dll?
Es muy fácil comprobar la velocidad de las llamadas. Por ejemplo, un cálculo aproximado puede hacerse así:
_DLLAPI int __stdcall fnCalcSpeed(int var1,int var2,int var3) { return(0); } #import "MQL5DLLSamples.dll" int fnCalcSpeed(int var1,int var2,int var3); #import int calls=0; int ticks=GetTickCount(); while(GetTickCount()-ticks<1000) { for(int i=0;i<1000;i++) fnCalcSpeed(1,2,3); calls++; } Print(calls * 1000, "вызовов в секунду");
Conseguí 57.000 llamadas por segundo en un Quad Q9400 a 2,66Ghz. El mismo código da alrededor de 20.000.000 de llamadas por segundo en MetaTrader 4, ya que allí no hay control ni canalización.
Definitivamente vamos a tratar de reducir la pérdida en las llamadas DLL en MetaTrader 5.
Si es posible exportar las cotizaciones sólo a través de una dll, entonces resulta que hay que colocar un script en cada instrumento a exportar? ¿Y si son muchos? Por ejemplo, ¿50?
Entiendo que es posible pasar las cotizaciones de muchos instrumentos en un solo script, pero no será un sustituto completo de DDE, donde los ticks no se pierden.
La cuestión es que no se nos ha encomendado la tarea de "proporcionar una interfaz de cotización".
Nuestro objetivo es crear un entorno completo y autosuficiente para desarrollar sistemas analíticos. Un entorno de este tipo para que no sea necesario utilizar programas de terceros.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado ¿Cómo escribir una DLL para MQL5 en 10 minutos e intercambiar datos?:
Autor: Renat Fatkhullin