[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 23

 
TarasBY:

1-ое: изначально Ваша философия изменения размера массива дефектна, для обработки показаний индикаторов в 99-ти случаях из 100 можно обойтись 10-тью ячейками;

2-ое: пересчитывать эти показания на каждом тике - блажь мало осведомлённого мозга.


Игорь, или вы начинаете давать дельные советы как выйти из ситуации, или не надо вообще постить.
 

Грубо, но по делу) Поэкспериментировав понял, что данные по количеству пунктов можно суммировать в одной ячейке. Этого достаточно.

 
FAQ: Игорь, или вы начинаете давать дельные советы как выйти из ситуации, или не надо вообще постить.
Перевожу суть высказанной мною мысли ранга "дельного совета" - человек идёт в тупиковом направлении.
 

Так направьте его куда надо, а не только констатируйте факт тупиковости.

тут ветка такая ...

 
Fox_RM: Грубо, но по делу) Поэкспериментировав понял, что данные по количеству пунктов можно суммировать в одной ячейке. Этого достаточно.
Без малейшей мысли обидеть или нахомить.
 

Все нормально! На этом форуме помощь людям оказывается - неоценимая! Месяц-другой назад я вообще не знал как с массивами работать)

 
Fox_RM:

Если массив разнородный, то вероятно нужно привести все элементы в тип string и далее искать нужный через

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
Причина обращения: