El artículo es muy útil y lo consultaré muchas veces para crear mis propias bases de datos.
Es un poco pronto para ello, pero en general ya se nota la potencia de la quinta versión.
Alexander, por favor ayúdame en esta situación...
Necesito, por ejemplo, guardar algún array en una base de datos. Escribí un script.
Tiene este aspecto:
#property copyright "Copyright 2010, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #include <Object.mqh> #include <Arrays\List.mqh> // conectar componentes OleDb #include <Ado\Providers\OleDb.mqh> #include <Ado\Data.mqh> double PriceBuffer[]; //+------------------------------------------------------------------+ //| Función de inicio del programa de script| //+------------------------------------------------------------------+ void OnStart() { long n1=100; MqlRates rates[]; ArraySetAsSeries(rates,true); double nClose[]; ArrayResize(nClose,n1); ArrayResize(t,n1); CSymbolInfo m_smbinf; m_smbinf.Name(Symbol()); int dg=m_smbinf.Digits(); int copied=CopyRates(Symbol(),0,0,n1,rates); for(int i=0;i<n1;i++) nClose[i]=rates[i].close; // formar la tabla que se pasará a SaveDataToDb CAdoTable *table=new CAdoTable(); table.Columns().AddColumn("Price",ADOTYPE_DOUBLE); ArrayResize(PriceBuffer,n1); // rellenar el dable con datos de los buffers for(int i=1; i<n1; i++) { CAdoRecord *row=table.CreateRecord(); row.Values().GetValue(0).SetValue(PriceBuffer[i]); table.Records().Add(row); } }
Pero al compilar se produce el siguiente error: "'Values' - cannot call protected member function".
El error está relacionado con la línea:
row.Values().GetValue(0).SetValue(PriceBuffer[i]);
Aunque en la función CBsvEngine::SaveData(void)
estas líneas funcionaban normalmente:
// rellenar el dable con datos de los buffers for(int i=1; i<TicksInBuffer; i++) { CAdoRecord *row=table.CreateRecord(); row.Values().GetValue(0).SetValue(TickBuffer[i].time); row.Values().GetValue(1).SetValue(TickBuffer[i].bid); row.Values().GetValue(2).SetValue(VolumeBuffer[i]); table.Records().Add(row); }
Muy buen artículo. Realmente justo la solución que estaba buscando. Desafortunadamente estoy teniendo el mismo problema que Denkir comentó en la versión rusa de este artículo.
No compila dando error:
'Values' - cannot call protected member function.
Asociado con estas líneas en CBsvEngine::SaveData(void)
Me encantaría que esto funcionara. Muchas gracias.
No compila dando error:
'Values' - cannot call protected member function.
Asociado con estas líneas en CBsvEngine::SaveData(void)
row.Values().GetValue(0).SetValue(TickBuffer[i].time); row.Values().GetValue(1).SetValue(TickBuffer[i].bid); row.Values().GetValue(2).SetValue(VolumeBuffer[i]);Y también el mismo error asociado con numerosas llamadas a 'Values()' en CDbDataAdapter::Fill(CAdoTable *table) en el archivo DbDataAdapter.mqh
Me encantaría que esto funcionara. Muchas gracias.
Automated-Trading:
Desafortunadamente la build 586 tiene un error en la llamada a funciones de DLLs de 32 bits. Será corregido en la próxima versión.
Desafortunadamente esto no se ha solucionado después de la última actualización. ¿Alguna solución o recomendación? ¿Cuánto puede tardar? Me dijeron que esperara hasta la siguiente build y llegó sin solucionar el problema.
Desafortunadamente la build 586 tiene un error en la llamada a funciones de DLLs de 32 bits. Será corregido en la próxima versión.
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
Artículo publicado Aplicación Práctica de Bases de Datos para Análisis de Mercados:
Trabajar con datos se ha convertido en la principal tarea para el software moderno, tanto para aplicaciones independientes como para aplicaciones de red. Para resolver este problema se creó un software especializado. Se trata de los Sistemas de Gestión de Bases de Datos (Database Management Systems o DBMS), que pueden estructurar datos para su almacenamiento en el ordenador y su procesamiento. En lo que se refiere a trading, la mayoría de analistas no usan bases de datos en su trabajo. Pero hay tareas donde esta solución resultaría muy práctica. Este artículo facilita un ejemplo de indicadores que puede guardar y cargar datos de bases de datos tanto con arquitecturas de servidor de cliente como de servidor de archivos.
El indicador BuySellVolume enlazado a la base de datos SQLite 3.6 en EURUSD M5
Autor: Alexander