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

 
TarasBY:

第一点:你改变阵列大小的理念从一开始就有缺陷,你可以用10个单元来处理100个案例中的指标读数。

第二:在每次打勾时重新计算这些读数是一个不知情的大脑的突发奇想。


伊戈尔,要么你开始就如何摆脱困境给出明智的建议,要么就不要发帖。
 

粗糙,但切中要害)经过实验,我意识到,关于点的数量的数据可以在一个单元格中进行汇总。这就足够了。

 
FAQ: 伊戈尔,要么你开始就如何摆脱困境给出明智的建议,要么就不要发帖。
我将把我的观点转化为 "合理的建议"--这个人正走向一个死胡同。
 

所以要给他指出正确的方向,而不仅仅是陈述僵局的事实。

这是个线程...

 
Fox_RM: 粗糙,但切中要害)经过实验,我意识到,关于点的数量的数据可以在一个单元格中进行汇总。这就足够了。
没有丝毫冒犯或侮辱的想法。
 

没事的!在这个论坛上帮助别人是非常宝贵的!一两个月前,我还完全不知道如何处理数组的问题)

 
Fox_RM:

如果数组是异质的,你可能应该把所有元素转换成字符串类型,然后用

StringFinde(https://www.mql5.com/ru/forum/138609/page22#613148).如果我说错了,请纠正我。


谢谢你,我找到了这个功能。

我只是不明白如何正确使用它。

它只返回字符串中被搜索部分开始的地方,而不是一个部分。

我需要一个字符串的一部分。

 
Snegovik:


谢谢,我找到了这个功能。

我只是还没有弄清楚如何正确使用它。

它只返回字符串中搜索到的部分开始的位置,而不是部分。

我需要字符串的一部分。

StringSubstr()。
 
TarasBY:
StringSubstr()。


正是我所需要的。

非常感谢你。

 

大家晚上好!

问题是:我不知道如何使用寻找两条线的交点的函数(我也试过金的函数,但结果是一样的)。

问题是,有时会在错误的地方检测到交叉点。

情况是这样的。


红色横线是函数计算的价格水平。黄色的是一个应该有的水平。

有趣的是,这个错误并不总是发生:通常情况下,交叉点的定义应该是这样的。

下面我粘贴的是该函数的代码。

//+----------------------------------------------------------------------------+
void Middle(string nm1,string nm2)
  {
  //double M;
  double x1, x2, x3, x4;
  double y1, y2, y3, y4;
  double k1, k3;
  
  if(ObjectFind(nm1)==0 && ObjectFind(nm2)==0)
    {
    y1=ObjectGet(nm1, OBJPROP_PRICE1);
    y2=ObjectGet(nm1, OBJPROP_PRICE2);
    x1=ObjectGet(nm1, OBJPROP_TIME1);
    x2=ObjectGet(nm1, OBJPROP_TIME2);
    
    y3=ObjectGet(nm2, OBJPROP_PRICE1);
    y4=ObjectGet(nm2, OBJPROP_PRICE2);
    x3=ObjectGet(nm2, OBJPROP_TIME1);
    x4=ObjectGet(nm2, OBJPROP_TIME2);
    
    k1=(y2-y1)/(x2-x1); 
    k3=(y4-y3)/(x4-x3);
    
    if(k1 != k3)
      {
      T = (y1 - y3 + k3*x3 - k1*x1)/(k3 - k1);
      M = y1 + k1*(T - x1);
      Tt = T;
      }
    }
  return(0);
  }
//+----------------------------------------------------------------------------+

预告片中包含一个用于测试的专家顾问。

请告知我做错了什么?

非常感谢你的帮助)

附加的文件:
proba_per.mq4  11 kb