- 显示:
- 1404
- 等级:
- 已发布:
- 2013.10.24 15:05
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
当写文件时, 数据仅在某一时刻才会真正写到文件里。若要立即保存数据到文件, 使用 FileFlush() 函数。如果函数未调用, 部分数据并未储存进磁盘, 但当调用 FileClose() 函数文件关闭时,数据才会被强迫写进文件。
这段脚本获取当前买、卖价格并调用 FileWrite() 函数输出文件。每 128 组数据 调用 FileFlush() 函数,强迫预写数据写至磁盘。
代码:
//--- 当脚本启动时显示输入参数窗口 #property script_show_inputs //--- 输出文件名 input string InpFileName="example.csv"; // 文件名 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- 重置错误值 ResetLastError(); //--- 打开文件 int file_handle=FileOpen(InpFileName,FILE_READ|FILE_WRITE|FILE_CSV); if(file_handle!=INVALID_HANDLE) { //--- 写数据至文件 for(int i=0;i<1000;i++) { //--- 调用写函数 FileWrite(file_handle,TimeCurrent(),SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoDouble(Symbol(),SYMBOL_ASK)); //--- 保存数据至磁盘每128组数据 if((i & 127)==127) { //--- 现在, 数据保存至文件,并不会因紧急错误丢失 FileFlush(file_handle); PrintFormat("i = %d, OK",i); } //--- 0.01 秒暂停 Sleep(10); } //--- 关闭文件 FileClose(file_handle); } else PrintFormat("错误, 代码 = %d",GetLastError()); }
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/1615