Урок 3. Все о создании стратегий.
Atom Ответить
01.05.2013


Видео-уроки:

Стратегии


Дочерние стратегии

[vk]http://vk.com/video_ext.php?oid=-66650972&id=167470334&hash=8beb60d403b41756&hd=3" frameborder="0">

Темы занятия:

Работа со стратегиями
  1. Изучение класса Stratеgy
  2. Использование Strategy Rule( Once,Sync,Exclusive и т.д..)
  3. Два примера стратегий с использованием практически всех, рассказанных до этого StrategyRule

StrategyRule
  1. Простые примеры StrategyRule
  2. Сделки

Логирование
  1. Как работать с логированием
  2. Графическое отображение информации

Дочерние стратегии
  1. Котирование
  2. Работа с тейк-профитом, стоплоссом и др. защитными стратегиями
  3. Создание своей собственной стратегии котирования

Запускаем стратегию в S#.Studio (будущее)


Домашнее задание:
  1. Изучить визуальную панель для отображения сатистических параметров StatisticParameterPanel, добавить эту панель в окно пользователя и отобразить в ней информацию из стратегии.


Полезные ссылки:
Класс Strategy
Дочерние стратегии
Логирование

Вложения:
Скачать проекты

Изменения в проектах:

Теги:


Спасибо:




26 Ответов
1 2  >
pft_man

Фотография
Курсы
Дата: 04.06.2013
Ответить


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

IvanB

Фотография
Дата: 04.06.2013
Ответить


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

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

albion8

Фотография
Курсы
Дата: 04.06.2013
Ответить


Добрый день,

на Vimeo отсутствует видео "работа с котировками" https://vimeo.com/channels/mainstocksharp/59397647
Просьба добавить.
Спасибо:

IvanB

Фотография
Дата: 05.06.2013
Ответить


albion8 Перейти
Добрый день,

на Vimeo отсутствует видео "работа с котировками" https://vimeo.com/channels/mainstocksharp/59397647
Просьба добавить.


Видео добавлено
Автор топика
Спасибо:

albion8

Фотография
Курсы
Дата: 10.06.2013
Ответить


Подтверждаю, видео появилось. Спасибо!
Спасибо:

Николай

Фотография
Курсы
Дата: 29.11.2013
Ответить


Добрый день.


Попробовал сделать третий урок первую часть - Стратегия.

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

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

Код
 //========================= Для получения корректного значения рыночной цены с Quik ===============================
            var baseTrader = Trader as QuikTrader;
            if (baseTrader != null)
            {
                // Пробуем "научить" Квик-Трейдер правильно выставлять маркет-ордера при работе с фьючерсами 
                baseTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MaxPrice);
                baseTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MinPrice);
            }
            //=================================================================================================================


В результате стратегия стала покупать, однако отказывается выходить из сделки. Операция просто не выполняется:

Код
15:33:30 TimeFrameCandle_SIZ3@FORTS_00-00-10 (O:33266, H:33266, L:33266, C:33266, V:9): {0}
15:33:40 TimeFrameCandle_SIZ3@FORTS_00-00-10 (O:33267, H:33267, L:33266, C:33266, V:10): {0}
signalStopBuy
15:33:50 TimeFrameCandle_SIZ3@FORTS_00-00-10 (O:33267, H:33267, L:33266, C:33266, V:70): {0}
signalStopBuy


И позиция с купленным фьючерсом продолжает висеть.

Подскажите пожалуйста:

В чем могут быть проблемы с
Код
RegisterOrder(this.SellAtMarket());
?

И почему первоначальный вариант отказывался делать операции по фьючерсам в принципе?
Спасибо:

IvanB

Фотография
Дата: 01.12.2013
Ответить


Николай Перейти
Добрый день.


Попробовал сделать третий урок первую часть - Стратегия.

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

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


Дело в том, что методы SellAtMarket и BuyAtMarket для фьючерсов используют цены, из столбцов МасимальнаяЦена и МинимальнаяЦена, для этого мы добавляем код:
Код

 //========================= Для получения корректного значения рыночной цены с Quik ===============================
            var baseTrader = Trader as QuikTrader;
            if (baseTrader != null)
            {
                // Пробуем "научить" Квик-Трейдер правильно выставлять маркет-ордера при работе с фьючерсами 
                baseTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MaxPrice);
                baseTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MinPrice);
            }
            //=================================================================================================================


И соответственно нужно добавить эти столбцы в Quik, что Вы не сделали, я предполагаю.

Еще есть вариант для получения маркет заявок - использовать расширенные методы SellAtMarketEx и BuyAtMarketEx, реализицию которых можно найти в проекте по пути (tfs): $/StockSharp Lessons/StockSharp.Edu/Additional/Algo/CommonStrategy
Автор топика
Спасибо:

Николай

Фотография
Курсы
Дата: 02.12.2013
Ответить


Иван,

Действительно замена BuyAtMarket на BuyAtLimit с ценой выставления превышающую BestAsk на несколько пунктов, изменило ситуацию. (аналогично с Sell)


Спасибо.
Спасибо:

Николай

Фотография
Курсы
Дата: 03.12.2013
Ответить


Возник еще один вопрос.

Правильно ли я понимаю что для фьючерсов не работает ClosePosition (закрытие открытых позиций)?

Есть ли аналог для фьючерсов или надо самому писать ? (Возможно просто перегрузить данный метод?)
Спасибо:

IvanB

Фотография
Дата: 03.12.2013
Ответить


Николай Перейти
Возник еще один вопрос.

Правильно ли я понимаю что для фьючерсов не работает ClosePosition (закрытие открытых позиций)?

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

Есть ли аналог для фьючерсов или надо самому писать ? (Возможно просто перегрузить данный метод?)


Можно перегрузить метод, за основу взять реализацию метода, но переписать на SellAtMarketEx и BuyAtMarketEx.

https://stocksharp.codeplex.com/...tegies/StrategyHelper.cs
Автор топика
Спасибо:

Николай

Фотография
Курсы
Дата: 04.12.2013
Ответить


albion8 Перейти
Подтверждаю, видео появилось. Спасибо!


IvanB Перейти
albion8 Перейти
Добрый день,

на Vimeo отсутствует видео "работа с котировками" https://vimeo.com/channels/mainstocksharp/59397647
Просьба добавить.


Видео добавлено


Так и не увидел, где добавленное видео.

При попытке открыть ссылку ничего не выдает.

Опять убрали???
Спасибо:

JaguarFX

Фотография
Курсы
Дата: 13.01.2014
Ответить


При выполнении урока в момент вызова candlemanager.Start(candleseries)

ошибка {"Заданный аргумент находится вне диапазона допустимых значений.\r\nИмя параметра: min"}
С чем это может быть связано? и что это вообще за параметр min? (в свойствах объектов CandleManager/CandleSeries/Security такой отсутствует)
SM-Error-1.jpg 455,8KB (2)
Спасибо:

JaguarFX

Фотография
Курсы
Дата: 13.01.2014
Ответить


В общем путем экспериментов установил что для TransaqTrader указанная выше ошибка не возникает, только для AlfaTrader.
Спасибо:

IvanB

Фотография
Дата: 14.01.2014
Ответить


lebedevsrg Перейти
В общем путем экспериментов установил что для TransaqTrader указанная выше ошибка не возникает, только для AlfaTrader.


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

JaguarFX

Фотография
Курсы
Дата: 14.01.2014
Ответить


Вот стек

Версия API 4.2.1.7
Спасибо:

IvanB

Фотография
Дата: 16.01.2014
Ответить


lebedevsrg Перейти
Вот стек

Версия API 4.2.1.7

Ошибка возникает в оригинальном коде урока?
Есть подозрение, что инфраструктура настроена не верно, что влечет к ошибке.
Автор топика
Спасибо:

Aton5

Фотография
Курсы Благотворитель
Дата: 16.01.2014
Ответить


Здравствуйте! На Vimeo отсутствует видео "Видео-уроки (экстра):
Отслеживание сигналов по котировкам (00:09:50)" т.е. "работа с котировками" https://vimeo.com/channels/mainstocksharp/59397647
Просьба добавить.
Спасибо:

archmag

Фотография
Курсы
Дата: 20.01.2014
Ответить


Здравствуйте! Не увидел, где можно скачать проекты-коды из уроков.
Спасибо:

IvanB

Фотография
Дата: 20.01.2014
Ответить


archmag Перейти
Здравствуйте! Не увидел, где можно скачать проекты-коды из уроков.


https://stocksharp.ru/fo...haty--komandnaia-rabota/
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 08.02.2014
Ответить


С уроком 3 Логгирование есть проблемы:

Все уроки построены на версии S# 4.1.1.19, в то время как текущая ветка S# 4.2.x.
В примерах используется StockSharp.TraderConnection.dll и StockSharp.WPFConnectionInterface.dll, которые основаны на ветке 4.1.x (и соответсвенно на BaseTrader вместо Connector). Даже если собрать .TraderConnection.dll и .WPFConnectionInterface.dll по урокам 1 и 2 самому, и заменить References, то возникают проблемы с запуском урока:
- В уроках не рассматривался метод ConnectionInterFace.PushInformationToStrategy(), соответвсенно в собственных библиотеках его нет, что и как он делает непонятно - проект уже не запускается
- Если делать все самому, заменить рефы на свои и попытаться собрать проект, то при компиляции вылетает ошибка на MonitorWindow _monitorWindow = new MonitorWindow() - XamlParseException occurred: "The invocation of the constructor on type 'StockSharp.Xaml.LogSourceTree' that matches the specified binding constraints threw an exception."

Огромная просьба как можно быстрее пересобрать .TraderConnection.dll и .WPFConnectionInterface.dll для ветки 4.2.x так как на них базируются все уроки, начиная с 3

Возможно будут еще ошибки, но пока скомпилировать и запустить проект невозможно из-за текущих проблем. Очень жаль, так как урок классный, хотелось бы поиграть с разными настройками и посмотреть что можно сделать вне рамок данного урока
Спасибо:

devruss

Фотография
Курсы
Дата: 09.02.2014
Ответить


Также StockSharp.Xaml из ветки 4.2.x не подходит к примерам в уроках, нужно использовать только версию от 4.1.1.x
Спасибо:

Валентин Мирошниченко

Фотография
Автор статей
Дата: 09.02.2014
Ответить


Мы уже переносим примеры на новую версию библиотеки. Совсем скоро они будут доступны на нашем сервере.
Спасибо:

andy_baka

Фотография
Курсы
Дата: 03.09.2014
Ответить


Господа, добрый день!

Из урока про дочерние стратегии пытаюсь просто повторить пример:

_order.WhenNewTrades().Do(trades => trades.ForEach(t =>
{
var stoploss = new StopLossStrategy(t, 5);
ChildStrategies.Add(stoploss);

})).Apply(this);

Ругается на конструкцию trades => trades.ForEach

Что не так сделано?

Ecng.Collections включен.

Библиотека - 4.2.18
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 03.09.2014
Ответить


Предлагаю общение в скайп перенести https://stocksharp.ru/fo...ype--Khoroshiie-novosti/ Сейчас только там все общаются. Кстати, вопрос задавали уже несколько раз этот.
Спасибо:

andy_baka

Фотография
Курсы
Дата: 03.09.2014
Ответить


Спасибо, Михаил
Спасибо:
1 2  >

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

loading
clippy