无法看到离线图表 - 页 2

 
lingwuchung:


你好。

我已经解决了所有的编译错误,但发现EA的OnTick(简化为附件中的testOffline.mq4)无法在离线图表上触发(由PeriodConvertor生成)。 但它在正常的M1图表上没有问题。 所以我想知道哪里出了问题?



离线图上没有传入的ticks。

试试OnTimer而不是OnTick

请看EA在从PeriodConverter刷新的离线图表上工作的例子。

int ExtCounter;
int ExtTickCount;
int ExtBars;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//----
   ExtCounter=0;
   ExtTickCount=GetTickCount();
   ExtBars=Bars;
   Print("init  ExtBars=",ExtBars,"  Time[0]=",TimeToString(Time[0]));
   EventSetTimer(1);
//----
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtTickCount=GetTickCount()-ExtTickCount;
   Print("ExtTickCount=",ExtTickCount,"   ExtCounter=",ExtCounter);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(ExtBars!=Bars)
     {
      ExtBars=Bars;
      Print("start  ExtBars=",ExtBars,"  Time[0]=",TimeToString(Time[0]));
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   if(RefreshRates())
      OnTick();
//----
   if(ExtCounter%15==0)
      Print("OnTimer  ExtCounter=",ExtCounter,"  Time[0]=",TimeToString(Time[0]));
   ExtCounter++;
  }
 
stringo:

离线图上没有传入的点子。

试试OnTimer而不是OnTick

见EA在离线图表上工作的例子,从PeriodConverter刷新的。


好的,现在得到了离线图表的刻度。 但这是否意味着EA只能最快地每隔1秒触发一次? 因为EventSetTimer()只能设置到秒为单位)。

如果是这样,这是新的mql4的退化,我想知道为什么。

 

降级?为什么?

专家们 从未 离线图表 工作过

 
RaptorUK:

你能不能把FileOpenHistory()的文档更新一下 . . .

...没有提到其他的标志。


请尝试更新你的帮助


 
Rosh:

请尝试更新您的帮助

对不起,我没有说FileOpen() . .我说的是FileOpenHistory()

 
stringo:

降级?为什么?

专家们 从未 离线图表 工作过


请不要开玩笑。 我已经在离线图表上与专家进行了一年的交易。 我使用的最新版本(在被强制升级到600之前)是509版本。
 
lingwuchung:

请不要开玩笑。 我已经在离线图表上与专家进行了一年的交易。 我使用的最新版本(在被强制升级到600之前)是509版本。
这不是一个黑客,不被Metaquotes支持吗?
 
angevoyageur:
这不是一个黑客,不被Metaquotes支持吗?


由于Metaquotes没有向公众透露hst文件的结构(他们为自己的目的保留它),那么每一个使用*.hst文件的人都是黑客。
 
Ovo:

由于Metaquotes没有向公众透露hst文件的结构(他们为自己的目的保留它),那么每一个使用*.hst文件的人都是黑客。

谁是PeriodConverter这个脚本的幕后推手?

提示:尝试找出这篇文章 的作者

 
Ovo:

由于Metaquotes没有向公众透露hst文件的结构(他们为自己的目的而保留),那么每一次对*.hst文件的使用都是一种黑客。
不,.hst文件格式已在终端帮助文件中公布。.我想它会在适当的时候被更新. mql4也提供了一个读写.hs文件的功能..不涉及黑客。

历史文件格式(HST文件)

数据库的头是第一个

结构


HistoryHeader
{
int version; // 数据库版本
char copyright[64]; // 版权信息
char symbol[12]; // 符号名称
int period; // 符号时间范围 int digits; // 符号中小数点后的数字数量
time_t timesign; // 数据库创建时的时标
xml-ph-0027@ d

然后是条形数组(单字节调整)。

#pragma pack(push,1)
//---- 数据库中报价的标准表示法
结构 RateInfo
{
time_t ctm; //当前时间(秒
double open;
double low;
double high;
close;
double vol;
};
#pragma pack(pop)