[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 396

 
7777877:

是的,谢谢你的帮助...但我想了解为什么ObjectSet(object_name,OBJPROP_TIMEFRAMES,PERIOD_H1)不工作(像它应该的那样)?是语言本身的故障吗?

事实上,PERIOD_H1 和OBJ_PERIOD_H1都只是某个数值的字母替换。

OBJ_PERIOD_H1 = 0x0010 (用于当前构建) = 0001 0000 (二进制)

PERIOD_H1 = 60 (用于此构建) = 0011 1100 (二进制)


因为它很容易替换,你不小心放了4个时间段而不是一个--H4、H1、M30和M15


你没有调用ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x0010)(你想这样做),而是调用了

ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x3C)。

 
datetime last_time;   // глобальная переменная

...

int start()
{
   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(close[1]>open[1]) 
xBost_b=xBost_b+((close[1]-low[1])*10000);
   }

什么是Time[0],它是如何影响1个时间加的?!只是有点困惑......

 
DanLett:

什么是Time[0],它是如何影响1个时间加的?!只是有点困惑......

时间[0]是最近(当前)的条形图的开盘时间。只要有一个新的酒吧,它就会改变。

在MetaEditor中输入时间,按F1键查看详情

 
ilunga:

时间[0]是最近(当前)的条形图的开盘时间。只要有一个新的酒吧,它就会改变。

在MetaEditor中输入时间,按F1键查看详情

现在就去读!非常感谢你。
 
DanLett:
我现在就读!非常感谢你!"。

然后别忘了看一下 iTime()。
 
   datetime last_time;   // глобальная переменная
  int xBost_b;
  int xBost_s;
double hi=High[1];
double op=Open[1];
double cl=Close[1];
double lo=Low[1];
int Sum_xb;
int Sum_xs;
 
 if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(Close[1]>Open[1]) 
xBost_b=(hi-cl)*10000;
Sum_xb=Sum_xb+xBost_b;<---------не плюсует,выдает такое же число как и xBost

      if(Close[1]<Open[1])
 xBost_s=(cl-lo)*10000; 
Sum_xs=Sum_xs+xBost_s;    
Comment("\n kolvo_b=",xBost_b,"\n Sum_xb=",Sum_xb,"\n kolvo_s=",xBost_s,"\n Sum_xs=",Sum_xs);

   }
你如何让它每次都给你加分?
 
DanLett:
我怎样才能让它每次都加起来?
全局变量 应该在所有函数之外。也在那里发送总和。 或者将这些变量声明为静态变量
 
DanLett:
我怎样才能让它每次都加入?
将last_time从start()中取出,并声明它是静态的。
 
我如何使用合成条(https://www.mql5.com/ru/articles/1353) 来使EA内部的功能只在开盘价上工作?在正常的条形图上,它是由当前条形图的开盘时间完成的,像这样如果(Time[0] == prevtime4)返回。
prevtime4=Time[0]; 但合成的条形图是没有时间的......理论上你可以在这里写上如果bid是开盘价,但我不知道怎么做。
 

怎样才能找到 买入蜡烛图的最大 尾数?

即当前的蜡烛图建成后,以前的买入蜡烛图,我们确定了买入蜡烛图的尾部,然后我们继续建图,买入蜡烛图再次出现并再次计算尾部。

现在,如何找到这些尾巴的最大值,并将其写在变量????。

int Sum_xb;
int Sum_xs;
datetime last_time;   // глобальная переменная
int Kol_vo_b;
int Kol_vo_s;
int Sr_zn_b;
int Sr_zn_s;
extern int Num_kolvo_b=10;
extern int Num_kolvo_s=10;
int Zn_b;
int Max_b;

int start()
  {
   
  int xBost_b;
  int xBost_s;
double hi=High[1];
double op=Open[1];
double cl=Close[1];
double lo=Low[1];


   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(Close[1]>Open[1])
      { 
xBost_b=(hi-cl)*10000;
Kol_vo_b++;
}
      if(Close[1]<Open[1])
      {
 xBost_s=(cl-lo)*10000; 
 Kol_vo_s++;
 
   }
   
if (Kol_vo_b==Num_kolvo_b)
{
Kol_vo_b=0;
Sum_xb=0;
}
if (Kol_vo_s==Num_kolvo_s)
{
Kol_vo_s=0;
Sum_xs=0;
}  
 
Sum_xb=Sum_xb+xBost_b;
Sr_zn_b=Sum_xb/Kol_vo_b;

Sum_xs=Sum_xs+xBost_s;
Sr_zn_s=Sum_xs/Kol_vo_s;

Zn_b=xBost_b;
if(xBost_b>Zn_b)
Max_b=xBost_b;
}




Comment("\n xBost_b=",xBost_b,"\n Sum_xb=",Sum_xb,"\n Kol_vo_b=",Kol_vo_b,"\n Sr_zn_b=",Sr_zn_b,
"\n\n\n\n kolvo_s=",xBost_s,"\n Sum_xs=",Sum_xs,"\n Kol_vo_s=",Kol_vo_s,"\n Sr_zn_s=",Sr_zn_s,"\n\n\n\n Max_b=",Max_b);

return(0);
  }

如何正确写出这部分代码以找到最大值!?

Zn_b=xBost_b;
if(xBost_b>Zn_b)
Max_b=xBost_b;