Как нарисовать объект вертикальная линия только в окне графика? - страница 2

 
Ihor Herasko #:

Еще одно кардинальное различие между МТ4 и МТ5 в копилку ))

В МТ4 у вертикальной линии нет такого свойства, а в МТ5 - есть. Также придется учитывать в кроссплатформенных разработках.

В коде свойство присутствует, компилируется, но не работает.

 
Alexey Viktorov #:

В коде свойство присутствует, компилируется, но не работает.

Так и я об этом - будут разные результаты.

 
Artyom Trishkin #:

Убрать у линии свойство "Луч":


Спасибо ) как раз сейчас рисую эти линии и подумала, что можно испльзовать это свойство. Но коллеги выше пишут, что в MT4  не работает :(

Остается только использовать трендовую линию.

 

Елена, не нужно пересчитывать. Логика простая как три копейки.

Если объект (имя линии) не существует, то создаём линию с этим именем и устанавливаем её свойства. Линия отрисовалась. На следующем тике советник обнаружит, что линия с таким именем уже существует и приказ отрисовать эту же линию заново будет проигнорирован. Вот пример подпрограммы, которая у меня рисует линию тренда.

// ============================ CreateLine() ======================================================
// Процедура создаёт линию тренда 
// ------------------------------
void CreateLine(string Name,int Okno,datetime LeftTime,double LeftPrice,datetime RightTime,double RightPrice,color LineColor){
        if(ObjectFind(Name)<0){
                if(!ObjectCreate(Name,OBJ_TREND,Okno,LeftTime,LeftPrice,RightTime,RightPrice)){
                        Print("Ошибка № ",GetLastError()," при создании линии ",Name);
                }
                else{
                        //--- включим (true) или отключим (false) режим продолжения отображения линии вправо (луч)
                        ObjectSet(Name,OBJPROP_RAY_RIGHT,false); 
                        ObjectSet(Name,OBJPROP_COLOR,LineColor);
                        ObjectSet(Name,OBJPROP_WIDTH,3);
                        ChartRedraw();
                }
        }
}
Причина обращения: