Всем привет, подскажите как сделать событие которое будет срабатывать за 5 секунд до закрытия вечерней сессии? Ориентируясь на время биржи.
Всем привет, подскажите как сделать событие которое будет срабатывать за 5 секунд до закрытия вечерней сессии? Ориентируясь на время биржи.
Kommentare (34)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Если без привязки в закрытому коду, то, например, 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
При запущенном сервисе времени и достаточно небольшом смещении времени (не годы).