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

 
Snajper007 #:

这段代码显示的是第10根蜡烛的信号。 我需要检查从1到N每根蜡烛的信号。

改变搜索的顺序。

你是在从时间的深处搜索到现在,因此找到了 "最古老的信号"。

根据iCustom判断--你有4个,所以编号。

循环必须从0(更可能是1-2)到N

for(int i=0;i<n;i++)

 
Snajper007 #:
int n=10;
   datetime bar_sig_buy, bar_sig_sell;

   for(int i=n;i>=0;i--)
     {
     // для покупок
   double a1 = iCustom(NULL, 0, "FL11", 4, i);
   // для продаж 
   double a2 = iCustom(NULL, 0, "FL11", 5, i);


      if(a1 > 0)
         bar_sig_buy=Time[i];
         
      if(a2 > 0)
        bar_sig_sell = Time[i];
     Comment("bar_sig_sell = " + DoubleToString(bar_sig_sell)+ "\n" +
     "bar_sig_buy = " + DoubleToString(bar_sig_buy));

     }
 
在我的印象中,FL11的指示器是歪的,你无法正确使用它。重绘...循环应该从0引向左边,如果发现有信号就中断...或者,在周期的主体中重置信号的时间,并打印每个条形图的结果。但用这个指标你不会学到任何东西,找一个正常的指标。
 
MakarFX #:
int n=10;
   datetime bar_sig_buy, bar_sig_sell;

   for(int i=n;i>=0;i--)
     {
     // для покупок
   double a1 = iCustom(NULL, 0, "FL11", 4, i);
   // для продаж 
   double a2 = iCustom(NULL, 0, "FL11", 5, i);


      if(a1 > 0)
         bar_sig_buy=Time[i];
         
      if(a2 > 0)
        bar_sig_sell = Time[i];
     Comment("bar_sig_sell = " + DoubleToString(bar_sig_sell)+ "\n" +
     "bar_sig_buy = " + DoubleToString(bar_sig_buy));

     }
什么都没有改变。信号仍然显示在第10根蜡烛上
 
Snajper007 #:
什么都没有改变。信号仍然显示在第10根蜡烛上
2021.11.08 18:44:44.620 2021.10.15 17:10:00  BAG GBPUSD,H1: 0/sell: 2021.10.15 17:00:00
2021.11.08 18:44:44.571 2021.10.15 17:07:30  BAG GBPUSD,H1: 0/sell: 2021.10.15 17:00:00
2021.11.08 18:44:44.530 2021.10.15 17:05:00  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.480 2021.10.15 17:02:30  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.432 2021.10.15 17:00:00  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.385 2021.10.15 16:59:59  BAG GBPUSD,H1: 2/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.339 2021.10.15 16:57:30  BAG GBPUSD,H1: 2/sell: 2021.10.15 14:00:00
 
Snajper007 #:
什么都没有改变。信号仍然显示在第10根蜡烛上

下面是我的旧档案中分析这个指标的信号的功能,根据你自己的需要调整...

返回最后一个信号。1--上太阳,0--下太阳。-1 - 无信号/错误。

int gsun(ENUM_TIMEFRAMES tf)
{
double up=0.0,dw=0.0;
for(int i=1;i<iBars(Symbol(),tf);i++)
  {
  up=iCustom(Symbol(),tf,"FL11",Period1,Period2,Period3,Deviat1,Deviat2,Deviat3,5,i);
  dw=iCustom(Symbol(),tf,"FL11",Period1,Period2,Period3,Deviat1,Deviat2,Deviat3,4,i);
  if(up!=0.0&&up!=EMPTY_VALUE)return(1);
  if(dw!=0.0&&dw!=EMPTY_VALUE)return(0);
  }
return(-1);
}
//---
 

MakarFX

谢谢你!它的工作!

 
Nikolay Ivanov #:
在我的印象中,FL11的指示器是歪的,你无法正确使用它。重绘...循环应该从0引向左边,如果发现有信号就中断...或者,在周期的主体中重置信号的时间,并打印每个条形图的结果。但用这个指标,你不会学到任何东西。
什么是正常指标?
 
Snajper007 #:


应使用按钮图片 插入图片或使用按钮附加图片。附上文件

 
Snajper007 #:
什么是正确的指标?

任何一个不超过逻辑的透支,通常是0条,为分形2。

我是以正确的操作来判断的。