Скачать MetaTrader 5

Отладка индикатора :)) встроенными средствами ?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
John
3254
John  

Я так понимаю, этого не будет? :) Вот я обломался сегодня. Все сделал ... и ... :(

Как вообще отлаживатся, посоветуйте что нибудь.

Вылетает у вас, в смысле в коде MQL5 - выход за пределы массива, :) я такой думаю - о щас я как кнопочки-то по нажимаю, как большой :)  ... не то что раньше.... :) А тут бамс -  обломс.

Положим с этим я как-то разберусь, по старинке - ну а вообще-то -  что отладчик не будет работать для индикаторов?  

John
3254
John  
SProgrammer писал(а)  :

Я так понимаю, этого не будет? :) Вот я обломался сегодня. Все сделал ... и ... :(

Как вообще отлаживатся, посоветуйте что нибудь.

Вылетает у вас, в смысле в коде MQL5 - выход за пределы массива, :) я такой думаю - о щас я как кнопочки-то по нажимаю, как большой :)  ... не то что раньше.... :) А тут бамс -  обломс.

Положим с этим я как-то разберусь, по старинке - ну а вообще-то -  что отладчик не будет работать для индикаторов?  

 

Yes.... сделал. :) TMA работает в mql5. :))

Одна и также DLL - работает и там и там. Буду смотреть .

 

Кстати но вот почему  ArrayBsearch  не ищет в отсортированном массиве полученном через CopyTime? Не совсем понятно. Вроде же должен. Причем и как таймсерия и просто как обычный массив.  

John
3254
John  

Но вот кстати и ошибки -

А вот код который приводит к этому. Видите коменнтарий //288000;

input  int Size=240;
input  int Step=1;
input  int IndicatorStart=0;//288000;
input  double OChanelKCorr=0.0;
input  double OLucky=0.2;
Dmitry Voronkov
5813
Dmitry Voronkov  
SProgrammer:

Но вот кстати и ошибки -

А вот код который приводит к этому. Видите коменнтарий //288000;

Это не ошибка, это так задумано для описания входных параметров, пример:

input int         DayTheHistogram   = 1;          // Дней с гистограммой / Days The Histogram

Будет выведено в графе "Переменная": Дней с гистограммой / Days The Histogram

В графе "Значение" : 1

Alexander
1515
Alexander  
SProgrammer:

Кстати но вот почему  ArrayBsearch  не ищет в отсортированном массиве полученном через CopyTime? Не совсем понятно. Вроде же должен. Причем и как таймсерия и просто как обячный массив.  

Да, хотелось бы штатно иметь функцию, а то приходится юзать

long FindIndexByTime(const datetime &time[],datetime barTime, long left = 0, long right = WHOLE_ARRAY)
{
   int size = ArraySize(time);
   if (left < 0 || right > size-1) return -1;
   
   long l = left,
      r = right == WHOLE_ARRAY ? size - 1 : right,
      m;
  
   for (;;)
   {
      m = (l + r) / 2;
      if (barTime < time[m]) r = m - 1;
      else if (barTime > time[m]) l = m + 1;
      else return m;
      
      if (l > r) return -1;
   }
   
   // not all control paths return a value
   return -1;
}

 

John
3254
John  
vdv2001:

Это не ошибка, это так задумано для описания входных параметров, пример:

Будет выведено в графе "Переменная": Дней с гистограммой / Days The Histogram

В графе "Значение" : 1

Круто. Кто придумал?
Rashid Umarov
Админ
11993
Rashid Umarov  
SProgrammer:
Круто. Кто придумал?
Конкретно, наколько я знаю, придумал  stringo. По крайней мере он мне рассказал про эту фичу, когда сделал только.
Простак
315
Простак  
Rosh:
Конкретно, наколько я знаю, придумал  stringo. По крайней мере он мне рассказал про эту фичу, когда сделал только.

Поражает убогость мышления. Почему обязательно нужно воровать комментарий программиста?
Неужели нельзя было придумать что-нибудь менее убогое, например,

input(Дней с гистограммой / Days The Histogram) int DayTheHistogram = 1; // Мой личный комментарий / My private comment

с выводом "Дней с гистограммой / Days The Histogram" в качестве заголовка параметра?

Тем более, что заголовок параметра - это заголовок ПАРАМЕТРА, то есть, напрямую связан с ключевым словом input?

И почему при использовании комментариев типа /* */ вместо // они тоже обрабатываются подобным образом, но - ещё более убого?

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

Такое впечатление, что разработчики "варятся в собственном соку" в запертой наглухо комнате уже много лет, и их не подпускают к свежей информации.
Этакий эксперимент "полёт на Марс", да ещё и в условиях отсутствия связи.

John
3254
John  

Они наверняка сделают так как Вы говорите, ну что нибудь по аналогии с установками свойств в C#. Я уверен что это просто временная мера. Ну типа просто - было не трудно сделать и сделали так.

 

Но вот почему параметры ReadOnly  как-то совсем не понятно. Я понимаю сделали бы модификатор const для ReadOnly. Тут я  даже могу догадаться, почему, так как делал что-то подобное как-то давно, ну типа такие же модули загружаемыее. Можно предположить что тут проблема кроется в том, чтобы избежать повторного вычесления индиатора - ну чтобы все индикаторы с вызываемые из советников с одними и темиже параметрами были вычисляемые один раз. Но :) я сделал немного не так - я сохранял параметры которые были заданны, и копировал для модуля их в перемнные . А так приходится делать тоже самое но уже ручками.

 

:) Не знаю зачем я все эти "тайные" приемы расказываю :)) Хоть бы польза мне бы какая-то от этого была бы. :))

Дмитрий
271
Дмитрий  

На самом деле фишка с комментариями прикольная, и не стоит так резко отзываться о разработчиках в данном случае, все таки хотели как лучше...

Но, правда, может сделать что-то что бы выбор был, будет отображаться комментарий или нет

Например бывает, что переменных много, заданы они понятным смысловым выражением, а в комментарии конкретно уточняется для чего это нужно, например

input int        МаксЧислОрдЗаПериодСигнФильтра = 0;     //При возникновении сигнала фильтра, начинается отсчет ордеров выставленных в этом направлении. При достижении максимального количества новые ордера перестают выставляться пока фильтр не сменит направление(отложенники так же удаляются).

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

Stanislav Korotky
18235
Stanislav Korotky  
simpleton:

Неужели нельзя было придумать что-нибудь менее убогое, например,

Я уже писал им по этому поводу (https://www.mql5.com/ru/forum/75/page4/#comment_15061). Предлагал практически идентичное вашему решение (т.е. без круглых скобок после input писать заголовок в кавычках как литерал). Но обычно подобные "странные" мягко говоря решения не обсуждаются, не обосновываются и не переделываются ;-).

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий