Вопросы новичка в S#

Вопросы новичка в S# (Locked)
Atom
12/1/2010
ttt


Добрый день. Очень понравилась идея использования Вашей библиотеки для реализации роботов. Подскажите, пожалуйста:

  1. Как идентифицировать заявку? //например, выставляю заявку buy RIZ0 4 контракта по цене 160500. Каким образом далее смогу ее отслеживать? Вариант с использованием таблицы сделок не подходит - необходимо реализовать контроль исполнения заявок пользуясь исключительно информацией из таблицы заявок. С языком C# только начал разбираться, возможно поэтому не нашел в представленных в дистрибутиве S# проектах примеров контроля состояния заявки по ее уникальному признаку.
  2. Верно ли я понимаю суть работы с Квиком: для реализации автономного робота необходимо организовать два потока на C#:
  • первый: выполняет функции получения данных из Квика через DDE сервер (используя библиотеку S#);
  • второй: непосредственно реализует алгоритм выставления и снятия заявок. Можно ли обойтись одним потоком?


<< < 45 46 47 48 49  > >>
Church

Avatar
Date: 8/22/2011


А еще, практически при каждом запуске котировщика получаются ошибки:


A$ 22.08.2011 16:47:45.809 [MQS] Стратегия запущена.
A$ 22.08.2011 16:47:45.883 [MQS] Регистрация новой заявки на Sell с ценой 156550 и объемом 1.
A$ 22.08.2011 16:47:46.807 [MQS] Заявка 60121828 на Sell отправлена с ценой 156550 объемом 1.
A$ 22.08.2011 16:47:46.809 [MQS] Заявка 60121828 не имеет состояния.
A$ 22.08.2011 16:47:46.810 [MQS] Заявка 60121828 не имеет состояния.
A$ 22.08.2011 16:47:46.812 [MQS] Заявка 60121828 не имеет состояния.
A$ 22.08.2011 16:47:46.815 [MQS] Заявка 60121828 не имеет состояния.
A$ 22.08.2011 16:47:46.817 [MQS] Заявка 60121828 не имеет состояния.
A$ 22.08.2011 16:47:47.199 [MQS] Котируемая заявка 60121828 исполнилась.
A$ 22.08.2011 16:47:47.200 [MQS] Регистрация новой заявки на Sell с ценой 156520 и объемом 1.
A$ 22.08.2011 16:47:48.898 [MQS] Заявка 60121829 на Sell отправлена с ценой 156520 объемом 1.
A$ 22.08.2011 16:47:48.899 [MQS] Новая Limit заявка 60121829 на Sell с номером 4762883422.
A$ 22.08.2011 16:47:48.899 Новая Limit заявка 60121829 на Sell с номером 4762883422.
A$ 22.08.2011 16:47:48.901 [MQS] Цена текущей 156520 и лучшей 156510.
A$ 22.08.2011 16:47:48.903 [MQS] Котирование заявки 60121829 на Sell с ценой 156520 объемом 1.
A$ 22.08.2011 16:47:51.522 [MQS] Заканчиваем котирование с неисполненным объемом равный 0.
A$ 22.08.2011 16:47:51.542 [MQS] System.ArgumentException: Транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=60121830; CLASSCODE=SPBFUT; SECCODE=RIU1; MODE=0; FIRST_ORDER_NUMBER=4762883422; FIRST_ORDER_NEW_PRICE=156510; FIRST_ORDER_NEW_QUANTITY=1;' не была зарегистрирована. Причина 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".'.
Parameter name: transactionTxt
   at #=qRiY$QPJW_GcWl4TovRarJkPbf4ppv9xIchkEcMEHBzU=.#=qSxEA$emnAx3QyIPn2yCM91ypPYsC6KBskKUgxXvP1CQ=(String #=qNO1ermIfWrG6dI$oUYZimA==, OrderStatus& #=qE4jat_vDrzVPYl_Ppu6iiA==, UInt32& #=qi1CY7KZZg6ecB_rpBWuxRA==, Int64& #=qb$zRH_BdRoces20Fe447gA==, String& #=qtPEuDeVoYvRIkZG49QCeGg==)
   at StockSharp.Quik.QuikTrader.#=qWKihWhgMRklXQGRkeiBNtuVEwdQ4YPI12ZvT_jwFds8=(Order #=q3cpq7Usn3d1hLaOfCrw$Mg==, TransactionBuilder #=qWW3PytxIiGdL7NnSRqFd9Q==)
   at StockSharp.Quik.QuikTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qD1NOWCmddcJt7Z5o5DR0kg==()
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qfTGDFZOzAQuz$oJ_UNB6fYa5baalVV3ic2Nfn_iclFU=.#=qy1SJPrtEmVhxEZHX5EDH4g==()
   at StockSharp.Algo.Strategies.StrategyRule.#=qOBi5CSZHig$JePmO_KI21CEQhj5ziVDpCSOsiQQ0sAI=.#=qpmhFPc0P9P8ObITuI86Kiw==(Object #=qPoMym7IqESgMzUnHZKR7gA==)
   at StockSharp.Algo.Strategies.Strategy.#=qD2Mhf_hnXHZkwgV7Ff93Pw==(StrategyRule #=qQyTM14c0wS9VjpZF_0j2Jg==, Object #=q7h_FwN0QN8CxzI3D_M4Hsg==)
A$ 22.08.2011 16:47:51.544 [MQS] Стратегия останавливается.
A$ 22.08.2011 16:47:51.546 [MQS] Заканчиваем котирование с неисполненным объемом равный 0.
A$ 22.08.2011 16:47:51.561 [MQS] Заявка 60121830 не была принята по причине System.ArgumentException: Транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=60121830; CLASSCODE=SPBFUT; SECCODE=RIU1; MODE=0; FIRST_ORDER_NUMBER=4762883422; FIRST_ORDER_NEW_PRICE=156510; FIRST_ORDER_NEW_QUANTITY=1;' не была зарегистрирована. Причина 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".'.
Parameter name: transactionTxt
   at #=qRiY$QPJW_GcWl4TovRarJkPbf4ppv9xIchkEcMEHBzU=.#=qSxEA$emnAx3QyIPn2yCM91ypPYsC6KBskKUgxXvP1CQ=(String #=qNO1ermIfWrG6dI$oUYZimA==, OrderStatus& #=qE4jat_vDrzVPYl_Ppu6iiA==, UInt32& #=qi1CY7KZZg6ecB_rpBWuxRA==, Int64& #=qb$zRH_BdRoces20Fe447gA==, String& #=qtPEuDeVoYvRIkZG49QCeGg==)
   at StockSharp.Quik.QuikTrader.#=qWKihWhgMRklXQGRkeiBNtuVEwdQ4YPI12ZvT_jwFds8=(Order #=q3cpq7Usn3d1hLaOfCrw$Mg==, TransactionBuilder #=qWW3PytxIiGdL7NnSRqFd9Q==)
   at StockSharp.Quik.QuikTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qD1NOWCmddcJt7Z5o5DR0kg==()
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qfTGDFZOzAQuz$oJ_UNB6fYa5baalVV3ic2Nfn_iclFU=.#=qy1SJPrtEmVhxEZHX5EDH4g==()
   at StockSharp.Algo.Strategies.StrategyRule.#=qOBi5CSZHig$JePmO_KI21CEQhj5ziVDpCSOsiQQ0sAI=.#=qpmhFPc0P9P8ObITuI86Kiw==(Object #=qPoMym7IqESgMzUnHZKR7gA==)
   at StockSharp.Algo.Strategies.Strategy.#=qD2Mhf_hnXHZkwgV7Ff93Pw==(StrategyRule #=qQyTM14c0wS9VjpZF_0j2Jg==, Object #=q7h_FwN0QN8CxzI3D_M4Hsg==).
A$ 22.08.2011 16:47:51.564 [MQS] Заканчиваем котирование с неисполненным объемом равный 0.
A$ 22.08.2011 16:47:51.565 [MQS] Стратегия остановлена.
A$ 22.08.2011 16:47:51.567 Новая Sell сделка 379837286 на 1 заявки 60121829.

Часто в этом случае он проводит двойной объем, а позицию изменяет только на 1.

Thanks:

Church

Avatar
Date: 8/22/2011


Mikhail Sukhov:

Church: Результат: примерно 1 из 10 раз позиция не изменяется. В логе явно видно что QuotingStrategy сумела провести 1 бай, но позиция стратегии не изменилась.

Можете прислать минимальный код?

Вот такие методы:

public void EnterViaQuoting(OrderDirections Direct)
{
    var strategy = new MarketQuotingStrategy(Direct, this.Volume)
    {
        PriceType = MarketPriceTypes.Opposite,
        PriceOffset = -_entrySlip,
    };
    base.ChildStrategies.Add(strategy);
}

Котирование используется для того, чтобы перестать пытаться зайти по рынку после определенного времени (с TimeOut - пока не получилось его подключить).

Thanks:

Mikhail Sukhov

Avatar
Date: 8/22/2011


Church: Вот такие методы:

Здесь ни проверки позы, ни родительской стратегии, куда добавляется котирование. Как на таком проверять?

Пришлите минимально работающий код. Не функцию, не отрывок из функции. А именно работающий код, на котором можно это проверить.

Thanks:

Church

Avatar
Date: 8/22/2011


Mikhail Sukhov:

Church: Вот такие методы:

Здесь ни проверки позы, ни родительской стратегии, куда добавляется котирование. Как на таком проверять?

Пришлите минимально работающий код. Не функцию, не отрывок из функции. А именно работающий код, на котором можно это проверить. Хорошо, послал вам в личку весь проект.

Thanks:

Mikhail Sukhov

Avatar
Date: 8/22/2011


Church: Хорошо, послал вам в личку весь проект.

Получил.

Thanks:

Alexander

Avatar
Date: 8/23/2011


Church: А еще, практически при каждом запуске котировщика получаются ошибки:

A$ 22.08.2011 16:47:45.809 [MQS] Стратегия запущена. A$ 22.08.2011 16:47:45.883 [MQS] Регистрация новой заявки на Sell с ценой 156550 и объемом 1. A$ 22.08.2011 16:47:46.807 [MQS] Заявка 60121828 на Sell отправлена с ценой 156550 объемом 1. A$ 22.08.2011 16:47:46.809 [MQS] Заявка 60121828 не имеет состояния. A$ 22.08.2011 16:47:46.810 [MQS] Заявка 60121828 не имеет состояния. A$ 22.08.2011 16:47:46.812 [MQS] Заявка 60121828 не имеет состояния. A$ 22.08.2011 16:47:46.815 [MQS] Заявка 60121828 не имеет состояния. A$ 22.08.2011 16:47:46.817 [MQS] Заявка 60121828 не имеет состояния. A$ 22.08.2011 16:47:47.199 [MQS] Котируемая заявка 60121828 исполнилась. A$ 22.08.2011 16:47:47.200 [MQS] Регистрация новой заявки на Sell с ценой 156520 и объемом 1. A$ 22.08.2011 16:47:48.898 [MQS] Заявка 60121829 на Sell отправлена с ценой 156520 объемом 1. A$ 22.08.2011 16:47:48.899 [MQS] Новая Limit заявка 60121829 на Sell с номером 4762883422. A$ 22.08.2011 16:47:48.899 Новая Limit заявка 60121829 на Sell с номером 4762883422. A$ 22.08.2011 16:47:48.901 [MQS] Цена текущей 156520 и лучшей 156510. A$ 22.08.2011 16:47:48.903 [MQS] Котирование заявки 60121829 на Sell с ценой 156520 объемом 1. A$ 22.08.2011 16:47:51.522 [MQS] Заканчиваем котирование с неисполненным объемом равный 0. A$ 22.08.2011 16:47:51.542 [MQS] System.ArgumentException: Транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=60121830; CLASSCODE=SPBFUT; SECCODE=RIU1; MODE=0; FIRST_ORDER_NUMBER=4762883422; FIRST_ORDER_NEW_PRICE=156510; FIRST_ORDER_NEW_QUANTITY=1;' не была зарегистрирована. Причина 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".'. Parameter name: transactionTxt at #=qRiY$QPJW_GcWl4TovRarJkPbf4ppv9xIchkEcMEHBzU=.#=qSxEA$emnAx3QyIPn2yCM91ypPYsC6KBskKUgxXvP1CQ=(String #=qNO1ermIfWrG6dI$oUYZimA==, OrderStatus& #=qE4jat_vDrzVPYl_Ppu6iiA==, UInt32& #=qi1CY7KZZg6ecB_rpBWuxRA==, Int64& #=qb$zRH_BdRoces20Fe447gA==, String& #=qtPEuDeVoYvRIkZG49QCeGg==) at StockSharp.Quik.QuikTrader.#=qWKihWhgMRklXQGRkeiBNtuVEwdQ4YPI12ZvT_jwFds8=(Order #=q3cpq7Usn3d1hLaOfCrw$Mg==, TransactionBuilder #=qWW3PytxIiGdL7NnSRqFd9Q==) at StockSharp.Quik.QuikTrader.OnReRegisterOrder(Order oldOrder, Order newOrder) at StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder) at StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder) at StockSharp.Algo.Strategies.QuotingStrategy.#=qD1NOWCmddcJt7Z5o5DR0kg==() at StockSharp.Algo.Strategies.QuotingStrategy.#=qfTGDFZOzAQuz$oJ_UNB6fYa5baalVV3ic2Nfn_iclFU=.#=qy1SJPrtEmVhxEZHX5EDH4g==() at StockSharp.Algo.Strategies.StrategyRule.#=qOBi5CSZHig$JePmO_KI21CEQhj5ziVDpCSOsiQQ0sAI=.#=qpmhFPc0P9P8ObITuI86Kiw==(Object #=qPoMym7IqESgMzUnHZKR7gA==) at StockSharp.Algo.Strategies.Strategy.#=qD2Mhf_hnXHZkwgV7Ff93Pw==(StrategyRule #=qQyTM14c0wS9VjpZF_0j2Jg==, Object #=q7h_FwN0QN8CxzI3D_M4Hsg==) A$ 22.08.2011 16:47:51.544 [MQS] Стратегия останавливается. A$ 22.08.2011 16:47:51.546 [MQS] Заканчиваем котирование с неисполненным объемом равный 0. A$ 22.08.2011 16:47:51.561 [MQS] Заявка 60121830 не была принята по причине System.ArgumentException: Транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=60121830; CLASSCODE=SPBFUT; SECCODE=RIU1; MODE=0; FIRST_ORDER_NUMBER=4762883422; FIRST_ORDER_NEW_PRICE=156510; FIRST_ORDER_NEW_QUANTITY=1;' не была зарегистрирована. Причина 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".'. Parameter name: transactionTxt at #=qRiY$QPJW_GcWl4TovRarJkPbf4ppv9xIchkEcMEHBzU=.#=qSxEA$emnAx3QyIPn2yCM91ypPYsC6KBskKUgxXvP1CQ=(String #=qNO1ermIfWrG6dI$oUYZimA==, OrderStatus& #=qE4jat_vDrzVPYl_Ppu6iiA==, UInt32& #=qi1CY7KZZg6ecB_rpBWuxRA==, Int64& #=qb$zRH_BdRoces20Fe447gA==, String& #=qtPEuDeVoYvRIkZG49QCeGg==) at StockSharp.Quik.QuikTrader.#=qWKihWhgMRklXQGRkeiBNtuVEwdQ4YPI12ZvT_jwFds8=(Order #=q3cpq7Usn3d1hLaOfCrw$Mg==, TransactionBuilder #=qWW3PytxIiGdL7NnSRqFd9Q==) at StockSharp.Quik.QuikTrader.OnReRegisterOrder(Order oldOrder, Order newOrder) at StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder) at StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder) at StockSharp.Algo.Strategies.QuotingStrategy.#=qD1NOWCmddcJt7Z5o5DR0kg==() at StockSharp.Algo.Strategies.QuotingStrategy.#=qfTGDFZOzAQuz$oJ_UNB6fYa5baalVV3ic2Nfn_iclFU=.#=qy1SJPrtEmVhxEZHX5EDH4g==() at StockSharp.Algo.Strategies.StrategyRule.#=qOBi5CSZHig$JePmO_KI21CEQhj5ziVDpCSOsiQQ0sAI=.#=qpmhFPc0P9P8ObITuI86Kiw==(Object #=qPoMym7IqESgMzUnHZKR7gA==) at StockSharp.Algo.Strategies.Strategy.#=qD2Mhf_hnXHZkwgV7Ff93Pw==(StrategyRule #=qQyTM14c0wS9VjpZF_0j2Jg==, Object #=q7h_FwN0QN8CxzI3D_M4Hsg==). A$ 22.08.2011 16:47:51.564 [MQS] Заканчиваем котирование с неисполненным объемом равный 0. A$ 22.08.2011 16:47:51.565 [MQS] Стратегия остановлена. A$ 22.08.2011 16:47:51.567 Новая Sell сделка 379837286 на 1 заявки 60121829.

> 
> Часто в этом случае он проводит двойной объем, а позицию изменяет только на 1.



Какая версия S#? Как создаётся котирование, сколько раз?
Как ни пытался, так и не смог понять пока как такой лог выходит [huh] 
Thanks:

Church

Avatar
Date: 8/23/2011


Ордер генерируется максимум 2 раза (вход-выход) за 1 свечку (минутки). Выход не активируется до тех пор, пока не изменится позиция по входу. Котирование создается вроде бы так же как и в примерах...

Thanks:

Maxim K.

Avatar
Date: 8/24/2011


Возник такой вопрос: поддерживает ли библиотека транзакции,связанные с внебиржевыми заявками (NEW_NEG_DEAL и подобные) ? Если нет, то вопрос такой - на каком этапе происходит подключение TRANS2QUIK.DLL ?

Thanks:

Mikhail Sukhov

Avatar
Date: 8/24/2011


Maxim K.: Возник такой вопрос: поддерживает ли библиотека транзакции,связанные с внебиржевыми заявками (NEW_NEG_DEAL и подобные) ? Если нет, то вопрос такой - на каком этапе происходит подключение TRANS2QUIK.DLL ?

http://stocksharp.com/doc/html/0b0bd6e0-7ddf-407d-9e03-a218796163af.htm

Thanks:

l-way

Avatar
Date: 8/24/2011


Здравствуйте

Есть ли ограничение на число экспортируемых стаканов? У меня больше 7 не работает

Thanks:
<< < 45 46 47 48 49  > >>

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

loading
clippy