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


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

Теги:


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


<< < 12 13 14 15 16  > >>
MCTuTeJ|19951995

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


А у всех в Win7 справка криво работает ? Её нужно в корень копировать (или чтобы путь был без спецальных символов и русских букв).
Спасибо:

Mikhail Sukhov

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


MCTuTeJ|19951995
Ну да, сделал вроде всё как описано - колонки в конец и потом
Код

Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.Volatility);
Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.SettlementDate);
Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.ExpiryDate);


У меня в разделе Модификация стандартных таблиц версии 2.6 написано совсем другое:

Код
// создаем шлюз к Quik-у
_trader = new QuikTrader(this.Path.Text);

var columns = _trader.SecuritiesTable.Columns;

// вставляем колонку Время последнего изменения по индексу колонки Время последней сделки
// последняя при это перемещается "вперед"
columns.Insert(columns.IndexOf(DdeSecurityColumns.LastTradeTime), DdeSecurityColumns.LastChangeTime);
Спасибо:

skuvv

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


skuvv
Mikhail Sukhov
skuvv
По поводу ReRegisterOrder, при использовании такого кода:
Код

Ecng.Trading.BusinessEntities.Order _order = order.Clone();
_order.Volume = newQty;
_order.Price = newPrice;
_trader.ReRegisterOrder(order, _order);

получаю отклоненный ордер с сообщением "Сообщение [FORTS] Ошибка в задании входных параметров.. New Order1 ID: 0, new Order2 ID:0"


Подозреваю, что какие то параметры неправильные. newQty и newPrice проверьте.

v3.0.13 ошибка ушла.
замененный ордер не заполняет поле OrderStatus, и всегда ==null

PS для стоп-ордеров статус корректный

Подтверждаю в 3.0.16 ошибка исправлена,
Появилась новая, при использовании для снятия ордера команды TraderHelper, он фризит все потоки(на 20 секунд) и соответсвенно до таймаута не может получить новые события(dde вывод тоже висит)
Код

try
{
TraderHelper.GuarantyCancelOrder(order);
}
catch (Exception ex)
{
Console.WriteLine(Time.ToString(timefmt) + " ***Cancelling order Reject*** "+ex.ToString());
}

Как только срабатывает эксепшн, собятия начинают приходить
Спасибо:

MCTuTeJ|19951995

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


Mikhail Sukhov
MCTuTeJ|19951995
Ну да, сделал вроде всё как описано - колонки в конец и потом
Код

Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.Volatility);
Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.SettlementDate);
Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.ExpiryDate);


У меня в разделе Модификация стандартных таблиц версии 2.6 написано совсем другое:

Код
// создаем шлюз к Quik-у
_trader = new QuikTrader(this.Path.Text);

var columns = _trader.SecuritiesTable.Columns;

// вставляем колонку Время последнего изменения по индексу колонки Время последней сделки
// последняя при это перемещается "вперед"
columns.Insert(columns.IndexOf(DdeSecurityColumns.LastTradeTime), DdeSecurityColumns.LastChangeTime);

Там же вроде указано несколько вариантов...
Использую описанный выше - волатильность и дата эксперации нормально работают.
Спасибо:

VsevolodG

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


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

Мне нужно сделать робота со следующим алгоритмом:
1. При запуске выставляются две заявки на покупку и на продажу
2. После двух подряд покупок или продаж выставлять стоп-лимиты
3. Когда срабатывает стоп-лимит выставлять тейк-профит на обратную сделку

На основе примеров я создал подключение к Quik. Дальше сразу же затык на получении текущей цены бумаги, на основании которой выставлять первые две заявки.
После выставления заявок, как я понимаю, необходимо отслеживать событие NewTrades. Я прав?

Уточните, пожалуйста, как узнать текущую цену бумаги (которая отображается на "графике цены и объема"). А также правильным ли путем я иду или надо создавать какие-то стратегии?
Спасибо:

MCTuTeJ|19951995

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


Не знаю как у других, но для меня стратегии существенно упростили работу со s#.
Спасибо:

Mikhail Sukhov

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


skuvv
Появилась новая, при использовании для снятия ордера команды TraderHelper, он фризит все потоки(на 20 секунд) и соответсвенно до таймаута не может получить новые события(dde вывод тоже висит)


А как проверялось что и другие потоки замирали? Вообще фриз происходит только на текущий поток. GuarantyCancel напрямую вызывался из кода или через котирование?
Спасибо:

skuvv

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


Mikhail Sukhov
skuvv
Появилась новая, при использовании для снятия ордера команды TraderHelper, он фризит все потоки(на 20 секунд) и соответсвенно до таймаута не может получить новые события(dde вывод тоже висит)


А как проверялось что и другие потоки замирали? Вообще фриз происходит только на текущий поток. GuarantyCancel напрямую вызывался из кода или через котирование?

Вызывался из основного потока и соответсвенно весь мой GUI замирал.
По логам никаких ивентов в этот промежуток небыло, зато сразу после фриза, накопленные данные пачкой выливаются из квика(сильный пик активности)
Спасибо:

Mikhail Sukhov

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


skuvv
Mikhail Sukhov
skuvv
Появилась новая, при использовании для снятия ордера команды TraderHelper, он фризит все потоки(на 20 секунд) и соответсвенно до таймаута не может получить новые события(dde вывод тоже висит)


А как проверялось что и другие потоки замирали? Вообще фриз происходит только на текущий поток. GuarantyCancel напрямую вызывался из кода или через котирование?

Вызывался из основного потока и соответсвенно весь мой GUI замирал.
По логам никаких ивентов в этот промежуток небыло, зато сразу после фриза, накопленные данные пачкой выливаются из квика(сильный пик активности)


1. Из GUI потока торговлю делать не нужно.
2. Потому что наверняка вы из других обработчиков делаете GuiSync. А так как GUI поток заблокирован из-за неправильного пункта 1, то виснут и сами обработчики.
Спасибо:

IlyaILH

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


Добрый день.

Приступил к изучению S# в связи с этим у меня возник вопрос:
при экспорте custom table все нормально работает, когда в таблице одна бумага, но как работать с несколькими бумагами
так, например, при завпросе code инструмента выдается только код 1-го по списку инструмента.

Заранее благодарен за помощь.
Спасибо:
<< < 12 13 14 15 16  > >>

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

loading
clippy