此 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)。这里有很多事情让我担心。
脚本中的第一个命令:
int handle = FileOpen( StringConcatenate( Symbol(), ".csv" ), FILE_CSV|FILE_READ|FILE_WRITE, ',' );
应该打开文件进行
写入
,如果它不存在,它将创建它。因此,如果该文件不位于任何位置,则不会创建该文件。正如用户3666197所述。确保您以管理员身份运行 MT4。在检索带有“
i
”前缀的任何数据时,您可能需要包含一个循环。iClose
、iOpen
、iHigh
、iLow
- 因为您请求的所有数据可能不可用。 MT4 需要从服务器拉取,在这种情况下,返回的柱数将为0
。
iClose()
返回值
具有时间范围和偏移的指定交易品种柱的收盘值(value)。如果本地历史记录为空(未加载),函数返回0
。
要检查错误,必须调用 GetLastError()
函数。因此,如果您找到了该文件并且正在创建该文件,但没有保存任何条形图或仅保存几个条形图,这就是原因。
只是想我会把它扔在那里,以防它成为你以后的问题。
祝你好运
关于metatrader4 - 如何通过脚本将 MT4 图表数据导出到 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323390/