新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 174

 
mila.com:

你好。

请帮助我将文件中的数据显示为柱状图。

在文件 "file.txt "中,一个日期对应着一个数字,像这样。

29.03.2017.574391

30.03.2017.741308

31.03.2017.614367

我从文件中获取数据并打印出来,像这样。


通过柱状图的大小,使其看起来像一个指标 )

所以你把数据放在图形缓冲区里,而不是放在打印输出上。确定绘制柱状图的日期,并将数据放在那里。
 
-Aleks-:

所以,你把数据放在图形缓冲区里,而不是放在打印上。确定你希望绘制直方图的日期,并将数据放在那里。

这就是困难所在。

我把它打印出来,以明确我是从文件中获取数据的一般情况。

我不知道如何将它们分配到相关的日期。

 
mila.com:

这就是困难所在。

我把它打印出来,以明确我是从文件中获取数据的一般情况。

我不知道如何将它们分配到相关的日期。

从文件中提取日期,从日期中找到条形号码,并将其画入...
 
Alexey Viktorov:
从文件中提取日期,从日期中找到条形号码,并将其画入...

你到底是如何做到这一点的?

请给我看看。

 
mila.com:

你究竟是如何做到这一点的?

请给我看看。

使用字符串函数。特别是

string  StringSubstr(
   string  string_value,     // строка
   int     start_pos,        // с какой позиции начать
   int     length=0          // длина извлекаемой строки
   );

从零点位置拉出10个字符,并将该字符串转换为日期。

但是,如果字符串中没有条形开盘时间,如果我们在D1以外的图表上运行,直方图将不会出现在每个条形上。

Строковые функции - Справочник MQL4
Строковые функции - Справочник MQL4
  • docs.mql4.com
Строковые функции - Справочник MQL4
 

朋友们,请帮我写一个函数来计算从开单的那条杠开始的杠数

例如:如果我们在第5条上有一个未平仓订单,该函数应返回5。

 
Bek001:

朋友们,请帮我写一个函数来计算从开单的那条杠开始的杠数

例如:如果我们在第5条上有一个未平仓订单,该函数应该返回5。

int shift=iBarShift(NULL,PERIOD_СURRENT,OrderOpenTime());
 
Alexey Viktorov:

使用字符串函数。特别是

从零点位置拉出10个字符,并将该字符串转换为日期。

但如果字符串中没有柱状开盘时间,如果我在D1以外的图表上运行,柱状图就不会出现在每个柱状上。

谢谢你,我把日期和价值分开拉。

现在我如何用这个来填充缓冲区?

 for(int i=0; i<limit;i++){

string InpFileName="file.txt";
 ResetLastError(); 
  int file_handle=FileOpen(InpFileName,FILE_TXT|FILE_READ);
   
   if(file_handle!=INVALID_HANDLE) 
     { 
      PrintFormat("Файл %s открыт для чтения",InpFileName); 
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); 
      //--- вспомогательные переменные 
      int    str_size; 
      string str,str_b1,str_dat1; 
      //--- прочитаем данные из файла 
      while(!FileIsEnding(file_handle)) 
        { 
         //--- узнаем сколько символов использовано для записи времени 
         str_size=FileReadInteger(file_handle,INT_VALUE); 
         //--- прочитаем строку 
         str=FileReadString(file_handle,str_size); 
         str_dat1= StringSubstr(str,0,10);
         str_b1= StringSubstr(str,12,6);
         //--- распечатаем строку 
         PrintFormat(str_dat1); 
         PrintFormat(str_b1);
        } 
      //--- закроем файл 
      FileClose(file_handle); 
      PrintFormat("Данные прочитаны, файл %s закрыт",InpFileName); 
     } 
   else 
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError()); 
    //}
   
      Range_Buffer[i]=//???
      }
 
mila.com:

谢谢你,我把日期和价值 分开拉。

现在我如何用这个来填充缓冲区?

Range_Buffer[i]=значение//???

它必须是在一个循环中。for循环中的while循环是浪费时间的。我们必须读取一行,拉出日期和数值,并对其进行处理。按时间 找到酒吧的数量,并将所得数值放在那里。之后才转到下一个条目。

 
mila.com:

这就是困难所在。

我把它打印出来,以明确我是从文件中获取数据的一般情况。

我不知道如何将它们分配到相关的日期。

一条记录是否对应于一个酒吧?