Закрытие позиций за 5 секунд до закрытия

Закрытие позиций за 5 секунд до закрытия
Atom
12/18/2012
MenDel


Всем привет, подскажите как сделать событие которое будет срабатывать за 5 секунд до закрытия вечерней сессии? Ориентируясь на время биржи.

Tags:


Thanks:


< 1 2 3 4  >
MenDel

Avatar
Date: 1/22/2013
Reply


ra81
Вообще ранее в стратегиях было TimeCome и на него вешаем что хотим, а не такой хитромудрый способ который поверх ваших стратегий как незнамо что прилеплен. Сейчас может убрали не смотрел сие.

ПС: ну вот esper вам совершенно тоже самое советует. И ведь правильно советует.


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

developer_29

Avatar
Date: 1/23/2013
Reply


Здесь, как я понял, ищется данная текущая позиция, а если ни одной нет, то считается, что позиция нулевая (не состоим нигде).
Code
try { position = _trader.Positions.FirstOrDefault(p => p.Security == SelectedSecurity).CurrentValue; }
            catch { position = 0; }


А здесь
Code
try {_trader.CancelOrders(security: SelectedSecurity);}
            catch{}

Закрываются невыполненные заявки или закрываются уже открытые позиции? Или и то, и то?


Если в предыдущем месте закрываются уже открытые позиции, то здесь они опять закрываются, если не закрылись? Или в предыдущем все неисполненные заявки отменяются, а здесь уже открытые позиции закрываются?
Code
            if (position != 0)
            {            

                    if (position > 0)
                    {
                        orderDirections = OrderDirections.Sell;
                        price = SelectedSecurity.MinPrice;
                    }
                    else
                    {
                        orderDirections = OrderDirections.Buy;
                        price = SelectedSecurity.MaxPrice;
                    }

                    var order = new Order
                    {
                        Trader = _trader,
                        Portfolio = SelectedPortfolio,
                        Security = SelectedSecurity,
                        Direction = orderDirections,
                        Price = price,
                        Volume = Math.Abs(position)
                    };
                    _trader.RegisterOrder(order);
            }


Правильно ли я Вас понял?
Thanks:

MenDel

Avatar
Date: 1/23/2013
Reply


В данном коде я сначала проверяю позицию по моему инструменту(не по всем, а только по нужному).
Затем снимаю все активные заявки, также только по моему инструменту
А затем если позиция существует, я её закрываю.
Thanks: developer_29

developer_29

Avatar
Date: 1/25/2013
Reply


MenDel
В данном коде я сначала проверяю позицию по моему инструменту(не по всем, а только по нужному).
Затем снимаю все активные заявки, также только по моему инструменту
А затем если позиция существует, я её закрываю.

Спасибо, что ответили.
Хочу задать ещё пару вопросов, если совсем не тяжело, то ответьте, пожалуйста.

1 - при подключении к Quik сразу же возникают 2 портфеля, которые я не создавал. Каким из них пользоваться и если они служат для разных целей, то для каких именно и почему у них такие странные имена?

2 - Как создать заявку, которая просто "сметает" те предолжения, которые сейчас есть, невзирая на их цену (конечно же, они должны начинаться от лучшего к худшему)? Например, когда пишем
Code
var order = this.CreateOrder(direction, Security.GetMarketPrice(direction), Volume);
 
// регистрируем заявку (обычным способом - лимитированной заявкой)
RegisterOrder(order);

, то покупаем по рыночной цене. А как сделать, чтобы просто всё, что есть сметала с прилавка, начиная с лучшего доступного предложения, конечно? Просто выставить цену хуже рыночной, тогда все те, что лучше, точно исполнятся, невзирая на то, что я захотел приобрести по худшей цене?
Thanks:

esper

Avatar
Date: 1/25/2013
Reply


Thanks:

ra81

Avatar
Date: 1/27/2013
Reply


MenDel
ra81
Вообще ранее в стратегиях было TimeCome и на него вешаем что хотим, а не такой хитромудрый способ который поверх ваших стратегий как незнамо что прилеплен. Сейчас может убрали не смотрел сие.

ПС: ну вот esper вам совершенно тоже самое советует. И ведь правильно советует.


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

Ну так и пожалуйста, рисуете маленькую стратегию которая просто берет и все позиции кроет в заданное время в ноль по заданному чемодану. А те что торгуют просто вырубаете чуток раньше. Вот и все. Достаточно адекватно получается и без хитрых конструкций. Кода выйдет около 5 строчек в каждой стратегии. Ну и в той что кроет все чуток поболее, но тоже без фанатизма.
Thanks:

MenDel

Avatar
Date: 1/29/2013
Reply


Народ подскажите как время точное выставлять на компе.
Я думаю вы этим пользуетесь, если не жалко поделитесь кодом[blush]
А то он чет у меня совсем время криво считает, каждый вечер приходится руками выставлять.
Thanks:

Moadip

Avatar
Date: 1/29/2013
Reply


Thanks: MenDel

MenDel

Avatar
Date: 1/30/2013
Reply





Не подскажете почему при синхронизации времени подвисает робот?
Точнее подвисает рабочее окно, не проверял как он в этот момент сделки со стаканом получает.
И частенько вылетает ошибка, что удаленный компьютер не отвечает,
может это этот сервер (time.nist.gov:123) не айс,
межет можно еще какие нибудь сервера попробывать?

Ошибка:
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
Thanks:

Moadip

Avatar
Date: 1/30/2013
Reply


Quote:
Точнее подвисает рабочее окно

Значит вы этот метод вызываете в UI потоке.
И пока он не выполнится(по умолчанию 5 сек.), дальше код выполнятся не будет - от этого и подвисает.

Quote:
может это этот сервер (time.nist.gov:123) не айс,
межет можно еще какие нибудь сервера попробывать?

Можно синхронизировать хоть по какому серверу, хоть вручную.
SyncMarketTime просто выставляет в NowOffset временное смещение.
Thanks: MenDel
< 1 2 3 4  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy