Функции ChartRedraw() и WindowRedraw() - в чем разница и в каком случае ими пользоваться?

 

Доброго времени суток! Вот недавно захотел создать на графике прямоугольную рамочку, и чтобы затем она следовала за ценой, то есть куда цена Бид или Аск туда и рамочка. Хотел сделать это с использованием функции ChartRedraw() , но к сожалению никак не получилось ее применить, так как оказалось что я не понял саму суть ее работы и в каком случае нужно ей пользоваться. В справке написано что функция принудительно перерисовывает график и обычно применяется после изменения параметров объекта. Однако как я не старался, и куда я только эту функцию не пихал (в коде) - толку от нее никакого я даже не заметил. То же самое и с функцией WindowRedraw(). В итоге я добился своей цели - и моя рамка следовала за ценой, но - без этих функций! Пожалуйста, кому не лень, объясните пожалуйста (на понятном человеческом языке) - для чего нужны эти две функции и в каком случае ими можно пользоваться? В интернете и на данном форуме ответов я не нашел.. P.S. Мог бы и не спрашивать, но любобытство так и распирает. )

----------------------------------------------------------------------------------- Фрагмент кода -------------------------------------------------------------------------------------------+

datetime Time_1=TimeCurrent()+100000;
datetime Time_2=TimeCurrent()-100000;
double Price_1=Ask+40*Point;
double Price_2=Bid-30*Point;
ChartRedraw(0);
 
Comment(Price_1,"\n",Price_2);
  
//--- Создание объекта Dot_A.
ObjectCreate("Dot_A",OBJ_RECTANGLE,0,Time_1,Price_1,Time_2,Price_2);
//--- установим цвет прямоугольника
ObjectSet("Dot_A",OBJPROP_COLOR,Red);
//--- установим стиль линий прямоугольника
ObjectSet("Dot_A",OBJPROP_STYLE,STYLE_SOLID);
//--- установим толщину линий прямоугольника
ObjectSet("Dot_A",OBJPROP_WIDTH,1);
//--- включим (true) или отключим (false) режим заливки прямоугольника
ObjectSet("Dot_A",OBJPROP_FILL,false);
//--- отобразим на переднем (false) или заднем (true) плане
ObjectSet("Dot_A",OBJPROP_BACK,false);                                     
//--- установим видимость для таймфреймов            
ObjectSet("Dot_A",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
 
Window для текущего, Chart для любого (по умолчанию для текущего, но можно указать ID)
 
Yuriy Vins:

Доброго времени суток! Вот недавно захотел создать на графике прямоугольную рамочку, и чтобы затем она следовала за ценой, то есть куда цена Бид или Аск туда и рамочка. Хотел сделать это с использованием функции ChartRedraw() , но к сожалению никак не получилось ее применить, так как оказалось что я не понял саму суть ее работы и в каком случае нужно ей пользоваться. В справке написано что функция принудительно перерисовывает график и обычно применяется после изменения параметров объекта. Однако как я не старался, и куда я только эту функцию не пихал (в коде) - толку от нее никакого я даже не заметил. То же самое и с функцией WindowRedraw(). В итоге я добился своей цели - и моя рамка следовала за ценой, но - без этих функций! Пожалуйста, кому не лень, объясните пожалуйста (на понятном человеческом языке) - для чего нужны эти две функции и в каком случае ими можно пользоваться? В интернете и на данном форуме ответов я не нашел.. P.S. Мог бы и не спрашивать, но любобытство так и распирает. )

----------------------------------------------------------------------------------- Фрагмент кода -------------------------------------------------------------------------------------------+

Чтобы увидеть как работает ChartRedraw(), одной "прямоугольной рамочки" на графике не достаточно. Создайте ну например 300 "рамочек" и на каждом тике что-нибудь с ними делайте, вот тогда увидите разницу.

p.s. WindowRedraw() это вообще из mql4 (Вы кстати создали тему в пятёрочной ветке).

 
Igor Zakharov:
Window для текущего, Chart для любого (по умолчанию для текущего, но можно указать ID)

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