Доработка ботов (советников, индикаторов)

Статус
Закрыто для дальнейших ответов.

AlexeyVik

Программист mql4 mql5
Ты сейчас станешь ругаться на метаквотов, но приоритет операции || выше, чем у &&. Скобки придется поставить.
Перефразировав старую поговорку можно сказать так. Скажи мне свой ник и я скажу кто ты.
Я сейчас обращался к метаквотам с проблемой по объекту Lable в новом едиторе, ну так всё с примерами и скринами разъяснили. Никаких вопросов не осталось. А хамят они видимо тем кто хамит им.

Каждый относится к людям так, как он хочет чтобы к нему относились.
 

eevviill

Заблокирован
Код:
if(Day()==23 && (Hour()==15 && Minute()>=30 ||
 Hour()==16 && Minute()<30)) return;

Но ведь тогда в каждом месяце будет пауза 23-го с 15-30 до 16-30?

Хотелось бы указывать конкретные даты, например:

07 Июля 2013 с 22-00 до 08 Июля 2013 до 09-00.
Тогда добавь ещё
[IMPORTANT]Year() и Mounth()[/IMPORTANT]
 

qqmber

Почетный гражданин
Код:
if(Day()==23 && (Hour()==15 && Minute()>=30 ||
 Hour()==16 && Minute()<30)) return;

Но ведь тогда в каждом месяце будет пауза 23-го с 15-30 до 16-30?

Хотелось бы указывать конкретные даты, например:

07 Июля 2013 с 22-00 до 08 Июля 2013 до 09-00.

В этом случае удобнее получить границы в абсолютных секундах через StrToTime() и проверять TimeCurrent().
 

Sergey55555555

Почетный гражданин
[IMPORTANT]if(DayOfWeek()==5 && ( (Hour()==15 && Minute()>=30) || (Hour()==16 && Minute()<30) )) return;[/IMPORTANT]
В новом билде, который выйдет в понедельник, приоритет поменяют.

Что-то не работает не этот, не этот вариант:

[IMPORTANT]
int start()
{
if(Day()==23 && (Hour()==15 && Minute()>=30 ||
Hour()==16 && Minute()<30)) return;[/IMPORTANT]

Компилируется без проблем, а торговлю не запрещает.
 

qqmber

Почетный гражданин
Что-то не работает не этот, не этот вариант:

Код:
int start()
  {
if(Day()==23 && (Hour()==15 && Minute()>=30 ||
 Hour()==16 && Minute()<30)) return;

Компилируется без проблем, а торговлю не запрещает.
Ты мне за что спасибку кинул, если даже не стал смотреть, как стоят скобки?
 

qqmber

Почетный гражданин
[IMPORTANT]((Hour()==1 && Minute()>=30) || (Hour()==23 && Minute()<30))) [/IMPORTANT]

Я попробовал оба варианта.
Доп. скобки перед Hour и после Minute()<30

Ты словами лучше скажи, чего пытаешься добиться. Вот это твое выражение, если лишнюю правую скобку убрать, будет истиной между 23:00 - 23:29 и 01:30 - 01:59. Если это if() return; то только в это время и будет стопориться торговля. Этого хотел?
 

Sergey55555555

Почетный гражданин
Ты словами лучше скажи, чего пытаешься добиться. Вот это твое выражение, если лишнюю правую скобку убрать, будет истиной между 23:00 - 23:29 и 01:30 - 01:59. Если это if() return; то только в это время и будет стопориться торговля. Этого хотел?

Ок.
Я хочу заблокировать торговлю в заранее
указанные часы определённых дней из истории (NFP, ФРС, Драги).
Дни и часы я возьму из эконом календаря.

Цель:
Провести оптимизацию без этих "шипов".
 

qqmber

Почетный гражданин
Ок.
Я хочу заблокировать торговлю в заранее
указанные часы определённых дней из истории (NFP, ФРС, Драги).
Дни и часы я возьму из эконом календаря.

Цель:
Провести оптимизацию без этих "шипов".
Так понятно?
Код:
extern string halt="2013.07.07 22:00";
extern string go="2013.07.08 09:00";
datetime timehalt;
datetime timego;

int init() {
timehalt=StrToTime(halt);
timego=StrToTime(go);
}
int start() {
if(TimeCurrent()>timehalt && TimeCurrent()<timego) return;
//...
}
Это для одного события.
 

Sergey55555555

Почетный гражданин
Так понятно?
Код:
extern string halt="2013.07.07 22:00";
extern string go="2013.07.08 09:00";
datetime timehalt;
datetime timego;

int init() {
timehalt=StrToTime(halt);
timego=StrToTime(go);
}
int start() {
if(TimeCurrent()>timehalt && TimeCurrent()<timego) return;
//...
}
Это для одного события.

Да, я уже проверил - работает:rolf:

Для нескольких просто добавляю строчки и меняю даты?
Код:
extern string halt="2013.07.07 22:00";
extern string go="2013.07.08 09:00";
 

AlexeyVik

Программист mql4 mql5
Да, я уже проверил - работает:rolf:

Для нескольких просто добавляю строчки и меняю даты?
Код:
extern string halt="2013.07.07 22:00";
extern string go="2013.07.08 09:00";
Но если внимательно прочесть справку http://docs.mql4.com/ru/convert/StrToTime то получается что добавлять отдельную строку на каждое событие не надо, если эти события происходят регулярно по пятницам, например.
Если StrToTime("17:35"); // возврат текущей даты с указанным временем
То TimeDayOfWeek(StrToTime("17:35")); // Будет сегодняшний день недели
И соответственно:
if(TimeDayOfWeek(StrToTime("17:35")) == 5 && TimeCurrent() > StrToTime("17:35"))
Будет означать: если сегодня пятница и текущее время больше 17:35
Дальше делай выводы кто дебил метаквоты или тот кто их так называет...
 

Sergey55555555

Почетный гражданин
Но если внимательно прочесть справку http://docs.mql4.com/ru/convert/StrToTime то получается что добавлять отдельную строку на каждое событие не надо, если эти события происходят регулярно по пятницам

Не регулярно, и не только по пятницам.
Драги выступает когда угодно, NFP раз в месяц - в первую пятницу,
ФРС и ставки ЦБ в разные дни.
Для будущих событий есть ньюс-фильтр, мне надо именно по истории.
 

qqmber

Почетный гражданин
Не регулярно, и не только по пятницам.
Драги выступает когда угодно, NFP раз в месяц - в первую пятницу,
ФРС и ставки ЦБ в разные дни.
Для будущих событий есть ньюс-фильтр, мне надо именно по истории.
Ну ты себе нетривиальную задачу поставил. Импортировать рабочий календарь Драги и Бернанки и проверять каждый раз, не идет ли кто к трибуне :)
Можно, но не элементарно.
 

Sergey55555555

Почетный гражданин
Ну ты себе нетривиальную задачу поставил. Импортировать рабочий календарь Драги и Бернанки и проверять каждый раз, не идет ли кто к трибуне :)
Можно, но не элементарно.

:D
Будущие выступления известны заранее в открытом доступе
_http://www.myfxbook.com/forex-economic-calendar?oid=42567
и легко блокируются ньюс-фильтрами:)

А прошедшие там тоже есть, и уже с отфиксированными датами и временем
 

AlexeyVik

Программист mql4 mql5
Не регулярно, и не только по пятницам.
Драги выступает когда угодно, NFP раз в месяц - в первую пятницу,
ФРС и ставки ЦБ в разные дни.
Для будущих событий есть ньюс-фильтр, мне надо именно по истории.
Я тебе привёл пример как уйти от множества лишних внешних параметров.
Пример второй: Если нужно определить только первую пятницу, то...
если пятница и число месяца, TimeDay(StrToTime("17:35")) < 8, значит это пятница первой недели.
 
Статус
Закрыто для дальнейших ответов.

Отслеживают (859) Посмотреть

Верх