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


ttt

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




506 Answers
<< < 9 10 11 12 13  > >>
IlyaILH

Avatar
Date: 3/30/2011


Mikhail Sukhov Перейти
IlyaILH Перейти
Я получаю следующие сообщения по вышестоящему коду:

VDSB@EQNE Trading
LK20000BF1@RTS Trading и т.д.

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


Понял. Информация об инструментах идет отовсюду. В том числе и из таблицы сделок.



Ясно, а как тогда мне получить инфрмацию только из таблицы инструменты, т.е есть у меня 2 инструмента (лукойл и сбер) и я хочу получить по ним код, статус и еще пару полей, но мне не нужны другие инструменты.

Просто в документации код для работы с инструментами написан примерно как у меня.

Заранее благодарен за ответ.
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 3/30/2011


Vyacheslav Перейти

Однако, такое чувство, что нет экспорта стакана по DDE.

Что делать?


Чувство не подводит. Пример устарел, надо править... Нужно дождаться еще появления стакана по инструменту. Раньше необходимая информация приходила в самом инструменте.
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 3/30/2011


IlyaILH Перейти
Ясно, а как тогда мне получить инфрмацию только из таблицы инструменты, т.е есть у меня 2 инструмента (лукойл и сбер) и я хочу получить по ним код, статус и еще пару полей, но мне не нужны другие инструменты.


Не используйте в своей программе другие инструменты. Вы знаете как писать на C# фильтр?
Thanks: Igor_B

Vyacheslav

Avatar
Date: 3/30/2011


Mikhail Sukhov Перейти
Vyacheslav Перейти

Однако, такое чувство, что нет экспорта стакана по DDE.

Что делать?


Чувство не подводит. Пример устарел, надо править... Нужно дождаться еще появления стакана по инструменту. Раньше необходимая информация приходила в самом инструменте.


Михаил, разместите обновленный пример sampleconsole на box.net, пожалуйста.
Или напишите, что надо поправить в коде.
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 3/30/2011


Vyacheslav Перейти
Михаил, разместите обновленный пример sampleconsole на box.net, пожалуйста.
Или напишите, что надо поправить в коде.


А в чем смысл? Пример оторван от жизни, его же бесполезно использовать. Это только демонстрация возможностей.
Thanks:

Vyacheslav

Avatar
Date: 3/30/2011


Mikhail Sukhov Перейти
Vyacheslav Перейти
Михаил, разместите обновленный пример sampleconsole на box.net, пожалуйста.
Или напишите, что надо поправить в коде.


А в чем смысл? Пример оторван от жизни, его же бесполезно использовать. Это только демонстрация возможностей.


Смысл для новичка - в простоте.
Начинать изучение легче с простого примера, чем сразу с sample, например.
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 3/30/2011


Vyacheslav Перейти
Смысл для новичка - в простоте.
Начинать изучение легче с простого примера, чем сразу с sample, например.


1. Подпишитесь на обновление по стакану через ITrader.QuotesChanged.
2. Дождитесь своего стакана (проверять по MarketDepth.Security).
3. Просигнальте, если есть три составляющие - стакан, инструмент, порфтель.
4. На всякий случай еще выведите в лог ITrader.ProcessDataError.
Thanks:

VsevolodG

Avatar
Date: 3/31/2011


Добрый день.

Уточните, пожалуйста, как получать текущую рыночную цену по инструменту?
Сейчас я использую
Код
this.Security.ShrinkPrice(this.Security.BestBid.Price, ShrinkRules.Auto)


Проблема в том, что в графике цены и объема по инструменту красным отображается текущая цена, которая зачастую не равна BestBid.Price
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 3/31/2011


VsevolodG Перейти
Проблема в том, что в графике цены и объема по инструменту красным отображается текущая цена, которая зачастую не равна BestBid.Price


В графике цены и объема указывается цена сделки, а BestBid - цена заявки.
Thanks:

VsevolodG

Avatar
Date: 4/1/2011


Mikhail Sukhov Перейти
VsevolodG Перейти
Проблема в том, что в графике цены и объема по инструменту красным отображается текущая цена, которая зачастую не равна BestBid.Price


В графике цены и объема указывается цена сделки, а BestBid - цена заявки.


А в S# есть возможность получить эту цену сделки?
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 4/1/2011


VsevolodG Перейти
Mikhail Sukhov Перейти
VsevolodG Перейти
Проблема в том, что в графике цены и объема по инструменту красным отображается текущая цена, которая зачастую не равна BestBid.Price


В графике цены и объема указывается цена сделки, а BestBid - цена заявки.


А в S# есть возможность получить эту цену сделки?


Security.LastTrade + экспорт всех сделок.
Thanks: VsevolodG

Igor_B

Avatar
Date: 4/1/2011


Михаил, доброе время.
Вопрос по методу Trader.Connеct().
Из приложения запустили Квик [terminal.Launch()], залогинились. Trader.Connect() - явно не вызывал.
Запускаю startDDE - данные из CustomTable идут. Подписался на событие Trader.Disconnected, пробую отключить
внешние транзакции в Квик - данные все равно экспортируются, прекращаю работу Квика - событие Trader.Disconnected
не срабатывает.
Срабатывает это событие,если вызываю Trader.Connеct(), затем в коде вызываю Trader.Disconnect().
Проясните, как работает Connect.
Спасибо.
Thanks:

Евгений

Avatar
Date: 4/1/2011


Подскажите, добавил на главной форме логирование
Код
// каждая стратегия будет иметь свое собственное окно
this.GuiAsync(() => guiLogger.Strategies.Add(_strategy));

и теперь при попытке добавить дочернюю стратегию в классе стратегии появляется ошибка
Код
Вызывающим потоком должен быть STA, поскольку этого требуют большинство компонентов UI.
Thanks:

Alexander

Avatar
Date: 4/1/2011


Igor_B Перейти
Михаил, доброе время.
Вопрос по методу Trader.Connеct().
Из приложения запустили Квик [terminal.Launch()], залогинились. Trader.Connect() - явно не вызывал.
Запускаю startDDE - данные из CustomTable идут. Подписался на событие Trader.Disconnected, пробую отключить
внешние транзакции в Квик - данные все равно экспортируются, прекращаю работу Квика - событие Trader.Disconnected
не срабатывает.
Срабатывает это событие,если вызываю Trader.Connеct(), затем в коде вызываю Trader.Disconnect().
Проясните, как работает Connect.
Спасибо.


Disconnected не может сработать если до этого не было коннекта с квиком.
метод Connect как раз и подключается к квику.
Thanks:

Alexander

Avatar
Date: 4/1/2011


Евгений Перейти
Подскажите, добавил на главной форме логирование
Код
// каждая стратегия будет иметь свое собственное окно
this.GuiAsync(() => guiLogger.Strategies.Add(_strategy));

и теперь при попытке добавить дочернюю стратегию в классе стратегии появляется ошибка
Код
Вызывающим потоком должен быть STA, поскольку этого требуют большинство компонентов UI.


WPF работает в STA режиме
MSDN - вот полезная ссылка на подробности
Thanks: Евгений

Евгений

Avatar
Date: 4/1/2011


Alexander Перейти
Евгений Перейти
Подскажите, добавил на главной форме логирование
Код
// каждая стратегия будет иметь свое собственное окно
this.GuiAsync(() => guiLogger.Strategies.Add(_strategy));

и теперь при попытке добавить дочернюю стратегию в классе стратегии появляется ошибка
Код
Вызывающим потоком должен быть STA, поскольку этого требуют большинство компонентов UI.


WPF работает в STA режиме
MSDN - вот полезная ссылка на подробности


Спасибо, конечно, за ссылку, но я не могу увязать свою ошибку с полученной информацией. Проблема в том, что у меня дочерние стратегии создаются в отдельных потоках?

З.Ы. Не судите строго я только учусь
Thanks:

Евгений

Avatar
Date: 4/1/2011


Михаил, заметил, что в объекте RealTimeTestTrader нет SecuritiesTable, для тестирования в реальном времени нельзя добавить дополнительные колонки?
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 4/2/2011


Евгений Перейти
Михаил, заметил, что в объекте RealTimeTestTrader нет SecuritiesTable, для тестирования в реальном времени нельзя добавить дополнительные колонки?


RealTimeTestTrader - это обертка над реальным трейдером.
Thanks:

Евгений

Avatar
Date: 4/2/2011


Mikhail Sukhov Перейти
Евгений Перейти
Михаил, заметил, что в объекте RealTimeTestTrader нет SecuritiesTable, для тестирования в реальном времени нельзя добавить дополнительные колонки?


RealTimeTestTrader - это обертка над реальным трейдером.


Это значит что нельзя добавить дополнительные колонки?
Thanks:

Alexander

Avatar
Date: 4/2/2011


Евгений Перейти
Mikhail Sukhov Перейти
Евгений Перейти
Михаил, заметил, что в объекте RealTimeTestTrader нет SecuritiesTable, для тестирования в реальном времени нельзя добавить дополнительные колонки?


RealTimeTestTrader - это обертка над реальным трейдером.


Это значит что нельзя добавить дополнительные колонки?


Добавлять надо у RealTimeTestTrader.Trader
Thanks: Евгений

Евгений

Avatar
Date: 4/2/2011


Alexander Перейти
Евгений Перейти
Mikhail Sukhov Перейти
Евгений Перейти
Михаил, заметил, что в объекте RealTimeTestTrader нет SecuritiesTable, для тестирования в реальном времени нельзя добавить дополнительные колонки?


RealTimeTestTrader - это обертка над реальным трейдером.


Это значит что нельзя добавить дополнительные колонки?


Добавлять надо у RealTimeTestTrader.Trader


Huh Спасибо, снимаю ручник....
Thanks:

Евгений

Avatar
Date: 4/3/2011


Скажите, пожалуйста, есть ли какие-то особенности/преимущества/недостатки использования TimeFrameStrategy и ActionStrategy по мимо того, что
Цитата:
Код, с использованием событий, получается компактнее, чем обычное использование Strategy:
.
Thanks:

a.dobryn

Avatar
Date: 4/6/2011


Что-то я запуталась
Смотрю в отладчике в эту строчку

Код

this.Trader.NewMyTrades += trades => this.GuiAsync(() => _myTradesWindow.Trades.AddRange(trades));

в trades все нормально - там новые сделки. В gui (_myTradesWindow) они появляются. А свойство _myTradesWindow.Trades не меняется - в нем как хранятся старые сделки (которые были до запуска программы), так и хранятся, новых там нет. Так и должно быть? с _ordersWindow.Orders вроде все в порядке - и поступают новые, и обновляется :-?
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 4/6/2011


D_Alex Перейти
В gui (_myTradesWindow) они появляются. А свойство _myTradesWindow.Trades не меняется


Чудес не бывает.
Thanks:

a.dobryn

Avatar
Date: 4/7/2011


Mikhail Sukhov Перейти
D_Alex Перейти
В gui (_myTradesWindow) они появляются. А свойство _myTradesWindow.Trades не меняется


Чудес не бывает.


хм, а сейчас все нормально изменилось. Ничего не понимаю О_о

upd: а сейчас снова то же самое. То есть при запуске на "свежий" профиль, когда при старте DDE сделок не было, новая сделка добавилась нормально
upd2: хотя, если выводить Count в файл, там все нормально..значит, у меня где-то глюк

хотя как-то странно, сделки происходят по одной, а получается

Цитата:

TradesCount = 0
TradesCount = 13
TradesCount = 15


(13 было до запуска)
Thanks:
<< < 9 10 11 12 13  > >>

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

loading
clippy