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

 

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

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

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

Файлы:
 
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; 
} 
***