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


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

Теги:


Спасибо:




33 Ответов
< 1 2 
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

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


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

esper

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


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

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

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

Спасибо:

yar1k0v

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


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

esper

Фотография
Программист
Дата: 24.06.2013
Ответить


Спасибо:

yar1k0v

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


Кроме шуток, я не нашел в DdeSecurityColumns колонку с кратностью лота =)
this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.?);

Как быть?
Автор топика
Спасибо:
< 1 2 

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

loading
clippy