
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
Ayer me fascinó de repente la base de datosSQLite. Existe una interfaz de Python preparada para ello: https://docs.python.org/3.6/library/sqlite3.html.
Como resultado, hasta altas horas de la noche leí la documentación tanto de la base de datos en sí como de la interfaz de Python. Para resolver parte de la confusión, en el proceso hice un par de programas completamente inútiles para SQLite. En general, fascinado. Desperdiciado antes que descuidado. Lo que he aprendido por primera vez es que la BD SQLite se puede organizar en memoria - con un comando: conn = sqlite3.connect(":memory:") - esto es en Python. Eso es todo lo que se necesita. Luego, en algunas consultas, crear tablas y trabajar.
Solía utilizar MS SQL Server o BD Access para el mismo propósito, y organizaba la base de datos en memoria a través de las tablas DataTable de las librerías NET. Y aquí, un DLL de 1,5 MB y un comando,))), y no tienes que hacer nada.
Ahora, ¿para qué sirve? No es necesario, es necesario. Mientras su sistema está contando algo allí, llegan nuevos datos de la bolsa: el mercado, las operaciones, las cotizaciones, y los mete en la base de datos en la memoria. Y cuando el sistema necesita nuevos datos, los tiene todos aquí, a mano, en la memoria. Lo coges y lo usas. No hay que esperar a que haya garrapatas y demás. Además, cuando ocurre algo, siempre puedes dejar de pensar en los cálculos y ocuparte de ello. De nuevo, toda la información ya está ahí, en tu memoria. Por supuesto, necesitas eventos e hilos de usuario, pero no es un problema en ningún sitio.
Pues bien, la información de la base de datos de la memoria se guarda en la base de datos principal en segundo plano.
Ah, y SQLite, aunque es pequeño, admite el acceso de lectura/escritura multiusuario. Y en general, casi todo es como los adultos: hay algunas limitaciones, pero en la mayoría de los casos son insignificantes o no interfieren en absoluto.
Empezó a hacer la base de datos SQLite, no está mal hacer algo útil. Empecemos por importar un archivo CSV a la base de datos.
He aquí un fragmento del archivo en sí, unas 55 mil líneas en total.
Hemos descrito anteriormente cómo importar un archivo CSV en Python, no nos detendremos aquí. Como resultado, tenemos una cadena de título CSV y una cadena de datos.
Ahora el programa Python en sí:
Miramos la tabla SBER en SQLiteStudio:
Sí, toda la diversión es de 3-4s desde el inicio del programa, incluyendo la apertura y la lectura del archivo CSV. Por cierto, el tamaño del archivo de la base de datos es menor que el de un archivo CSV similar. La base de datos completa es de 4,3 MB, el tamaño del CSV es de 5,2 MB.
Bueno, el resto se hace de la misma manera)).
Continuemos con nuestro impopular tema con los nativos.
Hay hilos regulares en el foro sobre la lectura de datos de archivos CSV. Sólo en la última semana ya ha habido dos, que necesitábamos leer el penúltimo par de líneas.
La última vez escribimos datos de un archivo CSV en la base de datos, hoy vamos a resolver el problema de la lectura de filas de la base de datos.
En la base de datos hay unas 55 mil filas en nuestra tabla. Intentemos leer no la última, sino alguna 27568. Para ello vamos a escribir una consulta SQL y enviarla a la base de datos:
Eso es todo. Tenemos el resultado:
Tiempo de ejecución ~0,003004 seg.
Hagamos la tarea más difícil. Buscar líneas, donde Close=22730.0000000
Todo es igual, pero la consulta parece diferente.
El resultado:
Se han devuelto 20 líneas. Tiempo de ejecución ~0,0625c.
Por último, busquemos el precio más alto en la columna (campo) CERRAR
Respuesta B:
Bueno, y un tiempo de ejecución de -0.035s
Como ves, todo es muy sencillo y rápido. Si yo fuera un consumidor de archivos CSV, pensaría, por qué no escribir un DL con 5-6 funciones bajo MT, y usar DB en lugar de archivos CSV.
PD El archivo CSV en el que se manipuló la base de datos está en el archivo que se adjuntó hace unos post.Sí, la vida no es fácil para los desarrolladores de MQL4-5. He buscado en Google si hay soluciones para conectar MT a SQLite. El artículo de SQL5.com SQL AND MQL5: WORKING WITH SQLITE DATABASE directamente desde MQ, y algunos materiales de terceros. La base de datos SQLite es demasiado complicada, y los programas no son tan sencillos, a diferencia de otros similares en Python.
De hecho, para trabajar con SQLite por primera vez es suficiente con importar sólo 7-8 funciones de alto nivel de SQLite a MQL. El resto, en su mayor parte, si es necesario, lo será en un futuro lejano. Este trabajo puede ser realizado por un programador de C++ en el peor de los casos en un par de días. Pero también puedes probar soluciones ya hechas.
PD: Mira el artículoSQL Y MQL5: TRABAJANDO CON LA BASE DE DATOS SQLITE. En realidad, tal vez funcione. Sólo utiliza la DLL x86 allí para preparar la DLL x64 para MT. El artículo es de 2014, después de todo. Pero si no me equivoco, ya existe una DLL de SQLite x64. Puedes intentar compilar con él.
Yuriy Asaulenko:
Sí, no es una vida fácil para los desarrolladores de MQL4-5...... Creo que es demasiado complicado, y los programas, a diferencia de los similares en Python, no son simples.
Imho, en Python los problemas no son menores: necesitas un historial, necesitas un gráfico de barras, necesitas indicadores técnicos... Yo también pensaría en un probador y en operar también....
Bueno, como dice el refrán: ¡todos los rotuladores son diferentes para cada gusto!
En mi opinión, tienes tantos problemas con Python: necesitas un historial, necesitas un gráfico de barras, necesitas indicadores técnicos... Yo también pensaría en un probador y en el trading....
Bueno, como dice el refrán: ¡todos los rotuladores son diferentes para cada gusto!
La historia no es un problema y lo mismo ocurre con el bombeo. Los indicadores técnicos no son un problema, además sólo tengo mis propios indicadores. Si los necesitas, hay algoritmos sencillos allí.
Tengo una herramienta de dibujo de barras en Python. ¿Realmente lo necesito para mi autosistema? - No estoy escribiendo un terminal).
Y no es el primer sistema de este tipo, los hubo antes en VB Excel, y en C++, y en C#. En realidad, se elige Python debido a la amplitud de las bibliotecas y a que no se desea multiplicar el zoo a partir de la mezcla de diferentes lenguajes e interfaces para obtener un acceso a estas bibliotecas. Además, Python permite hacer modelado - para eso está diseñado, y es muy importante en el desarrollo de sistemas. Digamos que es un competidor directo de MathLab).
Pregunta.
¿Es posible intercambiar mql-kim y python kanvas a través de un enlace?
Es fácil de hacer en C++, pero no sé en python.
Pregunta.
¿Es posible intercambiar mql-kim y python kanvas a través de un enlace?
Es fácil de hacer en C++, pero no sé en python.
No lo sé.
Buenas noticias))) -BetaMetaTrader 5 build 1910: Arrastrar y soltar libremente los gráficos y la biblioteca .Net en MQL5 . Ahora, cuando la beta está funcionando, no necesitas escribir nada para conectarte a SQLite (así como a muchas otras librerías). No necesitarás será DLL's.
Las bibliotecas de red SQLite ya están disponibles -http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
Ahora (o más bien más adelante, cuando aparezca la versión operativa de MT) podemos olvidarnos de la comunicación de MT con el sistema de comercio a través del intercambio de archivos y comunicarnos a través de la base de datos. Anteriormente en este hilo se demostró que es muy rápido y más que suficiente para la mayoría de los sistemas.
Buenas noticias))) -BetaMetaTrader 5 build 1910: Arrastrar y soltar libremente los gráficos y las librerías .Net en MQL5 . Ahora, cuando la beta esté funcionando, no es necesario escribir nada para conectarse a SQLite (al igual que muchas otras bibliotecas). No necesitarás será DLL's.
Las bibliotecas de red SQLite ya están disponibles -http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
Ahora (o más bien más adelante, cuando aparezca la versión operativa de MT) podemos olvidarnos de la comunicación de MT con el sistema de comercio a través del intercambio de archivos y comunicarnos a través de la base de datos. Anteriormente en este hilo se demostró que esto es muy rápido y más que suficiente para la mayoría de los sistemas.
Has entendido mal la noticia.
La compatibilidad con las bibliotecas .NET no significa que los controles de seguridad de las DLL estén desactivados. Los controles DLL siempre han funcionado y siempre funcionarán.
Sólo le permitimos cargar .NET sin ningún tipo de retoque. O, mejor dicho, nos tomamos todo el trabajo desordenado y no trivial de comunicarnos con la máquina virtual .NET y ocultamos todos los inconvenientes.
Sin embargo, hace tiempo que planeamos añadir soporte para SQlite en MQL5. Lo más probable es que lo hagamos.