Название индикатора: Drafter Настройки: TF=1440; // по какому тайм фрейму будем строить структуру индикатора Use_iDeltaPrice=1;// 0 - не использовать индикатор для расчета верхней и нижней точки; 1 - испольховать индикатор для расчета верхней и нижней точки High_Point=1000;// если Use_iDeltaPrice!=0, то берем указанное отклонения для расчета точек по формуле Low_Point=1000;// если Use_iDeltaPrice!=0, то берем указанное отклонения для расчета точек по формуле Variant_Draft=1;// 1-6 Варианты построения линий и фигур Bars=100;// 0 - расчет по всем барам в истории, если >0, то расчитываем только указанное количество баров с TF Use_Horizont_Line=1; 0 - не использовать (отображать) горизонтальную линию для построения, 1 - использовать (отображать) горизантальную линию при построения - линия разделяет тайм врейм на две части, если TF=1440 то линия ставится на 12:00. Use_Price_Info=1; 0 - не выводить информацию в буфер о месте нахождения цены, 1 - выводить информацию в буфер о месте нахождения цены относительно фигуры Логика: Для построения временных отрезков необходимо расчитать точки начала и окончания тайм фрейма по которому будем строить структуру индикатора, на тайм фрейме на котором будет отображатся индикатор, тайм фрейм построения всегда больше тайм врейма отображения, но именно на тайм фрейме отображения происходят расчеты относительно тайм фрейма для построения. Этап 1 Center_Line_Point - запрашиваем цену открытия бара выбранного тайм фрейма Horizont_Line_Point - 1/2 значения времени между Start_Point и Stop_Point (12:00 если расчитываем по дню) Start_Point - запрашиваем время начала построения для выбранного тайм фрейма (текущего дня 00:00 - для дневки) Stop_Point - запрашиваем время окончания построения для выбранного тайм фрейма (следующего за текущем днем 00:00 - для дневки) Если Use_iDeltaPrice==1, то запрашиваем DeltaPrice с индикатора, DeltaPrice_High_Point=Center_Line_Point+DeltaPrice/Point, DeltaPrice_Low_Point=Center_Line_Point-DeltaPrice/Point Если Use_iDeltaPrice!=1, DeltaPrice_High_Point=Center_Line_Point+High_Point*Point, DeltaPrice_Low_Point=Center_Line_Point-Low_Point*Point Этап 2 Если Variant_Draft=1 то рисуем линии по следующим координатам: Line_Star_Up (Start_Point:Center_Line_Point ; StopPoint:DeltaPrice_High_Point) (Цвет_1) Line_Star_Down (Start_Point:Center_Line_Point ; StopPoint:DeltaPrice_Low_Point) (Цвет_2) Line_Stop_Up (Stop_Point:Center_Line_Point ; StartPoint:DeltaPrice_High_Point) (Цвет_1) Line_Stop_Down (Stop_Point:Center_Line_Point ; StartPoint:DeltaPrice_Low_Point) (Цвет_2) Center_Line (Start_Point:Center_Line_Point ; Stop_Point:Center_Line_Point) (Цвет_3) Если Use_Horizont_Line=1, то рисуем Horizont_Line (Horizont_Line_Point:DeltaPrice_Low_Point ; Horizont_Line_Point:DeltaPrice_High_Point) (Цвет_3) Если Variant_Draft=2 то рисуем линии по следующим координатам: Line_Star_Down (Start_Point:DeltaPrice_Low_Point ; StopPoint:DeltaPrice_High_Point) (Цвет_2) Line_Stop_Up (Stop_Point:DeltaPrice_High_Point ; StartPoint:DeltaPrice_Low_Point) (Цвет_1) Center_Line (Start_Point:Center_Line_Point ; Stop_Point:Center_Line_Point) (Цвет_3) Если Use_Horizont_Line=1, то рисуем Horizont_Line (Horizont_Line_Point:DeltaPrice_Low_Point ; Horizont_Line_Point:DeltaPrice_High_Point) (Цвет_3) Если Variant_Draft=3 то рисуем трехугольники по следующим координатам: Triangle_Up (Start_Point:Center_Line_Point ; StopPoint:DeltaPrice_High_Point ; Horizont_Line_Point:Center_Line_Point) (Цвет_1) Triangle_Down (Stop_Point:Center_Line_Point ; StopPoint:DeltaPrice_Low_Point ; Horizont_Line_Point:Center_Line_Point) (Цвет_2) Center_Line (Start_Point:Center_Line_Point ; Stop_Point:Center_Line_Point) (Цвет_3) Если Use_Horizont_Line=1, то рисуем Horizont_Line (Horizont_Line_Point:DeltaPrice_Low_Point ; Horizont_Line_Point:DeltaPrice_High_Point) (Цвет_3) Если Use_Price_Info==1 Buffer_A=0 Если цена открытия вписывается в Triangle_Up, то Buffer_A=1 Если цена открытия вписывается в Triangle_Down, то Buffer_A=2 Если Variant_Draft=4 то рисуем трехугольники по следующим координатам: Triangle_Up (Start_Point:Center_Line_Point ; StopPoint:DeltaPrice_High_Point ; StopPoint:Center_Line_Point) (Цвет_1) Triangle_Down (Stop_Point:Center_Line_Point ; StopPoint:DeltaPrice_Low_Point ; StopPoint:Center_Line_Point) (Цвет_2) Center_Line (Start_Point:Center_Line_Point ; Stop_Point:Center_Line_Point) (Цвет_3) Если Use_Horizont_Line=1, то рисуем Horizont_Line (Horizont_Line_Point:DeltaPrice_Low_Point ; Horizont_Line_Point:DeltaPrice_High_Point) (Цвет_3) Если Use_Price_Info==1 Buffer_A=0 Если цена открытия вписывается в Triangle_Up, то Buffer_A=1 Если цена открытия вписывается в Triangle_Down, то Buffer_A=2 Если Variant_Draft=5 то рисуем трехугольники по следующим координатам: Triangle_Up (Start_Point:Center_Line_Point ; Start_Point:DeltaPrice_Low_Point ; StopPoint:DeltaPrice_High_Point) (Цвет_1) Triangle_Down (Stop_Point:Center_Line_Point ; Start_Point:DeltaPrice_High_Point ; StopPoint:DeltaPrice_Low_Point) (Цвет_2) Center_Line (Start_Point:Center_Line_Point ; Stop_Point:Center_Line_Point) (Цвет_3) Если Use_Horizont_Line=1, то рисуем Horizont_Line (Horizont_Line_Point:DeltaPrice_Low_Point ; Horizont_Line_Point:DeltaPrice_High_Point) (Цвет_3) Если Use_Price_Info==1 Buffer_A=0 Если цена открытия вписывается в Triangle_Up, то Buffer_A=1 Если цена открытия вписывается в Triangle_Down, то Buffer_A=2 Если Variant_Draft=6 то рисуем трехугольники по следующим координатам: Triangle_Up_Left (Start_Point:Center_Line_Point ; Start_Point:DeltaPrice_High_Point ; Horizont_Line_Point:DeltaPrice_High_Point) (Цвет_1) Triangle_Down_Left (Start_Point:Center_Line_Point ; Start_Point:DeltaPrice_Low_Point ; Horizont_Line_Point:DeltaPrice_Low_Point) (Цвет_2) Triangle_Up_Right (Horizont_Line_Point:DeltaPrice_High_Point ; Stop_Point:DeltaPrice_High_Point ; StopPoint:Center_Line_Point) (Цвет_2) Triangle_Down_Right (Horizont_Line_Point:DeltaPrice_Low_Point ; Stop_Point:DeltaPrice_Low_Point ; StopPoint:Center_Line_Point) (Цвет_1) Center_Line (Start_Point:Center_Line_Point ; Stop_Point:Center_Line_Point) (Цвет_3) Если Use_Horizont_Line=1, то рисуем Horizont_Line (Horizont_Line_Point:DeltaPrice_Low_Point ; Horizont_Line_Point:DeltaPrice_High_Point) (Цвет_3) Если Use_Price_Info==1 Buffer_A=0 Если цена открытия вписывается в Triangle_Up_Left, то Buffer_A=1 Если цена открытия вписывается в Triangle_Down_Left, то Buffer_A=2 Если цена открытия вписывается в Triangle_Up_Right, то Buffer_A=1 Если цена открытия вписывается в Triangle_Down_Right, то Buffer_A=2