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


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


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

Теги:


Спасибо:


< 1 2 3 4  >
MenDel

Фотография
Дата: 22.01.2013
Ответить


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

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


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

developer_29

Фотография
Дата: 23.01.2013
Ответить


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


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

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


Если в предыдущем месте закрываются уже открытые позиции, то здесь они опять закрываются, если не закрылись? Или в предыдущем все неисполненные заявки отменяются, а здесь уже открытые позиции закрываются?
Код
            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);
            }


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

MenDel

Фотография
Дата: 23.01.2013
Ответить


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

developer_29

Фотография
Дата: 25.01.2013
Ответить


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

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

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

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

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

esper

Фотография
Дата: 25.01.2013
Ответить


Спасибо:

ra81

Фотография
Дата: 27.01.2013
Ответить


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

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


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

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

MenDel

Фотография
Дата: 29.01.2013
Ответить


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

Moadip

Фотография
Дата: 29.01.2013
Ответить


Спасибо: MenDel

MenDel

Фотография
Дата: 30.01.2013
Ответить





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

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

Moadip

Фотография
Дата: 30.01.2013
Ответить


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

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

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

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

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy