"Неверный код клиента" при регистрации заяки в стратегии
Atom Ответить
17.10.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);

Теги:


Спасибо:




10 Ответов
esper

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


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

newuser

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


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

Спасибо!
Автор топика
Спасибо:

newuser

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


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

esper

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


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

newuser

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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.10.2012
Ответить


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


Что это за способ?
Спасибо:

esper

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


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

newuser

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


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

Код

        _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 получаю туже самую проблему с "Неверный код клиента".
Так что я бы не сказал, что этот код работает как хотелось бы.

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

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

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


newuser Перейти

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


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

Kefir

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


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

где
_trader = QuikTrader

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


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

loading
clippy