metatrader4 - 如何通过脚本将 MT4 图表数据导出到 CSV 文件?

标签 metatrader4

mql4 脚本在附加到图表时不会导出到 CSV 文件。 为什么?

static datetime check;
//+------------------------------------------------------------------+
//|   scripts/Export.mq4                  pre  Build 562-            |
//|   MQL4/Scripts/Export.mq4             post Build 562+            |
//+------------------------------------------------------------------+
void start() {                // New-MQL4 post Build 562+: void OnStart(){}
   if ( check != Time[0] ) {
        check  = Time[0];
        WriteCSV(); 
      } 
}

//+------------------------------------------------------------------+
//| WriteCSV                                                         |
//+------------------------------------------------------------------+
void WriteCSV() {
   int handle = FileOpen( StringConcatenate( Symbol(), ".csv" ),
                          FILE_CSV|FILE_READ|FILE_WRITE, ','
                          );

   if ( handle > 0 ) {
        FileSeek( handle, 0, SEEK_END ); 

        FileWrite( handle,
                   TimeToStr( TimeCurrent(), TIME_DATE ),
                   iOpen ( Symbol(), Period(), 1 ),
                   iHigh ( Symbol(), Period(), 1 ),
                   iLow  ( Symbol(), Period(), 1 ),
                   iClose( Symbol(), Period(), 1 )
                   );

        FileClose( handle );
      }
}
//+------------------------------------------------------------------+

最佳答案

这看起来像是一个旧线程,但我只是想把它扔进去以了解它的值(value)。这里有很多事情让我担心。

  1. 脚本中的第一个命令:

    int handle = FileOpen( StringConcatenate( Symbol(), ".csv" ),
                           FILE_CSV|FILE_READ|FILE_WRITE, ','
                           );
    

    应该打开文件进行写入,如果它不存在,它将创建它。因此,如果该文件不位于任何位置,则不会创建该文件。正如用户3666197所述。确保您以管理员身份运行 MT4。

  2. 在检索带有“i”前缀的任何数据时,您可能需要包含一个循环。 iCloseiOpeniHighiLow - 因为您请求的所有数据可能不可用。 MT4 需要从服务器拉取,在这种情况下,返回的柱数将为 0

iClose() 返回值 具有时间范围和偏移的指定交易品种柱的收盘值(value)。如果本地历史记录为空(未加载),函数返回0

要检查错误,必须调用 GetLastError() 函数。因此,如果您找到了该文件并且正在创建该文件,但没有保存任何条形图或仅保存几个条形图,这就是原因。

只是想我会把它扔在那里,以防它成为你以后的问题。

祝你好运

关于metatrader4 - 如何通过脚本将 MT4 图表数据导出到 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323390/

相关文章:

javascript - 构建 Electron MEAN stack APP,从本地 MetaTrader 4 终端获取数据

c++ - Mac OS X 上的 MetaTrader 4 结合 C++ 或 R

mql4 - 如何在 MetaTrader 终端中使用分时级别数据进行回测?

c# - 评估需要一个线程临时运行。使用 Watch 窗口执行评估

metatrader4 - 在没有 MT4 的情况下获取经纪商的价格

algorithmic-trading - MQL4 - 调用 OrderSend() 方法时出现错误 4111

c# - 我可以在 MetaTrader4 上使用 MQL4 以外的语言吗?

javascript - 有没有办法下载 HTML 文件中的整个网页源代码?

c++ - 如何解决 MQL4 序列化问题?