Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 557

 
GSB:

С принципами возражений нет, но человек хочет советник прогнать на тестере, поэтому ваши варианты ему не подходят.

belck Воспользуйтесь моим вариантом, он будет работать и в реале и в тестере, но пока не сделали функцию для автоматического учета перехода на зимнее-летнее время, определите время перехода на этот год типа

С марта 2013 и до ноября 2014 будет работать и тестироваться корректно. Сдвиг поставьте соответственный своему брокеру


Не стану я искать где написано, что время в тестере генерируется, ты и сам это знаешь. А вот в справке конкретно написано что

 var2=StrToTime("17:35");      // возврат текущей даты с указанным временем

Тогда как о StringToTime() нет такой конкретики.

Единственное что надо учитывать, это время по тестеру (серверу ДЦ). И соответственно при тестировании надо иметь историю такого-же типа счёта на котором будет работать этот сов.

 
AlexeyVik:


Не стану я искать где написано, что время в тестере генерируется, ты и сам это знаешь. А вот в справке конкретно написано что

Тогда как о StringToTime() нет такой конкретики.

Единственное что надо учитывать, это время по тестеру (серверу ДЦ). И соответственно при тестировании надо иметь историю такого-же типа счёта на котором будет работать этот сов.


Алексей, да у меня нет возражений по поводы работы функции StrToTime() Вопрос то в другом. Она вернет правильное время, но 21 час сегодня это 22 часа до 9 марта. Поэтому у меня давно написаны функции корректно учитывающие DST брокера.

Без этого если эксперт работает по какому то расписанию во времени тестировать невозможно. Все же сдвигается на час. В реале нет проблем, а вот с тестером есть. Я давно прошу разработчиков включить функцию расчета сдвига по времени. Они сделали TimeGMT(), но она привязано к локальному времени и часовому поясу компа. А надо иметь сдвиг бррокера. И их DST отличаются от нашего. Брокеры переходят первое воскресенье ноября второе воскресенье марта а Россия (если будет..) последнее воскресенье октября последнее воскресенье марта. Так что пока надо свои функции писать.

 
GSB:

С принципами возражений нет, но человек хочет советник прогнать на тестере, поэтому ваши варианты ему не подходят.

belck Воспользуйтесь моим вариантом, он будет работать и в реале и в тестере, но пока не сделали функцию для автоматического учета перехода на зимнее-летнее время, определите время перехода на этот год типа

С марта 2013 и до ноября 2014 будет работать и тестироваться корректно. Сдвиг поставьте соответственный своему брокеру

хорошо. спасибо. о результате сообщу.
 

Надо сверить на графиках < h4 время последнего бара текущей пятницы и пятницы до 8 марта. Если эти времена совпадают то hrd величина постоянная и не зависит от перехода на зимнее - летнее время и тогда все совсем просто и будет корректно работать в том числе и при тестировании независимо от переходов зима-лето

datetime tc=TimeCurrent();
datetime te=StrToTime("20:45");                    //   время конца сессии по котировкам брокера минус 15 минут или сколько вам надо до конца сессии
if(TimeDayOfWeek(tc)==5 && tc>te) {  CloseAll(); } //   закрытие пятницу позже указанного времени 

а если эти два время разные (отличаются на 1 час) тогда как я писал раньше.

 
GSB:

Надо сверить на графике М1 время последнего бара текущей пятницы и пятницы до 8 марта. Если эти времена совпадают то hrd величина постоянная и не зависит от перехода на зимнее - летнее время и тогда все совсем просто и будет корректно работать в том числе и при тестировании независимо от переходов зима-лето

а если эти два время разные (отличаются на 1 час) тогда как я писал раньше.


А почему в коде прописано время брокера минут 15 минут,то есть вы хотите сказать,что за 15 минут до окончания сессии начинается перекладка портфелей?Я конечно замечал на мт4 у фреша такие моменты и уровни хорошие видел по некоторым валютным парам.
 

я к примеру, хочу закрывать сделки, хоть и за 1 минуту до окончания сессии, из - за того, что когда остается ордер на выходные, то бывает такое, что в понедельник цена открытия может скакнуть в сторону и на 100, или на 200, или того больше пунктов. а это резкое перемещение, не всегда может быть мне на руку.

еще не тестировал. сегодня по позже по тестирую.

 
Серверное время, это время брокера? если брокер находится в Росии, а я в Украине, то у него переходов на летнее или зимнее время нет, получается? то и у меня по серверному времени нет перехода, тока по локальному времени? я запутался.
 
GSB:

Ну это в тестере и не должно работать.

Функции выдают исходя из текущего времени, а то что я написал выше будет работать поскольку TimeCurrent() и TimeDayOfWeek() работает корректно . Только надо еще дописать функцию перехода на летнее и зимнее время брокеров, т.е. параметр hrd. Переход как правило по американскому DST времени (первое воскресенье ноября второе воскресенье марта), но некоторые брокеры не осуществляют переход, так что ориентируйтесь на своего


Не погружаясь в предположения, просто погонял советник в тестере и посмотрел. Работает и закрывает.

 
belck:
Серверное время, это время брокера? если брокер находится в Росии, а я в Украине, то у него переходов на летнее или зимнее время нет, получается? то и у меня по серверному времени нет перехода, тока по локальному времени? я запутался.

Время котировок брокера и ваше локальное сравнивать не надо. На сколько бы вы свои часы не передвигали время конца сессии брокера на графике не изменится. Речь шла о переходе на летнее время котировок брокеров 8-9 марта, и часть брокеров это делают, а некоторые нет.

Я написал - посмотрите на графиках время последних баров до и после 9 марта, если одинаковые то используйте последний простой вариант, если на час будут отличаться, то более сложный.

 

Парни, снимаю шляпу :) Обе формулы и DayOfWeek() TimeDayOfWeek(datetimedate) и им аналогичные, в тестере будут работать правильно. Тестер моделирует время тика который обрабатывает, поэтому в DayOfWeek() которое берет последнее известное время сервера тоже работает. Более правильно конечно использовать TimeDayOfWeek(dt1)

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