Выставление заявок в Quik
Atom
29.05.2013


Робот не выставляет заявки через Quik на спотовом рынке.
На учебном счете все работает хорошо. Не эмуляция, а обычный game счет.
Я убрал в квике все возможные запросы на выставление заявок (всплывающие окна подтверждения), но увы.
Код клиента тоже указан правильно, и в квике он береться всегда по умолчанию.
Денег тоже достаточно.
Игровой счет работает, транзакции проходят, а реальный - нет.
Что это может быть?

Теги:


Спасибо:


< 1 2 3 4  >
esper

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


Покажите ToString() для транзакции. Как вы объем задаете для заявки? Если неверной приходит MinLotSize, то какие данные в квике в этой колонке? таблицы правильно настроены?
Спасибо:

yar1k0v

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


По моему я нашел где ошибка. Иногда это бывает так очевидно =) В квике, в таблице лот, все значения равны 1. Верифаер ошибок не нашел. Но вместо колонки лот, должна быть колонка кратность лота.
Спасибо:

yar1k0v

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


Я заменил колонку и кратность лота теперь отображается правильно, но в транзакциях обьем все равно равен 1 (а не 100, как кратность лота).

Код ошибки:
Код

013/06/10 12:46:30.463|       |MQS_CEEN@UX_100820|Регистрация новой Limit (0x41C1A0) заявки на Sell с ценой 4,479 и объемом 1. 
2013/06/10 12:46:30.467|Warning|MQS_CEEN@UX_100820|Заявка 45982966 в процессе регистрации.
2013/06/10 12:46:30.467|Warning|MQS_CEEN@UX_100820|Заявка 45982967 в процессе регистрации.
2013/06/10 12:46:30.482|Error  |MQS_CEEN@UX_100820|Заявка 45982966 (0x1C50583) не была принята по причине StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Неверно указано количество.
2013/06/10 12:46:30.486|Error  |MQS_CEEN@UX_100820|Заявка 45982966 не принята биржей по причине 'Код ошибки Failed Сообщение Неверно указано количество'.
2013/06/10


Не знаю, что с этим делать.
Спасибо:

esper

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


Умножить вручную объем на кратность лота.
Спасибо:

yar1k0v

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


Я именно так и делаю при создании стратегии, но это игнорируется API. Приходиться указывать только таким способом:
Код
trader.FormatTransaction += transaction => transaction.SetVolume(100);

И в SetVolume() прийдеться каждый раз передавать новое значение при смене инструмента, а это не очень удобно!
Так же я не понимаю, почему при создании QuikTrader и отключении асинхронности виставления заявок, программа (робот) просто крэшиться?
Код
var trader = new QuikTrader(quikPath) { IsAsyncMode = false };
Спасибо:

esper

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


yar1k0v Перейти
Я именно так и делаю при создании стратегии, но это игнорируется API. Приходиться указывать только таким способом:
Код
trader.FormatTransaction += transaction => transaction.SetVolume(100);

И в SetVolume() прийдеться каждый раз передавать новое значение при смене инструмента, а это не очень удобно!

Еще раз, как вы создаете заявку и какой объем там указываете, что содержит транзакция? Если вы укажите там 100 все должно работать.
yar1k0v Перейти
Так же я не понимаю, почему при создании QuikTrader и отключении асинхронности виставления заявок, программа (робот) просто крэшиться?
Код
var trader = new QuikTrader(quikPath) { IsAsyncMode = false };

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

yar1k0v

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


Сначала я создаю стратегию и указываю обьем в ней:
Код

_strategy = new Strategy
{
Volume = MySecurities.SelectedSecurity.MinLotSize * (decimal)Properties.Settings.Default.Volume,
Security = MySecurities.SelectedSecurity,
Portfolio = Portfolios.SelectedPortfolio,
Trader = _trader,
CancelOrdersWhenStopping = true,
DisposeOnStop = true
};


Метод, выставляющий заявку:
Код

        private void MakeOrder(OrderDirections direction)
        {
            var price = direction == OrderDirections.Buy ? Security.GetMarketDepth().BestBid.Price : Security.GetMarketDepth().BestAsk.Price;

            var order = new Order
            {
                Price = price,
                Portfolio = Portfolio,
                Volume = Volume,
                Direction = direction
            };

            var _strategy = new MarketQuotingStrategy(order, Security.MinStepSize, Security.MinStepSize);
            ChildStrategies.Add(_strategy);
        }


Но транзакция содержит обьем, равный 1.

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

yar1k0v

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


Когда выйдет исправление?
Спасибо:

yar1k0v

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


На УБ для спотового рынка нужно использовать колонку кратность лота а не размер лота...
Спасибо:

esper

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


На последней версии ошибка с кодом клиента исчезла?

yar1k0v Перейти
На УБ для спотового рынка нужно использовать колонку кратность лота а не размер лота...

Так поставьте у себя в квике нужную колонку вместо той, что идет по умолчанию.

Спасибо:
< 1 2 3 4  >

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

loading
clippy