Эта штука не работает в двух случаях.
1. когда устаревает время брокера (инет порвался...)
2. в выходные
настройте корректно локальную зону. Все времена показывает кроме брокера, т.к. он не дает котировок поэтому и не работает. Если нужно вычислите разницу вашего брокера с GTM чуть подправте код допустим вместо лондона вставте нужное вам время. И будет работать.
настройте корректно локальную зону. Все времена показывает кроме брокера, т.к. он не дает котировок поэтому и не работает. Если нужно вычислите разницу вашего брокера с GTM чуть подправте код допустим вместо лондона вставте нужное вам время. И будет работать.
Ну да, 3 пункт не проблема, сегодня виндоуз достаточно прошареный чтобы обеспечить постоянную актуальность локального времени и зоны.
Но при разрывах связи и в выходные я не смогу вычислить зону дц.
Вот что придумкалось: А не вычислить ли зону дц из минутной истории?... Тогда и терминал не особо нужен...
Ну да, 3 пункт не проблема, сегодня виндоуз достаточно прошареный чтобы обеспечить постоянную актуальность локального времени и зоны.
Но при разрывах связи и в выходные я не смогу вычислить зону дц.
Вот что придумкалось: А не вычислить ли зону дц из минутной истории?... Тогда и терминал не особо нужен...
примерно так
//возвращает смещение брокера от CET int ds_brokerOfCET() { double t = TimeCurrent();//текущее время сервера t -= TimeSeconds(t);//начало минуты t -= TimeMinute(t);//начало часа t -= TimeHour(t);//начало дня t -= TimeDayOfWeek(t);//начало недели t += 10*60*60;//10:00 воскресенья double tz = 0; int amount = 0; for(int i=0; i<10; i++)//10 недель { int bar = iBarShift(NULL, PERIOD_M1, t);//первый бар с начала недели double t1 = iTime(NULL, PERIOD_M1, bar); //время первого бара с начала недели t1 = t1 - t; if(MathAbs(t1) > 24*60*60) { //разница больше суток - плохая история break; } tz += t1; t -= 7*24*60*60; amount++; } if(amount < 1) { Print ("unable determine timezone offset. NEED HISTORY!!!"); return(0); } tz /= amount;//разница за одну неделю tz = MathFloor(tz/60/60+0.5)*60*60;//выровнять на ближайший час tz += 10*60*60;//считать от 00:00 воскресенья //теперь tz - это смещение CET от брокера return(-tz);//смещение брокера от CET }
вернее, так
/возвращает смещение брокера от CET int ds_brokerOfCET() { double t = TimeCurrent();//текущее время сервера t -= TimeSeconds(t);//начало минуты t -= TimeMinute(t)*60;//начало часа t -= TimeHour(t)*60*60;//начало дня t -= TimeDayOfWeek(t)*24*60*60;//начало недели t -= 1*24*60*60;//начало субботы double tClose = t - 2*60*60;//22:00 пятницы double tCheck = t + 10*60*60;//10:00 субботы double tz = 0; int amount = 0; for(int i=0; i<10; i++)//10 недель { int bar = iBarShift(NULL, PERIOD_M1, tCheck);//последний бар в неделе double t1 = iTime(NULL, PERIOD_M1, bar); //время последнего бара недели t1 = t1 - tClose; if(MathAbs(t1) > 24*60*60) { //разница больше суток - плохая история break; } tz += t1; tCheck -= 7*24*60*60; tClose -= 7*24*60*60; amount++; } if(amount < 1) { Print ("unable determine timezone offset. NEED HISTORY!!!"); return(0); } tz /= amount;//разница за одну неделю tz = MathFloor(tz/60/60+0.5)*60*60;//выровнять на ближайший час //теперь tz - это смещение брокера от CET return(tz); }
Ну да, 3 пункт не проблема, сегодня виндоуз достаточно прошареный чтобы обеспечить постоянную актуальность локального времени и зоны.
Но при разрывах связи и в выходные я не смогу вычислить зону дц.
Вот что придумкалось: А не вычислить ли зону дц из минутной истории?... Тогда и терминал не особо нужен...
На момент смены цены запоминайте цену в глабальную переменную, потом пользуйтесь значением из этой переменной.
На момент смены цены запоминайте цену в глабальную переменную, потом пользуйтесь значением из этой переменной.
Наверное "На момент смены цены запоминайте локальное время в глабальную переменную, потом пользуйтесь значением из этой переменной."?
Тогда уж лучше просто дождатся пока воскресенье кончится, все что надо повычислять и запомнить в глобальную переменную результат, ато все время мониторить поток не круто..
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как из скрипта определить временную зону в которой работает дц? Чегото я ничего не смог найти по этому вопросу...