MQL5中的初学者问题。专业人士不会路过。 - 页 3

 

也许是时候打电话给版主寻求帮助了,请他们把前两个帖子从主题中删除(我希望 Yedelkin先生不会被冒犯,感谢他回答了我的问题。)我希望Yedelkin先生不要生气,这个帖子可以改名为"爱好者对MT5改进 的愿望 "或类似的东西,由他们决定。如果你不知道该如何处理这个话题,对我来说就没有用处。

也许会有一些好的结果?也许他们会听到)。

 

决定读取hst文件,但FileReadString 给出了象形文字。

我如何与之斗争?

我写的标题µl4的5 "EURUSD""(C)opyright 2003, MetaQuotes Software Corp.我正看着呢。

我什么都懂,就是不懂线条,为什么会这样呢?

发件人5

#define AMOUNT_OHLCV 5 
static double OLHCV[AMOUNT_OHLCV];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void  OnStart()  {

  int Tmp[15];
  for(int t=0;t<ArraySize(Tmp);t++)
      Tmp[t]=0;
  string Symbol_Create  = "EURDDD";     
  string FileName = Symbol_Create + "1.hst";
  int handle = FileOpen(FileName, FILE_BIN|FILE_WRITE);
   
  string s="";
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 400,4)+"\n";            
  s=s+"FileWriteString "+FileWriteString(handle, "(C)opyright 2003, MetaQuotes Software Corp.",32)+"\n"; 
  s=s+"FileWriteString "+FileWriteString(handle, Symbol_Create, 6)+"\n"; //Symbol      
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 1,4)+"\n";   //Period        
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 4,4)+"\n";  //Digits           
  s=s+"FileWriteArray "+FileWriteArray(handle, Tmp, 0, 15)+"\n";           
  Comment(s);


   MqlRates EURUSD[];
   int bars=CopyRates("EURUSD",1,0,Bars("EURUSD",1),EURUSD);
   ArraySetAsSeries(EURUSD,true);
   
   for(int i=bars-1;i>=0;i--){
        OLHCV[0] = EURUSD[i].open;
        OLHCV[1] = EURUSD[i].low;
        OLHCV[2] = EURUSD[i].high;
        OLHCV[3] = EURUSD[i].close;
        OLHCV[4] = EURUSD[i].real_volume;
        
        double Tmph = OLHCV[ArrayMaximum(OLHCV,0, AMOUNT_OHLCV - 1)];
        OLHCV[1] = OLHCV[ArrayMinimum(OLHCV, 0, AMOUNT_OHLCV - 1)];
        OLHCV[2] = Tmph;
        FileWriteInteger(handle,EURUSD[i].time,4);  
        FileWriteArray(handle, OLHCV, 0, AMOUNT_OHLCV);
    }
  FileFlush(handle);
  FileClose(handle);
return;
}

接收器4

int start(){
  int Tmp[15];
  for(int t=0;t<ArraySize(Tmp);t++)
      Tmp[t]=0;
  string FileName = "EURDDD1.hst",s="";
  int handle = FileOpenHistory(FileName, FILE_BIN|FILE_WRITE|FILE_READ);

  s= s+FileReadInteger(handle,4)+"\n";            
  s= s+FileReadString(handle,64)+"\n"; 
  s= s+FileReadString(handle,12)+"\n";     
  s= s+FileReadInteger(handle,4)+"\n";           
  s= s+FileReadInteger(handle,4)+"\n";             
  s= s+FileReadArray(handle, Tmp, 0, 15)+"\n";  

  for(int i=20/*(FileSize(handle)-148)/44*/;i>=0;i--){
         s= s+TimeToStr(FileReadInteger(handle,4))+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";            
         s= s+"-----------------------------------------"+"\n";
  }
  Comment(s);
  return;
}
 
costy_:

FileReadString放弃了象形文字。

而且这真的是象形文字... 外包的后果,或纪念金正日的复活节彩蛋)
 
Figar0:
而且它真的是用象形文字写的... 外包的后果,或纪念金正日的复活节彩蛋)
outrohlife和Jung sim kin :(
 

尊敬的MT5专家,在MT5终端中,我发现同一时间间隔的条数(主要在分钟上)有时是不同的。

我的理解是,如果在条形图形成过程中没有价格变化,那么条形图根本就不会被画出来,也就是被跳过。

我很震惊。我想检查一下。

它是真的还是假的?

 
Edic:

尊敬的MT5专家,在MT5终端中,我发现同一时间间隔的条数(主要在分钟上)有时是不同的。

我的理解是,如果在条形图形成过程中没有价格变化,那么条形图根本就不会被画出来,也就是被跳过。

我很震惊。我想检查一下。

它是真的还是假的?

如果在条形图形成的时间范围内没有刻度,条形图将不会被绘制。
 

我怎样才能处理某一类型的所有图形对象(如OBJ_HLINE)?

通过ObjectsTotal,我可以找出图表上这种类型的对象的数量,但如果我事先不知道对象的名称,我怎么能通过相同的for来枚举它们。

具体的任务是,我需要枚举图形的所有水平线,并将它们的值存入一个数组。

谢谢

 
Olegts:

我怎样才能处理某一类型的所有图形对象(如OBJ_HLINE)?

通过ObjectsTotal,我可以找出图表上这种类型的对象的数量,但如果我事先不知道对象的名称,我怎么能通过相同的for来枚举它们。

具体的任务是,我需要枚举图形的所有水平线,并将它们的值存入一个数组。

谢谢

在 "ObjectsTotal "之后使用"ObjectName"
 
barabashkakvn:
在 "ObjectsTotal "之后使用"ObjectName"
明白了,谢谢)
 
barabashkakvn:
如果在条形图的时间范围内没有刻度,条形图就不会被建立。
谢谢你)