Всем привет, подскажите как сделать событие которое будет срабатывать за 5 секунд до закрытия вечерней сессии? Ориентируясь на время биржи.
Всем привет, подскажите как сделать событие которое будет срабатывать за 5 секунд до закрытия вечерней сессии? Ориентируясь на время биржи.
Комментарии (34)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Если без привязки в закрытому коду, то, например, Time scheduler in C#, By Aleksey Bykov, 16 May 2007.
http://www.codeproject.com/Articles/18633/Time-scheduler-in-C
спс, ща посмотрим. Я ваще думал это в S# реализовано, вещь то нужная.
Часы в любом случае сверять придется. В S# можно попробовать посмотреть такую штуку.
Нашел, решил написать мож кому пригодится ещ И часы сверять не надо
это конечно хорошо, но в настоящий момент GetMarketTime используется DateTime.Now, которое просто сдвинуто на часовой пояс указанной биржи.
Первая строчка - чтоб каждую секунду, а вторая вызывает каждый раз метод Если по рынку закрывать, то делаю так
Здесь, как я понял, ищется данная текущая позиция, а если ни одной нет, то считается, что позиция нулевая (не состоим нигде).
А здесь
Закрываются невыполненные заявки или закрываются уже открытые позиции? Или и то, и то?
Если в предыдущем месте закрываются уже открытые позиции, то здесь они опять закрываются, если не закрылись? Или в предыдущем все неисполненные заявки отменяются, а здесь уже открытые позиции закрываются?
Правильно ли я Вас понял?
Вообще ранее в стратегиях было TimeCome и на него вешаем что хотим, а не такой хитромудрый способ который поверх ваших стратегий как незнамо что прилеплен. Сейчас может убрали не смотрел сие.
ПС: ну вот esper вам совершенно тоже самое советует. И ведь правильно советует.
Так то вы правы, но когда несколько стратегий работает и в этот момент они оказались в противоположных направлениях, зачем каждой из них крыть свои позиции, когда частично они уже покрыты друг об друга. В этой ситуации надо только остатки закрыть.
В данном коде я сначала проверяю позицию по моему инструменту(не по всем, а только по нужному). Затем снимаю все активные заявки, также только по моему инструменту А затем если позиция существует, я её закрываю.
1 - при подключении к Quik сразу же возникают 2 портфеля, которые я не создавал. Каким из них пользоваться и если они служат для разных целей, то для каких именно и почему у них такие странные имена?
2 - Как создать заявку, которая просто "сметает" те предолжения, которые сейчас есть, невзирая на их цену (конечно же, они должны начинаться от лучшего к худшему)? Например, когда пишем
, то покупаем по рыночной цене. А как сделать, чтобы просто всё, что есть сметала с прилавка, начиная с лучшего доступного предложения, конечно? Просто выставить цену хуже рыночной, тогда все те, что лучше, точно исполнятся, невзирая на то, что я захотел приобрести по худшей цене?
Народ подскажите как время точное выставлять на компе. Я думаю вы этим пользуетесь, если не жалко поделитесь кодом😊 А то он чет у меня совсем время криво считает, каждый вечер приходится руками выставлять.
LoggingHelper.SyncMarketTime
Не подскажете почему при синхронизации времени подвисает робот? Точнее подвисает рабочее окно, не проверял как он в этот момент сделки со стаканом получает. И частенько вылетает ошибка, что удаленный компьютер не отвечает, может это этот сервер (time.nist.gov:123) не айс, межет можно еще какие нибудь сервера попробывать?
Ошибка: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
Вот мой код синхронизации:
А я ща сделал просто, будет коннектится пока не получит свое, вот
А запускаю его так ```csharp ThreadPool.QueueUserWorkItem(_ => TimeSync());
Если не считать первой причины, я использую другой поток, я не вывожу ошибку в лог, и ты ведь тоже запускаешь повторно метод из catch, я немного не понимаю про рекурсию и GC Может проще прописать в LoggingHelper.SyncMarketTime(5000); 5000 или другое кол-во милисекунд? и тогда не придется усыплять поток и осчитывать итерации и тем более что он сам задает NowOffset. Или я что то недопонимаю.
Замучила совесть: исправил свой код. Теперь - в одном дополнительном потоке и без вложенных исключений. Саму синхронизацию выделил в отдельный метод. Возможно стоит перебрать сервера из списка http://tf.nist.gov/tf-cgi/servers.cgi , выбрать вручную несколько хороших и выбирать из их списка, не доверяя стандартному адресу. Уж больно он нестабильный. Наверное, большинство серверов перманентно в дауне.
Без рекурсии:
Кстати, для синхронизации времени вполне достаточно настроить штатную службу времени в Windows. параметры реестра сервера пул серверов Это для общего понимания
Да кстати можно ещ добавить проверку инета, а то вдруг его отрубят а он будет все пытвться время узнать.
Так ведь никакой рекурсии не будет?
Для России хороши сервера 0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org 3.ru.pool.ntp.org Они во-первых работают, а во-вторых пинг до них в 4-10 раз меньше, чем до серверов Пиндостана.
Безотносительно к трейдингу Синхронизация часов в Windows
При запущенном сервисе времени и достаточно небольшом смещении времени (не годы).