文章 "针对市场分析的数据库的具体应用"

 

新文章 针对市场分析的数据库的具体应用已发布:

处理数据成为现代软件的主要任务 - 独立应用程序和网络应用程序都是如此。为解决此问题而创建了专业软件。这些软件被称为数据库管理系统 (DBMS),能够针对它们的计算机存储和处理对数据进行构建、系统化和组织。对于交易,大多数分析师并不在他们的工作中使用数据库。但是对于一些任务,必须使用此类解决方案。本文提供了一个在客户端-服务器和文件-服务器架构中都能将数据保存到数据库或从数据库加载数据的指标例子。

作者:Alexander

 

这篇文章非常有用,我会在创建自己的数据库时多次参考。

虽然现在还为时尚早,但总的来说,你已经可以感受到第五版的强大功能。

 
亚历山大,请在这种情况下帮助我...

例如,我需要将一些数组保存到数据库中。我写了一个脚本。

看起来是这样的:

#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Object.mqh>
#include <Arrays\List.mqh>

// 连接 OleDb 组件
#include <Ado\Providers\OleDb.mqh>
#include <Ado\Data.mqh>

double PriceBuffer[];
//+------------------------------------------------------------------+
//| 脚本程序启动功能|
//+------------------------------------------------------------------+
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;
     
// 形成要传递给 SaveDataToDb 的表格
   CAdoTable *table=new CAdoTable();
   table.Columns().AddColumn("Price",ADOTYPE_DOUBLE);
   ArrayResize(PriceBuffer,n1);
// 用缓冲区中的数据填充数据表
   for(int i=1; i<n1; i++)
     {
      CAdoRecord *row=table.CreateRecord();
      row.Values().GetValue(0).SetValue(PriceBuffer[i]);
      table.Records().Add(row);
     }
  }

但在编译时出现了以下错误:"'Values' - 无法调用受保护的成员函数"

该错误与以下一行有关

row.Values().GetValue(0).SetValue(PriceBuffer[i]);

虽然在函数 CBsvEngine::SaveData(void) 中

中,这些行却正常工作:

// 用缓冲区中的数据填充数据表
      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);
        }
 
MT5 中是否有不使用 ADO 而使用 MySQL(通过 libmySQL.dll)和SQLite(通过 sqlite3.dll)的类?
 
这篇文章写得很好!不幸的是,我遇到了与 Denkir 在本文俄文版中评论的相同问题。

无法编译,给出错误:
'Values' - 无法调用受保护的成员函数

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]);
此外,在文件 DbDataAdapter.mqh

中, CDbDataAdapter::Fill(CAdoTable *table) 中多次调用 "Values() "时也会出现同样的错误。我非常希望能让它正常工作。非常感谢!
 
当我在策略测试器中 使用 adoSuite 时,它总是会终止程序。
 
zephyrrr:

当我在策略测试器中使用 adoSuite 时,它总是会终止程序。
不幸的是,586 版本在调用 32 位 DLL函数 时出现错误。下一个版本将修复这个问题。
 
Automated-Trading:
不幸的是,586 版在调用 32 位 DLL 函数时出现了错误。下一个版本将修复这个问题。
遗憾的是,上次更新后这个问题仍未得到解决。有什么解决方案或建议吗?我被告知要等到下一个版本,但下一个版本并没有解决这个问题。
 
Alexander
  • 2010.04.20
  • www.mql5.com
交易者的个人资料