Какой получить размер сетки графика? - страница 2

 

Я пошёл через прайсы, отталкивался от тех же макс и мин чарта

   double priceMax=ChartGetDouble(chart_id,CHART_PRICE_MAX);
   double priceMin=ChartGetDouble(chart_id,CHART_PRICE_MIN);
   double diff=(priceMax-priceMin)/_Point;
// точки перехода на новый масштаб по значению diff
   string t="";
   for(int i=0;i<20;i++)
      t+="\n"+((i+1)*5)+" "+(160+i*133.33333333);
      
   Comment(t)

в результате получаем формулу масштаба сетки

5*(ceil((diff-160)/133.33333333)+1)

навскидку всё сходиться, но стоит внимательно оттестить точки перехода (мне как бы делать это влом).

ЗЫ А ещё если прямо в формулу лепить функции ChartGetDouble(chart_id,CHART_FIXED_MAX) и MIN, то при запуске лезет баг Invalid EX5 file, надо бы в СД отписать.

 
Попробовал такой код - работает без ошибок:

void OnStart()
  {
   double diff=(ChartGetDouble(0,CHART_PRICE_MAX)-ChartGetDouble(0,CHART_PRICE_MIN))/_Point;
// точки перехода на новый масштаб по значению diff
   string t="";
   for(int i=0;i<20;i++)
      t+="\n"+((i+1)*5)+" "+(160+i*133.33333333);
      
   Comment(t);
  }
//+------------------------------------------------------------------+
 
mql5:
Попробовал такой код - работает без ошибок:

Оч странно, какой то блуждающий баг, сегодня вставил ваш код в советник (в OnTimer 50mls) работает, а вчера не работало (работало только в OnInit()).

Ладно, пока вопрос снимается. Если чё отловлю напишу уже в СД.

 
Urain:

Оч странно, какой то блуждающий баг, сегодня вставил ваш код в советник (в OnTimer 50mls) работает, а вчера не работало (работало только в OnInit()).

Ладно, пока вопрос снимается. Если чё отловлю напишу уже в СД.

Хорошо, достаточно будет приложить нерабочий EX5.
 
mql5:
Хорошо, достаточно будет приложить нерабочий EX5.
:) так он после вставления вашего куска стал работать сцк0, и теперь ни как не хочет неработать :)
 
Urain:
:) так он после вставления вашего куска стал работать сцк0, и теперь ни как не хочет неработать :)
так у тебя в коде опечатка.  как скопипастил два раза CHART_PRICE_MAX так и оставил....
 
MetaDriver:
так у тебя в коде опечатка.  как скопипастил два раза CHART_PRICE_MAX так и оставил....

Спсб :)

В прикрепе без ошибок

Файлы:
 

Благодарю за коды.

Кстати, заметил особенность - при разных масштабах и разных размерах окна с графиком, сетка рисуется слева->направо и снизу->вверх:

Закономерность отрисовки сетки 

Думаю на выходных соорудить алгоритм привязки к сетке. 

 
barabashkakvn:

Думаю на выходных соорудить алгоритм привязки к сетке. 

Проще свою сетку нарисовать. С привязкой к барам или ещё к чему душа пожелает.  Стандартная сетка отключаемая (и шкалы тоже).
 
MetaDriver:
Проще свою сетку нарисовать. С привязкой к барам или ещё к чему душа пожелает.  Стандартная сетка отключаемая (и шкалы тоже).

Нет, я буду использовать стандартную сетку - по сетке буду рисовать индикатор. Когда рисовать по сетке - красиво смотрится:

Сетка нужна для привязки индикатора