任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1117

 

曾经在论坛上提到,MT5将增加导入 自定义历史数据的功能,这是否已经实现?

 
Top2n:

//--- путь к файлу
   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)  = 0.0  = 0.0  = 0.0
2017.01.09 17: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(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数组

int arr[2][2];

void OnStart()
{
int z = 0;
for(int i = 0; i < 2; i++)
  {
   arr[i][z] = i+z+1;
    z++;
  }
WriteData();
}

并删除你想写的元素的数量。这样,整个文件将 从头到尾被写入。检查该文件是否出现在给定的路径中。

void WriteData() // здесь

FileWriteArray(handle,arr); // и здесь
然后阅读并打印你看到的内容。如果你看到1和3,说明阵列有问题。
 
Top2n:

以下是你得到的东西。

编写脚本代码。

//+------------------------------------------------------------------+
//|                                                   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][0]1
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中也可以工作。

 
Alexey Viktorov:
然后阅读并打印出你得到的东西。如果你看到1和3,说明问题出在填充阵列上。

说实话,我都不知道发生了什么,但都成功了,我只需要在每一个新的酒吧里 添加一行,希望不会有任何问题)))。

谢谢你!

 

大家好!!!。请告诉我,我想下载一个干净的MT4,但在任何地方都找不到,从网站外的泵只找到MT5。请给我最新的版本。非常感谢!!!。

 
stepan.brend:

大家好!!!。请告诉我,我想下载一个干净的MT4,但在任何地方都找不到,从网站外的泵只找到MT5。请给我最新的版本。非常感谢!!!。

你可以下载任何你喜欢的经纪公司并获得最新版本。 唯一的区别是快捷方式中的标志。
 
Vitaly Muzichenko:
你们唯一的区别是快捷方式中的标志。
问题是,市场不工作,我不能在MT4上安装任何工具。请告知该怎么做)你真的需要安装这个工具
 
stepan.brend:
问题是,市场不工作,我不能在MT4上安装任何工具。请告知该怎么做)我真的需要安装一个工具
在另一家经纪公司开立一个账户。或其他类型的账户。市场的存在与否完全取决于账户。
 
Vitalie Postolache:
在另一家经纪公司开立一个账户。或另一种类型的账户。市场是否可用,完全取决于账户
维塔利-波斯托拉什
在另一家经纪公司开立一个账户。或另一种类型的账户。如果市场不起作用,那就要看账户的情况了。

尝试了三个DC和不同的账户,市场仍然不工作(

 
stepan.brend尝试了三个DC和不同的账户,市场仍然不工作(
没有什么奇迹。终端的版本是什么?我见过没有信号标签的账户,但大多数有市场。