Ошибки, баги, вопросы - страница 1396

 
Ilya Malev:
В примере я сделал MathRand просто чтобы продемонстрировать работу масштаба. В оригинале у меня там был расчет числовых уровней по некоторой авторской трейдерской методике. В начале хотели их сделать от 1 до 5, но даже в МТ4 с такими значениями в буфере с DRAW_NONE адекватного масштаба добиться не удалось. После того как сделали их отрицательными и фиксировали минимум в 0, проблему удалось решить. При переносе индикатора на МТ5 оказалось что и это решение не прокатит. Пришлось умножать на Поинт как и сказал Вольдемар.

Кстати, совсем забыл. ))

Попробуйте вот так:

   SetIndexBuffer(0,buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,buffer2,INDICATOR_CALCULATIONS);

INDICATOR_CALCULATIONS >>>

 
Karputov Vladimir:
Пример Ваш кривой и Вы его не хотите исправлять. Проверю, когда исправите.

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

 
Anatoli Kazharski:

Кстати, совсем забыл. ))

Попробуйте вот так:

Пробовал, как и если indicator_plots=1 сделать, так и с INDICATOR_CALCULATIONS 

показания второго буфера просто исчезают из окна данных независимо от указания PlotIndexSetInteger(1, PLOT_SHOW_DATA, true); 

 
Anatoli Kazharski:

Можете попробовать сообщить об этой ошибке в сервисдеск и дождаться ответа там. 

Написал. Если ответят, отпишусь) Правда я сомневаюсь, что это ошибка. Вот и узнаем.
 
Ilya Malev:

Пробовал, как и если indicator_plots=1 сделать, так и с INDICATOR_CALCULATIONS 

показания второго буфера просто исчезают из окна данных независимо от указания PlotIndexSetInteger(1, PLOT_SHOW_DATA, true); 

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

А ещё можно попробовать сделать так:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,      // идентификатор события
                  const long   &lparam, // параметр события типа long
                  const double &dparam, // параметр события типа double
                  const string &sparam) // параметр события типа string
  {
   if(id==CHARTEVENT_MOUSE_MOVE)
     {
      int      subwin =WRONG_VALUE; // Номер окна, в котором находится курсор
      datetime time   =NULL;        // Время соответствующее координате X
      double   level  =0.0;         // Уровень (цена) соответствующий координате Y
      //---
      if(ChartXYToTimePrice(0,(int)lparam,int(dparam),subwin,time,level))
        {
         int bars_total=Bars(Symbol(),Period(),time,TimeCurrent());
         //---
         Comment("x: ",lparam,"; y: ",(int)dparam,"; subwin: ",subwin,"; time: ",time,"; level: ",level,"\n",
                 "indicator value: ",buffer2[bars_total]);
        }
     }
  }

//---

В OnInit() нужно ещё добавить:

void OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
  }
 
Anatoli Kazharski:

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

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

 
Ilya Malev:

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

А вариант из предыдущего поста не подходит? На случай, если всё останется, как есть. ) 

Файлы:
Test.mq5  4 kb
 
Anatoli Kazharski:

А вариант из предыдущего поста не подходит? На случай, если всё останется, как есть. ) 

Конечно спасибо за совет, если бы я хотел придумать какой-то костыль, я бы тоже что-нибудь придумал, но во-первых нам удобно смотреть на значения в окне данных. И во-вторых нужно использовать это значение индикаторного буфера в других индикаторах и советниках, а что-то мне подсказывает, что если сделать буфер для вычислений, то получить его значения через iCustom будет невозможно.

В итоге пока проблему решили умножением значения второго буфера на Point

 
Ilya Malev:

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

Все зависит от того, куда Вы хотите отображать значения. Если Вы установили отображение в отдельное окно, то не важно, видно ли не видно рассчитанные значения буферов. Все значения все равно будут попадать в это окно. Соответственно, может ломаться масштаб.

Про не логичность - согласен, но вряд ли исправят. 

 
Ilya Malev:

Конечно спасибо за совет, если бы я хотел придумать какой-то костыль, я бы тоже что-нибудь придумал, но во-первых нам удобно смотреть на значения в окне данных. И во-вторых нужно использовать это значение индикаторного буфера в других индикаторах и советниках, а что-то мне подсказывает, что если сделать буфер для вычислений, то получить его значения через iCustom будет невозможно.

Попробуйте. Из буфера цвета значения вытащить можно. Значит, возможно, и из буфера для вычислений - тоже. Ведь у него есть индекс, т.е. и обратиться к нему, по идее, можно.