Алгоритм:
1. Определить, в какой именно день должна начаться линия: для понедельника - в четверг, для вторника - в пятницу, для среды - в понедельник, для четверга - во вторник, для тяпницы - догадайтесь с трех раз.
2. Построить линию: 1-я точка - в начале выявленного дня (п.1) , 2-я - сдвинута на 48 часов вправо, либо на 0-м баре, думаю понятно, на каком из них:)
я не понял какой объект рисуется
если это линия, то достаточно 2 координат, а в примере фигурирует три даты, одна в прошлом, одна в будущем, одна сейчас
я не понял какой объект рисуется
если это линия, то достаточно 2 координат, а в примере фигурирует три даты, одна в прошлом, одна в будущем, одна сейчас
Это уже - не предмет обсуждения:) Угол какой-то рисуется, ну и ладненько...
должен рисовать линию с момента открытия торгового дня и на 48 часов вперед.
void start()
{
datetime dt2=TimeCurrent();
datetime dt3=TimeCurrent()+24*60*60;
datetime dt1;
if (TimeDayOfWeek(dt2)==1){dt1-=72*60*60;}
else
dt1=TimeCurrent()-24*60*60;
попробую так. Только похоже, перезапускать индикатор в понедельник, чтобы он схавал перед циклом, какой день нынче.
Для MIDORUM: С момента открытия торгового дня будет нарисована линия в будущее. Длина линии - 48 торговых часов.
dt1 используется для определения торгового дня, в котором потом уже, внутри функции берется нужное время.
dt2 - день перед dt1, прошлый торговый день(даные из него используются для расчета), т.е. все ОК, пока не наступает понедельник, и dt2 определяется как воскресенье. А надо бы - пятницу.
dt3 - завтрашний день.
Только похоже, перезапускать индикатор в понедельник, чтобы он схавал перед циклом, какой день нынче.
int DayOfWeek( ) Возвращает порядковый номер дня недели (воскресенье-0,1,2,3,4,5,6) последнего известного времени сервера. Замечание: при тестировании последнее известное время сервера моделируется. Пример: // не работает в выходные дни. if(DayOfWeek()==0 || DayOfWeek()==6) return(0);
Для MIDORUM: С момента открытия торгового дня будет нарисована линия в будущее. Длина линии - 48 торговых часов.
dt1 используется для определения торгового дня, в котором потом уже, внутри функции берется нужное время.
dt2 - день перед dt1, прошлый торговый день(даные из него используются для расчета), т.е. все ОК, пока не наступает понедельник, и dt2 определяется как воскресенье. А надо бы - пятницу.
dt3 - завтрашний день.
может так?
//+------------------------------------------------------------------+ //| for_Katarho.mq4 | //| | //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ datetime dt1, dt2, dt3; int start() { dt2=TimeCurrent();//сегодня (старайтесь получать время один раз и от него все считать) dt3=dt2+24*60*60;//завтра if(DayOfWeek()==1)//если сегодня понедельник dt1=dt2-72*60*60;//пятница else dt1=dt2-24*60*60;//вчера //вызов функции для расчета линии return(0); } //+------------------------------------------------------------------+
Всем спасибо!!! О результатах напишу в понедельник! :)
Всем спасибо!!! О результатах напишу в понедельник! :)
Не за что, потому как все неправильно Вам подсказали. Коль скоро нужен предыдущий торговый день:
Bar1=iBarShift(NULL,1440,dt1);
dt2=iTime(NULL,1440,Bar1+1);
Ну, а с dt3 все понятно.
PS Если историю отображать не надо, лучше исключить третью точку и просто рисовать 2 луча.
Кстати, в этом случае: dt2=iTime(NULL,1440,1); поскольку Bar1=0.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
void start()
{
datetime dt2=TimeCurrent();
datetime dt1=TimeCurrent()-24*60*60;
datetime dt3=TimeCurrent()+24*60*60;
for (int i=0; i<NumberOfDays; i++)
{
DrawObjects_Angle(dt1,dt2,dt3,"Angle2"+angleFIB2+i, ABegin, angleFIB2, AEnd);
dt1-=24*60*60;
dt2-=24*60*60;
dt3-=24*60*60;
while (TimeDayOfWeek(dt1)<1 || TimeDayOfWeek(dt1)>5) {dt1-=24*60*60;}
while (TimeDayOfWeek(dt2)<1 || TimeDayOfWeek(dt2)>5) {dt2-=24*60*60;}
while (TimeDayOfWeek(dt3)<1 || TimeDayOfWeek(dt3)>5) dt3-=24*60*60;
}
}
должен рисовать линию с момента открытия торгового дня и на 48 часов вперед.
В понедельник не рисует.
Кто поможет? Что-то башка уже не варит совсем.