Видео-уроки: Основной урок:
[vk]http://vk.com/video_ext.php?oid=-66650972&id=167466607&hash=c6ed55fcd6fec380&hd=3[/vk]
Введение в StockSharp.Studio:
В данном уроке настроим Вашу торговую платформу и напишем первого торгового робота!
Выбрать свою платформу:
- Quik.Реальный Quik лучше получать у каждого брокера отдельно. Получить демо.
- SmartCOM. Работает как служба, не требует графической платформы для ручной торговли. Получить демо.
- Альфа-Директ. Демо можно получить только имея реальный счет 😳
- Plaza II. Получить демо (написать письмо, отвечают оперативно). Примерно выглядеть должно оно так.
- Fusion/BlackWood. Уточнение: платформа для торговли не требуется. Получить демо
- Transaq. Если клиент Финама, логин/пароль можно получить в личном кабинете. Transaq абсолютно бесплатный.
Настройка/запуск торговой платформы для робота:
Темы занятия:
Основные концепции StockSharp
- Продукты StockSharp
- Архитектура StockSharp Коннекторы
- Обзор коннекторов
- Специфика передачи данных коннекторов Создание простого приложения
- Подключение к торговой платформе
- Получение портфелей и торговых инструментов
- Отправление первых заявок
Домашнее задание:
- В программе реализована возможность подачи заявок на покупку, теперь нужно сделать возможность подачи заявок на продажу, чтобы пользователь приложения мог как покупать так и продавать.
- Предусмотреть возможность отмены всех активных заявок.
Документация:
Вложения: Скачать проекты
Изменения в проектах:
Проект QuikKiller
Начиная с версии S# 4.1.19.1 статус подключения коннектора вынесен в специальное свойство ConnectionState, которое может принимать следующие значения: Disconnected - Не активно, Disconnecting - В процессе отключения, Connected - В процессе подключения, Connecting - Подключение активно, Failed - Ошибка подключения
Таким образом, теперь нет свойства IsConnected, а наличие статуса подключения мы можем получать от свойства ConnectionState.
Было:
private void CancelClick(object sender, RoutedEventArgs e)
{
//отменить все ордера
if(_trader!= null && _trader.IsConnected)
_trader.CancelOrders();
else
MessageBox.Show("Подключитесь к Quik");
}
Стало:
private void CancelClick(object sender, RoutedEventArgs e)
{
//отменить все ордера
if(_trader != null && _trader.ConnectionState == ConnectionStates.Connected)
_trader.CancelOrders();
else
MessageBox.Show("Подключитесь к Quik");
}
Аналогично, свойство ExportState, которое может принимать те же значения что и свойство ConnectionState: Disconnected - Не активно, Disconnecting - В процессе отключения, Connected - В процессе подключения, Connecting - Подключение активно, Failed - Ошибка подключения
Таким образом, теперь нет свойства IsExportStarted, а статус экспорта данных мы можем получать от свойства ExportState.
Было:
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
if (_trader != null)
{
if (_trader.IsExportStarted)
_trader.StopExport();
_trader.Disconnect();
}
base.OnClosing(e);
}
Стало:
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
if (_trader != null)
{
if (_trader.ExportState == ConnectionStates.Connected)
_trader.StopExport();
_trader.Disconnect();
}
base.OnClosing(e);
}
评论 (9)
登录 或 创建账户, 登录或注册以发表评论
Во-первых, не работает метод initialize - его использование приводит к ошибке. Во-вторых, несмотря на наличия необходимой библиотеки, не работает метод guiAsync, может он как-то поменялся в последних версиях?
В видео автор очень быстро проскакивает момент с автоподменой, не объясняя ее по сути. Но в моем варианте решарпер менять ничего не предлагает.
http://imageshack.com/a/img706/6022/dqjq.png http://imageshack.com/a/img163/3573/gl8h.png
В третьих, все, что качается с командного сервера, не получается открыть через дизайнер. Стоит VB2012 c 7-м решарпером.
Все необходимые библиотеки (такие же, как и в видео) присутствуют.
Кстати, а Вы открывали спойлер "Изменения в проектах"? Там очень четко описано, что поменялось в новых версиях. Потому как наши проекты обновляются вместе с последними версиями S#, следовательно некоторые из названий методов немного меняются. Но на самом деле общая концепция остается полностью такой же.
Возможно вы добавили не все нужные библиотеки в свой проект.
Артем, ответил выше (изменил пост).
StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Указанная транзакция по указанному классу не найдена: "TQBR".
Вот так должен выглядеть код для урока 1 со всеми изменениями при переходе на S# 4.2.2.x
В TFS для урока 1 лежит еще проект QuikKiller, но я не нашел к нему видео, оно есть?
Из урока 1 Проект StockSharpStart запускается без ошибок, но нажатие кнопки Connectни к чему не приводит (инструменты и портфели остаются недоступными). Проект QuikKiller запускается без ошибок, но нажатие кнопки Connectвыдает ошибку "Лицензия не поддерживает QuikTrader".
Из урока 2 Проект MarketDepths_Trades запускается без ошибок, кнопка Connectпри нажатии сразу превращяется в серую Disconnect, но инструменты и портфели остаются недоступными, а при нажатии на кнопку Get Stream Data возникает ошибка: An unhandled exception of type 'System.ArgumentNullException' occurred in StockSharp.Algo.dll Additional information: Значение не может быть неопределенным.
В чем могут быть причины?
Попробуйте обновить S#.API. И скажите свой номер лицензии, пожалуйста.
Спасибо! В личном кабиненте выяснилось, что истекла лицензия, буду генерировать новую.
А кто-нибудь из учеников пробовал переводить эти примеры на другие коннекторы? Меня вот например интересует Транзак. С секцией ММВБ работает корректно. А вот с ФОРТС прикол какой-то. Инструменты видит не как SIH4@FUT, а как SIH4@TEST например. И заявка поданная из терминала так же. SIH4@TEST 848185375 25.02.2014 11:06:46 35700 1 Sell Соответственно заявка через коннектор не проходит с ошибкой "Инструмент не найден ('seccode'=SiH4, 'board='TEST)"
Это что-то в коннекторе или искать причину у брокера ? Почему везде TEST ?