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
|
Дата: 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
|
Дата: 30.01.2013
Не подскажете почему при синхронизации времени подвисает робот? Точнее подвисает рабочее окно, не проверял как он в этот момент сделки со стаканом получает. И частенько вылетает ошибка, что удаленный компьютер не отвечает, может это этот сервер (time.nist.gov:123) не айс, межет можно еще какие нибудь сервера попробывать? Ошибка: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
|
|
Спасибо:
|
|
|
|
|
Moadip
|
Дата: 30.01.2013
Цитата:Точнее подвисает рабочее окно Значит вы этот метод вызываете в UI потоке. И пока он не выполнится(по умолчанию 5 сек.), дальше код выполнятся не будет - от этого и подвисает. Цитата:может это этот сервер (time.nist.gov:123) не айс, межет можно еще какие нибудь сервера попробывать?
Можно синхронизировать хоть по какому серверу, хоть вручную. SyncMarketTime просто выставляет в NowOffset временное смещение.
|
|
|
|