Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1884

 
В метатрейдере возможно несколько watch list'ов (обзоров рынка)? Например в одном индексы, в другом акции
 
Vladimir Makhnin #:
В метатрейдере возможно несколько watch list'ов (обзоров рынка)? Например в одном индексы, в другом акции

Сделайте собственный. MQL5 это позволяет легко.

 
Mihail Matkovskij #:

Всё дело в формуле вычисления угла. В коде видно что для его вычисления используется только одна координата и какой то коэффициент, предназначение которого непонятно. Это как? Расскажите подробнее какие данные вы используете для вычисления угла.

На сколько я понял 

double d

это вектор. Но всё равно это только одна координата. Но для вычисления угла нужно две координаты или вектор состоящий из двух координат.

 

оба на... мой ответ удалили

 
Maxim Kuznetsov #:

оба на... мой ответ удалили

Что-то путаете - нет в удалённых Вашего поста из этой ветки.

 
Vladimir Karputov #:

Что-то путаете - нет в удалённых Вашего поста из этой ветки.

Тоже поглядел. Не нашёл.

 

ну ладно, тогда продублирую... в ответ на https://www.mql5.com/ru/forum/160683/page1884#comment_27290699

CalcAngleTrend не при чём. Где-то в ином месте неверно считается coefAngle или далее идут кривые рассчёты

ps/ и возможно в целом неверно интерпретируется понятие "наклон". Он не выразим в градусах или радианах (без вышмата типа кривизны пространства) и функция atan возвращает физически некорректную величину. 

 
Mihail Matkovskij #:

Всё дело в формуле вычисления угла. В коде видно что для его вычисления используется только одна координата и какой то коэффициент, предназначение которого непонятно. Это как? Расскажите подробнее какие данные вы используете для вычисления угла.

Все верно это вектор
а одно значение используется потому, что дельта изменения деленное на 1 (Один) будет дельта.
переменная coefAngle - это константа int равное 2.
я проверял все данные на входе в функцию абсолютно одинаковые.
 
Maxim Kuznetsov #:

ну ладно, тогда продублирую... в ответ на https://www.mql5.com/ru/forum/160683/page1884#comment_27290699

CalcAngleTrend не при чём. Где-то в ином месте неверно считается coefAngle или далее идут кривые рассчёты

ps/ и возможно в целом неверно интерпретируется понятие "наклон". Он не выразим в градусах или радианах (без вышмата типа кривизны пространства) и функция atan возвращает физически некорректную величину. 

коэффициент - константа, она не меняется
расчетов кроме этой функции нет, те функция получила значение дельты усреднение значение векторов по нескольким точкам, грубо говоря сведение к отрезку из 2х точек, с периодом в 1 единицу

понятное дело, что это не полная реализация векторов, это больше для "более-менее" адекватного выразительного результата.
технически можно обойтись простым применением увеличивающего коэффициента и усе...

вобщем причину такой работы функции, вообще не вижу(

единственно возможно что то с приведением типов в самом выражении в процессе вычисления,

 
Владимир Казаков #:

Добрый день

Подскажите, пробую написать советника, и при тесте непонятная для меня вещь происходит...

есть функция

ситуация такая, один экземпляр советника запущен на графике, второй экземпляр запускаю в режиме отладки МТ4 на аналогичном графике
входные данные для функции получаются одинаковые, а выходные различаются!!!? я просто чего-то не понимаю похоже...(

подскажите в какую сторону копать информацию?!

ПС: посчитал разница ровно в 2.5 раза между выходными данными

Разложил выражения на действия... и о чудо теперь результаты одинаковые выдает!!?

double CalcAngleTrend(double d)
 {
Print("d: ", d, " coefAngle: ", (double) coefAngle);
  double
    a = (double) (d*pow(10,_Digits-2));
Print("(d*pow(10,_Digits-2)): ", a);
    double rad = (double) (180/M_PI);
Print("rad: ", rad);
    a = (double) (atan(a));
Print("(atan(a)): ", a);
    a = (double) (a*rad*(double) coefAngle);
Print("(a*rad*(double) coefAngle): ", a);
  return(NormalizeDouble(a, ANGLE_DIGITS));
 }

значит все таки с приведением типов что то не так работает, как мне бы хотелось

из знатоков и понимающих может кто то пояснить в чем все же была проблема?!
ну чтоб не повторять ошибок))

ПС: вот в таком формате выражение то же стало работать одинаково

  double a = (double) ((d*pow(10,_Digits-2))*(180/M_PI)*(double) coefAngle);

методом исключения получилось ерундило приведение инт к дублю

надеюсь я верно все понял

Причина обращения: