"Неверный код клиента" при регистрации заяки в стратегии


"Неверный код клиента" при регистрации заяки в стратегии
Atom Reply
10/17/2012


Добрый день!

Пока не освоил всех премудростей StockSharp и вот при создании заявки
и выставлении ее в стратегии получаю APIException "Неверный код клиента".
Версия 4.1.4. Не верю, что проблема в библиотеке.
Подскажите, пожалуйста, в чем я могу быть не прав?

Код примитивный:

class MarketDepthStrategy : Strategy
...

var order = this.CreateOrder(OrderDirections.Buy, Price, 1);
order
.WhenNewTrades()
.Do(OnNewOrderTrades)
.Apply(this);

order
.WhenRegisterFailed()
.Do(LogFailure)
.Apply(this);

RegisterOrder(order);

Tags:


Thanks:




10 Answers
esper

Avatar
Programmer
Date: 10/17/2012
Reply


В 4.1.5 такое же поведение? Сколько у вас счетов на ММВБ в квике?
Thanks:

newuser

Avatar
Date: 10/17/2012
Reply


В квике два счета. С 4.1.5 еще не пробовал, вот сейчас выкачиваю.
Если заявку в стратегии делать через конструкцию
var order = new Order
{
Price = this.Security.BestBid.Price,
Volume = 1,
Direction = OrderDirections.Buy,
};
то заявка проходит, но в дочерних стратегиях не срабатывают приказы
по той же самой причине "Неверный код клиента". Я так понимаю, что
только this.CreateOrder надо использовать в стратегии.

Спасибо!
Topic starter
Thanks:

newuser

Avatar
Date: 10/18/2012
Reply


С переходом на 4.1.5 проблема не разрешилась.
Неужели у меня какая-то уникальная ситуация!?
Брокер: ВТБ
В квике счет и суппозиция к счету, выбираю правильный портфель и облом.
Topic starter
Thanks:

esper

Avatar
Programmer
Date: 10/18/2012
Reply


Ничего из этого и этого не решит проблему?
Thanks:

newuser

Avatar
Date: 10/18/2012
Reply


Спасибо Esper за предложения решения!
Опробовал все из выше предложенного включая создание Portfolio c прописанным счетом депо и кодом клиента.
Результат - неудача. При это создавая Order другим способом его можно регистрировать без проблем.
Вот бы посмотреть как Strategy.RegisterOrder устроенна изнутри ...
Topic starter
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 10/18/2012
Reply


newuser Перейти
При это создавая Order другим способом его можно регистрировать без проблем.


Что это за способ?
Thanks:

esper

Avatar
Programmer
Date: 10/18/2012
Reply


Приведите точный код который работает и который нет.
Thanks:

newuser

Avatar
Date: 10/18/2012
Reply


Стратегия создается следующим образом:

Код

        _strategy = new MarketDepthStrategy()
        {
            Volume = 1,
            Security = _security,
            Portfolio = _portfolio,
            Trader = _trader,                    
        };
        _logManager.Sources.Add(_strategy);
        _strategy.Start();


В самой стратегии пытаюсь создать и зарегистрировать заявку
следующим образом:

Код

        var order = this.CreateOrder(OrderDirections.Buy, Security.BestBid.Price, 1);
               
        order
           .WhenNewTrades()
           .Do(OnNewOrderTrades)
           .Apply(this);

        order
           .WhenRegisterFailed()
           .Do(LogFailure)
           .Apply(this);
                
        RegisterOrder(order);


Регистрации заявки не происходит и в логе получаю:

Код
2012.10.18 14:57:47.065|       |MDS_MTLR@EQBR_191600|Стратегия запущена. [0,-1]. Позиция при старте 0.
2012.10.18 14:57:48.892|Error  |MDS_MTLR@EQBR_191600|Заявка 53862713 не была принята по причине StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Неверный код клиента.
2012.10.18 14:57:48.904|       |MDS_MTLR@EQBR_191600|Заявка 53862713 больше не активна.


Если заявку в стратегии пытаюсь создать и зарегистрировать другим образом:

Код

    var order = new Order
    {
        Price = this.Security.BestBid.Price,
        Volume = 1,
        Direction = OrderDirections.Buy,
    };
                
    order
       .WhenNewTrades()
       .Do(OnNewOrderTrades)
       .Apply(this);

    order
       .WhenRegisterFailed()
       .Do(LogFailure)
       .Apply(this);
                
    RegisterOrder(order);


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

Готов оплатить консультацию/тех. поддержку так как не уверен, что проблема в библиотеке.
Спасибо!
Topic starter
Thanks:

Самунджян Артем

Avatar
Articles author Programmer
Date: 10/19/2012
Reply


newuser Перейти

Готов оплатить консультацию/тех. поддержку так как не уверен, что проблема в библиотеке.
Спасибо!


Добавляйтесь ко мне в скайп samujan1, я руководитель технической поддержки S#.
Thanks:

Kefir

Avatar
Date: 4/4/2013
Reply


Была похожая проблема, вопрос решился
_trader.FormatTransaction += transaction => { transaction.SetClientCode("код клиента"); };

где
_trader = QuikTrader

спасибо Артему!
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy