Напишу любую программу на mql4 - страница 2

 
red_r2005 писал(а) >>
Да нет - это совсем не то....цены закрытия должны соединяться трендовой линией....а МА не подходит


в этом есть смысл. трендовая линия может показать направление или стать линией ПС. только как вы его (основное направление) выделять собираетесь из всех линий, которые будут построены?

 
Все проще. Человек, видимо, хочет видеть эти линии на всех ТФ.
 
granit77 >>:
Все проще. Человек, видимо, хочет видеть эти линии на всех ТФ.


Это понятно. Вопрос как он хочет их видеть, в виде лучей или просто в виде соединяющих линий? Тода зачем использовать именно трендовые линии?
 
Вот здесь я использовал трендовые линии - рисовал вручную, красные - цены закрытия дней, синие - недельные закрытия
 
mql-programmer >>:


Это понятно. Вопрос как он хочет их видеть, в виде лучей или просто в виде соединяющих линий? Тода зачем использовать именно трендовые линии?

Это по ТС Гурова...очень полезная штука для долгосрочек

 
Есть индикатор сессий......можно сделать на основе его, но он рисует квадраты, а как их переделать в линии?
#property indicator_chart_window

//------- Внешние параметры индикатора -------------------------------
extern int NumberOfDays = 50; // Количество дней
extern string AsiaBegin = "01:00"; // Открытие азиатской сессии
extern string AsiaEnd = "10:00"; // Закрытие азиатской сессии
extern color AsiaColor = Goldenrod; // Цвет азиатской сессии
extern string EurBegin = "07:00"; // Открытие европейской сессии
extern string EurEnd = "16:00"; // Закрытие европейской сессии
extern color EurColor = Tan; // Цвет европейской сессии
extern string USABegin = "14:00"; // Открытие американской сессии
extern string USAEnd = "23:00"; // Закрытие американской сессии
extern color USAColor = PaleGreen; // Цвет американской сессии


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void init() {
DeleteObjects();
for (int i=0; i<NumberOfDays; i++) {
CreateObjects("AS"+i, AsiaColor);
CreateObjects("EU"+i, EurColor);
CreateObjects("US"+i, USAColor);
}
Comment("");
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
DeleteObjects();
Comment("");
}

//+------------------------------------------------------------------+
//| Создание объектов индикатора |
//| Параметры: |
//| no - наименование объекта |
//| cl - цвет объекта |
//+------------------------------------------------------------------+
void CreateObjects(string no, color cl) {
ObjectCreate(no, OBJ_RECTANGLE, 0, 0,0, 0,0);
ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(no, OBJPROP_COLOR, cl);
ObjectSet(no, OBJPROP_BACK, True);
}

//+------------------------------------------------------------------+
//| Удаление объектов индикатора |
//+------------------------------------------------------------------+
void DeleteObjects() {
for (int i=0; i<NumberOfDays; i++) {
ObjectDelete("AS"+i);
ObjectDelete("EU"+i);
ObjectDelete("US"+i);
}
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
void start() {
datetime dt=CurTime();

for (int i=0; i<NumberOfDays; i++) {
DrawObjects(dt, "AS"+i, AsiaBegin, AsiaEnd);
DrawObjects(dt, "EU"+i, EurBegin, EurEnd);
DrawObjects(dt, "US"+i, USABegin, USAEnd);
dt=decDateTradeDay(dt);
while (TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);
}
}

//+------------------------------------------------------------------+
//| Прорисовка объектов на графике |
//| Параметры: |
//| dt - дата торгового дня |
//| no - наименование объекта |
//| tb - время начала сессии |
//| te - время окончания сессии |
//+------------------------------------------------------------------+
void DrawObjects(datetime dt, string no, string tb, string te) {
datetime t1, t2;
double p1, p2;
int b1, b2;

t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
b1=iBarShift(NULL, 0, t1);
b2=iBarShift(NULL, 0, t2);
p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
p2=Low [Lowest (NULL, 0, MODE_LOW, b1-b2, b2)];
ObjectSet(no, OBJPROP_TIME1, t1);
ObjectSet(no, OBJPROP_PRICE1, p1);
ObjectSet(no, OBJPROP_TIME2, t2);
ObjectSet(no, OBJPROP_PRICE2, p2);
}

//+------------------------------------------------------------------+
//| Уменьшение даты на один торговый день |
//| Параметры: |
//| dt - дата торгового дня |
//+------------------------------------------------------------------+
datetime decDateTradeDay (datetime dt) {
int ty=TimeYear(dt);
int tm=TimeMonth(dt);
int td=TimeDay(dt);
int th=TimeHour(dt);
int ti=TimeMinute(dt);

td--;
if (td==0) {
tm--;
if (tm==0) {
ty--;
tm=12;
}
if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31;
if (tm==2) if (MathMod(ty, 4)==0) td=29; else td=28;
if (tm==4 || tm==6 || tm==9 || tm==11) td=30;
}
return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));
}
//+------------------------------------------------------------------+
 
red_r2005 писал(а) >>
Есть индикатор сессий......

не делайте больше так... - не распыляйтесь по разным веткам. выберите одну ветку основной, а в остальных оставьте ссылки на "основную" тему. в "основной" ветке и продолжате тему.

 
DDFedor >>:

не делайте больше так... - не распыляйтесь по разным веткам. выберите одну ветку основной, а в остальных оставьте ссылки на "основную" тему.

ОК

 
Держите. Так пойдет?
Файлы:
line.mq4  2 kb
 
Спасибо....Похоже то что надо.....но в теле я не вижу никаких переменных типа dt0 и dt-1 или так и должно быть?
Причина обращения: