Вопросы новичка в S# (Закрыта)
Atom
01.12.2010
ttt


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

Теги:


Спасибо: Николай_Флёров


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

Фотография
Дата: 22.08.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.
Спасибо:

Church

Фотография
Дата: 22.08.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 - пока не получилось его подключить).
Спасибо:

Mikhail Sukhov

Фотография
Дата: 22.08.2011


Church

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


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

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

Church

Фотография
Дата: 22.08.2011


Mikhail Sukhov
Church

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


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

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

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

Mikhail Sukhov

Фотография
Дата: 22.08.2011


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


Получил.
Спасибо:

Alexander

Фотография
Дата: 23.08.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]
Спасибо:

Church

Фотография
Дата: 23.08.2011


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

Maxim K.

Фотография
Дата: 24.08.2011


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

Mikhail Sukhov

Фотография
Дата: 24.08.2011


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


http://stocksharp.com/do...7d-9e03-a218796163af.htm
Спасибо:

l-way

Фотография
Дата: 24.08.2011


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

Есть ли ограничение на число экспортируемых стаканов? У меня больше 7 не работает
Спасибо:
<< < 45 46 47 48 49  > >>

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

loading
clippy