Как завершить модификацию индикатора

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
CrystalNet
41
CrystalNet  

Здравствуйте!

Пожалуйста кто нибудь помогите завершить модификацию индикатора Color Levels. Никак не могу создать последнюю линию на панели индикатора.

И второе, как сделать, чтобы линии были как луч, сплошные вправо как показано на рисунке.1 

Файлы:
Alexey Volchanskiy
27265
Alexey Volchanskiy  
CrystalNet:

Здравствуйте!

Пожалуйста кто нибудь помогите завершить модификацию индикатора Color Levels. Никак не могу создать последнюю линию на панели индикатора.

И второе, как сделать, чтобы линии были как луч, сплошные вправо как показано на рисунке. 

Элементарно, значение правого времени задать LONG_MAX. И пример рисования из моего кода

void DrawHorizontalLines()
{
    datetime dt0 = TimeCurrent();
    datetime dt1 = TimeCurrent() + 3600*3;
    string sname = "horiz_line" + IntegerToString(TimeCurrent()); 
    string name = sname + "_2";
    bool res = TrendCreate(0, name, 0, dt0, priceLine[2], dt1, priceLine[2], clrTomato);   // центральная линия
    Print("res=", res);

    name = sname + "_3";
    priceLine[3] = priceLine[2] + priceLine[2] * 0.038 * 0.01;
    TrendCreate(0, name, 0, dt0, priceLine[3], dt1, priceLine[3], clrLime);     // верхняя серединная линия

    name = sname + "_4";
    priceLine[4] = priceLine[2] + priceLine[2] * 0.062 * 0.01;
    TrendCreate(0, name, 0, dt0, priceLine[4], dt1, priceLine[4], clrYellow);   // верхняя линия

    name = sname + "_1";
    priceLine[1] = priceLine[2] - priceLine[2] * 0.038 * 0.01;
    TrendCreate(0, name, 0, dt0, priceLine[1], dt1, priceLine[1], clrLime);     // нижняя серединная линия

    name = sname + "_0";
    priceLine[0] = priceLine[2] - priceLine[2] * 0.062 * 0.01;
    TrendCreate(0, name, 0, dt0, priceLine[0], dt1, priceLine[0], clrYellow); // нижняя линия
}

dt1 тебе надо сделать dt1 = LONG_MAX;

//+------------------------------------------------------------------+ 
//| Создает линию тренда по заданным координатам                     | 
//+------------------------------------------------------------------+ 
bool TrendCreate(const long            chart_ID=0,        // ID графика 
                 const string          name="TrendLine",  // имя линии 
                 const int             sub_window=0,      // номер подокна 
                 datetime              time1=0,           // время первой точки 
                 double                price1=0,          // цена первой точки 
                 datetime              time2=0,           // время второй точки 
                 double                price2=0,          // цена второй точки 
                 const color           clr=clrRed,        // цвет линии 
                 const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии 
                 const int             width=1,           // толщина линии 
                 const bool            back=false,//true,        // на заднем плане 
                 const bool            selection=false,    // выделить для перемещений 
                 const bool            ray_left=false,    // продолжение линии влево 
                 const bool            ray_right=false,   // продолжение линии вправо 
                 const bool            hidden=false,       // скрыт в списке объектов 
                 const long            z_order=0)         // приоритет на нажатие мышью 
{ 
//--- установим координаты точек привязки, если они не заданы 
    //ChangeTrendEmptyPoints(time1,price1,time2,price2); 
//--- сбросим значение ошибки 
    ResetLastError(); 
//--- создадим трендовую линию по заданным координатам 
    if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2)) 
    { 
        Print(__FUNCTION__, ": не удалось создать линию тренда! Код ошибки = ",GetLastError()); 
        return(false); 
    } 
//--- установим цвет линии 
    ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим стиль отображения линии 
    ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- установим толщину линии 
    ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width); 
//--- отобразим на переднем (false) или заднем (true) плане 
    ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- включим (true) или отключим (false) режим перемещения линии мышью 
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект 
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection 
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект 
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE, false);//selection); 
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED, false);//selection); 
//--- включим (true) или отключим (false) режим продолжения отображения линии влево 
    ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left); 
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
    ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
    ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
    ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
    return true; 
} 
***
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий