//--- путь к файлу string path=InpDirectoryName+"//"+InpFileName; //--- откроем файл ResetLastError(); int file_handle=FileOpen(path,FILE_READ|FILE_BIN); if(file_handle!=INVALID_HANDLE) { //--- прочитаем все данные из файла в массив FileReadArray(file_handle,arr); //--- получим размер массива int size=ArraySize(arr); //--- распечатаем данные из массива Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]); Print("Total data = ",size); //--- закрываем файл FileClose(file_handle); } else Print("File open failed, error ",GetLastError());
2017.01.0917:20:40.609 TorFid_v02 (EURUSD,H1) = 0.0 = 0.0 = 0.0 2017.01.0917:20:40.609 TorFid_v02 (EURUSD,H1) Total data = 1020100
我明白缺少什么,即反向转换为二维数组,但我不明白如何
当然,除非是我正确地保存了它。
for(int z=1; z<=ARRAY_SIZE_Y; z++) // Перебор по барам, колонка Y { for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X { arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5); // M(I) SMA } } WriteData(1000);
//+------------------------------------------------------------------+ //| Запись n элементов массива в файл | //+------------------------------------------------------------------+ void WriteData(constint n) { //--- откроем файл ResetLastError(); int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arr,0,n); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); }
曾经在论坛上提到,MT5将增加导入 自定义历史数据的功能,这是否已经实现?
string path=InpDirectoryName+"//"+InpFileName;
//--- откроем файл
ResetLastError();
int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
//--- прочитаем все данные из файла в массив
FileReadArray(file_handle,arr);
//--- получим размер массива
int size=ArraySize(arr);
//--- распечатаем данные из массива
Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]);
Print("Total data = ",size);
//--- закрываем файл
FileClose(file_handle);
}
else
Print("File open failed, error ",GetLastError());
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1) Total data = 1020100
我明白缺少什么,即反向转换为二维数组,但我不明白如何
当然,除非是我正确地保存了它。
{
for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X
{
arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5); // M(I) SMA
}
}
WriteData(1000);
//| Запись n элементов массива в файл |
//+------------------------------------------------------------------+
void WriteData(const int n)
{
//--- откроем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arr,0,n);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
}
我希望这些弦乐也能出现。
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
从一个简单的开始。把它全部写进脚本。一个是写文件,一个是读并打印你读到的内容。为了写作,做一个简单的2x2数组
void OnStart()
{
int z = 0;
for(int i = 0; i < 2; i++)
{
arr[i][z] = i+z+1;
z++;
}
WriteData();
}
并删除你想写的元素的数量。这样,整个文件将 从头到尾被写入。检查该文件是否出现在给定的路径中。
FileWriteArray(handle,arr); // и здесь
以下是你得到的东西。
编写脚本代码。
//| WriteArray.mq5 |
//| Viktorov |
//| v4forex@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Viktorov"
#property link "v4forex@yandex.ru"
#property version "1.00"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
string InpFileName = "data.bin";
string InpDirectoryName = "SomeFolder";
string path=InpDirectoryName+"//"+InpFileName;
int arr[3][3];
int handle;
void OnStart()
{
int i = 0, z = 0;
for(i = 0; i < 3; i++)
{
for(z = 0; z < 3; z++)
{
arr[i][z] = i*z+1;
}
}
WriteData();
}
//+------------------------------------------------------------------+
void WriteData()
{
//--- откроем файл
ResetLastError();
handle=FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arr);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
}
读取脚本代码。
//| ReadArray.mq5 |
//| Viktorov |
//| v4forex@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Viktorov"
#property link "v4forex@yandex.ru"
#property version "1.00"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
string InpFileName = "data.bin";
string InpDirectoryName = "SomeFolder";
string path=InpDirectoryName+"//"+InpFileName;
int handle;
void OnStart()
{
int arr[3][3];
int i = 0, z = 0;
handle = FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
FileReadArray(handle, arr);
for(i = 0; i < 3; i++)
{
for(z = 0; z < 3; z++)
{
Print("arr[", i, "][", z, "]", arr[i][z]);
}
}
}
//+------------------------------------------------------------------+
而这就是所印制的内容。
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[0][1]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[0][2]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[1][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[1][1]2
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[1][2]3
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[2][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[2][1]3
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1) arr[2][2]5
所以你不需要任何转换的噱头。你只需要最初设置相同的数组。
不要介意它是mql5,同样的方式在mql4中也可以工作。
然后阅读并打印出你得到的东西。如果你看到1和3,说明问题出在填充阵列上。
说实话,我都不知道发生了什么,但都成功了,我只需要在每一个新的酒吧里 添加一行,希望不会有任何问题)))。
谢谢你!
大家好!!!。请告诉我,我想下载一个干净的MT4,但在任何地方都找不到,从网站外的泵只找到MT5。请给我最新的版本。非常感谢!!!。
大家好!!!。请告诉我,我想下载一个干净的MT4,但在任何地方都找不到,从网站外的泵只找到MT5。请给我最新的版本。非常感谢!!!。
你们唯一的区别是快捷方式中的标志。
在另一家经纪公司开立一个账户。或另一种类型的账户。市场是否可用,完全取决于账户
在另一家经纪公司开立一个账户。或另一种类型的账户。如果市场不起作用,那就要看账户的情况了。
尝试了三个DC和不同的账户,市场仍然不工作(