Как получить значения старых точек привязок графического объекта?

 

Помогите советом с индикатором:

Индикатор создает графический объект(название"NEW",,,время точки привязки, цена точки привязки,,,).

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

и создать новый графический объект(название"NEW",,,время точки привязки, цена точки привязки,,,).

Как получить значения старых точек привязок графического объекта для сравнения с новыми точками привязок?

 
xopm:

Помогите советом с индикатором:

Индикатор создает графический объект(название"NEW",,,время точки привязки, цена точки привязки,,,).

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

и создать новый графический объект(название"NEW",,,время точки привязки, цена точки привязки,,,).

Как получить значения старых точек привязок графического объекта для сравнения с новыми точками привязок?

Перед перемещением графического объекта сохранить его координаты в переменные. Потом эти переменные сравнить в новыми.

 
xopm:

Я учусь. Как сохранить?

Допустим я объявляю переменную -

        double названиеOLD(цена точки привязки);

В теле программы присваиваю название цени текущей точки привязки как OLD - 

        название(цена точки привязки)=названиеOLD(цена точки привязки);

И с наступлением нового тика, когда цена точки привязки изменилась я получу одновременно разные значения точек -

       Print(названиеOLD(цена точки привязки),название(цена точки привязки));

Рассмотрите пример OBJ_RECTANGLE. Вот этот участок кода:

//--- перерисуем график и подождем 1 секунду 
   ChartRedraw(); 
   Sleep(1000); 
//--- теперь будем перемещать точки привязки прямоугольника 
//--- счетчик цикла 
   int h_steps=bars/2; 
//--- перемещаем точки привязки 
   for(int i=0;i<h_steps;i++) 
     { 
      //--- возьмем следующие значения 
      if(d1<bars-1) 
         d1+=1; 
      if(d2>1) 
         d2-=1; 
      //--- сдвигаем точки 
      if(!RectanglePointChange(0,InpName,0,date[d1],price[p1])) 
         return; 
      if(!RectanglePointChange(0,InpName,1,date[d2],price[p2])) 
         return; 
      //--- проверим факт принудительного завершения скрипта 
      if(IsStopped()) 
         return; 
      //--- перерисуем график 
      ChartRedraw(); 
      // задержка в 0.05 секунды 
      Sleep(50); 
     } 

До RectanglePointChange Вам объект имеет ещё старые координаты, а в фукнцию RectanglePointChange отсылаются уже новые координаты. Старые нужно сохранить.

 
Vladimir Karputov:

Рассмотрите пример OBJ_RECTANGLE. Вот этот участок кода:

До RectanglePointChange Вам объект имеет ещё старые координаты, а в фукнцию RectanglePointChange отсылаются уже новые координаты. Старые нужно сохранить.

Можно еще сохранять в глобальные переменные терминала, тогда и при перезапуске они сохранятся

 
Alexey Volchanskiy:

Можно еще сохранять в глобальные переменные терминала, тогда и при перезапуске они сохранятся

Спасибо за совет. Помогло.

GlobalVariableSet()

GlobalVariableGet()

 
xopm:

Спасибо за совет. Помогло.

GlobalVariableSet()

GlobalVariableGet()

Да, оно, учтите, хранятся только 30 дней, если к ним не обращаться.

 
Alexey Volchanskiy:

Да, оно, учтите, хранятся только 30 дней, если к ним не обращаться.

Дв лучше уже тогда в файлы писать все... Как по мне, глобальные переменные еще тот костыль...

 
Dmitiry Ananiev:

Дв лучше уже тогда в файлы писать все... Как по мне, глобальные переменные еще тот костыль...

На 100% согласен. С файлами более гибко работать можно. Те-же массивы и структуры, в файлах можно гонять почти как угодно.

 
Konstantin Nikitin:

На 100% согласен. С файлами более гибко работать можно. Те-же массивы и структуры, в файлах можно гонять почти как угодно.

Да почти без разницы. Единственно, в файлы можно записать любые данные, а в глобальные переменные терминала - только double/

 

Так понимаю, что время чтения/записи не критично в данном случае - тогда я бы использовал запись в файл.

Потом, если понадобиться, можно чем угодно прочитать.

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