Не работает котирование
Atom
14.11.2011
pehas


Приветствую! Есть проблема с котированием

Стратегия котирования выставляет заявку в квик. Перекотирует ее один раз, а дальше не может отследить состояние вновь выставленной заявки. Пишет "Заявка ХХХХХХХХХ не имеет состояния"

Лог: :::spoiler

15:19:43.203 | | QuikTrader | Экспорт запущен. 15:19:42.921 | | QuikTrader | New order: TransactionId=49849438, Id=1091158826, Price=1601,55, Balance=50, Security=UXZ1@UX, State=Done 15:19:43.484 | | QuikTrader | New order: TransactionId=0, Id=1091159261, Price=1600,3, Balance=48, Security=UXZ1@UX, State=Done 15:19:43.546 | | QuikTrader | New order: TransactionId=0, Id=1091577287, Price=1768,7, Balance=0, Security=UXZ1@UX, State=Done 15:19:50.421 | | TS | Стратегия запущена. 15:24:22.640 | | TS | Пробой канала DOWN 15:24:22.859 | | MQS | Стратегия запущена. 15:24:23.109 | | MQS | Регистрация новой заявки на Sell с ценой 1583,00 и объемом 15. 15:24:23.140 | | QuikTrader | RegisterOrder: TransactionId=55179001, Id=0, Price=1583,00, Balance=15, Security=UXZ1@UX, State=None 15:24:23.171 | | MQS | Заявка 55179001 на Sell отправлена с ценой 1583,00 объемом 15. 15:24:23.906 | Warning | MQS | Заявка 55179001 не имеет состояния. 15:24:24.031 | | QuikTrader | New order: TransactionId=55179001, Id=1091971814, Price=1583,00, Balance=15, Security=UXZ1@UX, State=Active 15:24:32.906 | | MQS | Цена текущей 1583,00 и лучшей 1582,20. 15:24:32.906 | | MQS | Лучший бид 1581,05 и лучший аск 1582,2. 15:24:32.921 | | MQS | Котирование заявки 55179001 на Sell с ценой 1583,00 объемом 15. 15:24:32.937 | | MQS | Перекотирование зарегистрировано для заявки 55179002 на Sell с ценой 1582,20 объемом 15. 15:24:33.625 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:33.625 | | QuikTrader | New order: TransactionId=0, Id=1091972970, Price=1582,2, Balance=15, Security=UXZ1@UX, State=Active 15:24:33.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:34.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:35.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:36.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:37.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:38.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:39.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:40.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:41.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:42.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:43.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:44.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:45.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:46.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:47.906 | Warning | MQS | Заявка 55179002 не имеет состояния. 15:24:48.906 | Warning | MQS | Заявка 55179002 не имеет состояния. ... до бесконечности

Код запуска котирования


            var MarketPrice = this.Security.GetMarketPrice(Direction);
            var order = this.CreateOrder(Direction, MarketPrice, 15);

            // Регистрация заявки через котирование
            var quotingStrategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
            this.ChildStrategies.Add(quotingStrategy);

Интересно, что заявка остается висеть в стакане. И не перекотируется. Она в итоге исполняется по выставленной ранее цене. Но стратегия по прежнему пишет варнинги и не знает, что появились трейды по заявке

Версия S# - 4.0.5. При тестировании данной стратегии на истории котирование работает.

В чем может быть проблема?


Теги:


Спасибо:


< 1 2 
Alexander

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


pehas:

Mikhail Sukhov:

Alexander Mukhanchikov: Тут такая же проблема

Не, там наверняка какая-то бага в настройках. А тут 0 судя по всему от MOVE. Что-то вспоминаю насчет этого, и воспоминания говорят о том, что Квик для таких заявок возвращает нулевой номер транзакции.

Доктор, скажите, есть ли от этого лекарство? [huh] И что такое MOVE заявка?

Сегодня в торговой сессии не успел потестировать получше. Попробую еще на акциях завтра погонять. Может это фьючерс глючит так. Прикол украинской биржи. Например, у нас не работает метод Strategy.ClosePosition(), так как на UX на фьючерсе нельзя выставить заявку с нулевой ценой. Приходится пользовать самописный метод для закрытия позиции. Или закрываться через котирование действием ClosePosition, что опять таки не работает из за той ошибки.. [sad]

Эм, вообще-то

  1. Move на акциях нет
  2. ClosePosition не работает на срочном рынке, т.к. срочный рынок не поддерживает market заявок
Спасибо:

Alexander

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


Попробуйте для Exchange.Ux выставить IsSupportAtomicReRegister в false

Спасибо:

Alexander

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


Alexander Mukhanchikov: Попробуйте для Exchange.Ux выставить IsSupportAtomicReRegister в false

Помогло?

Спасибо:

russ

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


Также есть проблемы с котированием. Версия 4.0.5 Тестирую через _trader = new EmulationTrader Проблема такая, отправляю заявку на котирование 1 раз, а сделок получается две. Немного кода стратегии:


public class VolumeStrategy : Strategy
{
        private Order activeQuotingOrder = null;
        ......

        protected override void OnStarting()
        {
            this
                .When(base.Security.SecurityNewTrades())
                .Do(CalcVolume);

            base.OnStarting();
        }

        private void CalcVolume()
        {
            
            Trade tr = base.Security.LastTrade;

           
            if (tr.Volume > 10)
            {
                decimal currPos = this.PositionManager.Position;
                if (currPos > 0)
                    return;

                //проверяем есть ли сейчас заявка на котирование
                if (activeQuotingOrder == null)
                {

                    var direction = OrderDirections.Buy;

                    // создаем заявку
                    var order = this.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);


                    // регистрируем заявку (через котирование)
                    var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                    base.ChildStrategies.Add(strategy);
                    
                    //ЗАПОМИНАЕМ В ПЕРЕМЕННУЮ ТЕКУЩУЮ ЗАЯВКУ, КОТОРУЮ ОТПРАВИЛИ НА КОТИРОВАНИЕ
                    activeQuotingOrder = order;
                }                
            }
        }
}

Вот что выдается в логе: В чем может быть проблема?

Спасибо:

Alexander

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


russ: Также есть проблемы с котированием. Версия 4.0.5 Тестирую через _trader = new EmulationTrader Проблема такая, отправляю заявку на котирование 1 раз, а сделок получается две. Немного кода стратегии:

public class VolumeStrategy : Strategy { private Order activeQuotingOrder = null; ......

    protected override void OnStarting()
    {
        this
            .When(base.Security.SecurityNewTrades())
            .Do(CalcVolume);

        base.OnStarting();
    }

    private void CalcVolume()
    {
        
        Trade tr = base.Security.LastTrade;

       
        if (tr.Volume > 10)
        {
            decimal currPos = this.PositionManager.Position;
            if (currPos > 0)
                return;

            //проверяем есть ли сейчас заявка на котирование
            if (activeQuotingOrder == null)
            {

                var direction = OrderDirections.Buy;

                // создаем заявку
                var order = this.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);


                // регистрируем заявку (через котирование)
                var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                base.ChildStrategies.Add(strategy);
                
                //ЗАПОМИНАЕМ В ПЕРЕМЕННУЮ ТЕКУЩУЮ ЗАЯВКУ, КОТОРУЮ ОТПРАВИЛИ НА КОТИРОВАНИЕ
                activeQuotingOrder = order;
            }                
        }
    }

}

> 
> Вот что выдается в логе:
> ![](http://s50.radikal.ru/i130/1111/74/445680e4964d.png)
> В чем может быть проблема?


Приведите полный лог.
Я так понимаю к Квику отношения никакого? Тогда почему сообщение здесь? :)

[Вот тут](http://stocksharp.com/forum/2107/Oshibka--kotirovaniie-porozhdaiet-nieskol-ko-vypolniennykh-zaiavok/) похожая проблема, почитайте тему.
И да, попробуйте 4.0.6 с codeplex
Спасибо:

pehas

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


Alexander Mukhanchikov:

Alexander Mukhanchikov: Попробуйте для Exchange.Ux выставить IsSupportAtomicReRegister в false

Помогло?

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

Спасибо:

Alexander

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


Удалось за 2 недели протестировать предложенное решение?

Или, раз нет ответа, проблема решена?

Спасибо:

pehas

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


Alexander Mukhanchikov: Удалось за 2 недели протестировать предложенное решение?

Или, раз нет ответа, проблема решена?

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

Я с тех пор уже переписал робота на работу через обычную регистрацию заявок. Убрал котирование полностью по всему коду. Обновился до версии 4.0.6. И обновил квик до 5.24.0.58 Сегодня в качестве теста попробовал подключить котирование вместо обычной регистрации ордера. Стратегия котирования запускается, но никаких заявок в квик не выставляет вообще. Запускал так


            var quotingStrategy = new MarketQuotingStrategy(Direction, Volume);
            base.ChildStrategies.Add(quotingStrategy);

И так


            var quotingStrategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
            base.ChildStrategies.Add(quotingStrategy);

Результат тот же. Последний лог: MQS: Стратегия запущена и больше никаких сигналов от стратегии, и никаких заявок ни в стокшарпе ни в квике.

Во втором случае использую new Unit(), new Unit() как в документации по котированию (раньше в эмуляции это работало).

З.Ы. Кстати, в документации (по крайней мере версии 4.0.6) стратегия котирования определяется как new MarketQuotingStrategy(order, new Unit()) Хотя такого конструктора в самой библиотеке нет. Нужны два юнита

Спасибо:

Alexander

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


На 4.0.7 работает

Спасибо:

pehas

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


Alexander Mukhanchikov: На 4.0.7 работает

Да, только сегодня утром заметил, что есть новая версия. Попробую

Спасибо:
< 1 2 

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

loading
clippy