Добрый день
Наткнулся на форуме на информацию, что примеры уже устарели и лучше использовать событийную модель со ссылкой на документацию (Стратегии - Создание стратегии). Существуют ли примеры помимо SampleSMA?
У меня реализована стратегия в виде отдельного класса, для неё требуются данные из исторической таблицы (qpile). Например это реализовано так:
larryTrader.NewCustomTables += (type, objects) => { Console.WriteLine("larryTrader.NewCustomTables"); ...
//Releasing wait after open position prices have been calculated waitHistory.Set(); } }; larryTrader.CustomTablesChanged += (type, objects) => { if (type == typeof(TodayCandle)) { var candles = objects.Cast<TodayCandle>(); if (candles.ElementAt<TodayCandle>(1).DateTime.Time != lastCloseTime) { lastClosePrice = candles.ElementAt<TodayCandle>(1).ClosePrice; lastCloseTime = candles.ElementAt<TodayCandle>(1).DateTime.Time; Console.WriteLine("{0} New 15 min candle. Open time: {1}. Close price: {2}", DateTime.Now, lastCloseTime, lastClosePrice); } } };
Сделать так:
larryTrader .NewCustomTables .Do(CalculatePosition) .Apply(this);
вроде нельзя. whenNewCustomTables тоже нет. Как правильно делать? По старому? (хоть на RTFM отправьте)))
Комментарии (5)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Добрый.
Сейчас все примеры уже переписаны на событийную модель.
Для того чтобы использовать When необходимы правила. К примеру - так.
и теперь можно использовать
Тогда в CalculatePosition придёт как раз IEnumerable<object> - список из объектов типа TodayCandle.
Это всё можно модифицировать как душе угодно. Надеюсь, принцип теперь более чем ясен :)
Добрый день
Пока никак не выходит переписать на событийную модель. Существует ли пример, в котором реализована стратегия с нестандартным правилом? В доках приведены отрывки кода DeltaHedge strategy, а где можно увидеть полный код стратегии?
С уважением, Егоров Дмитрий
Добрый. Что именно не выходит? Все SmaStrategy в примерах - на событийной модели.
DeltaHedge - это уже закрытая стратегия в S#, код не открываем.
Хорошо, попробую сформулировать вопросы.
Как правильно использовать объект Strategy? Правильно ли я понимаю, что он инициализируется/конструируется, затем нужно вызвать .Start(), и тогда исполнится код OnStarting(). В OnStarting() нужно запихнуть подписку на все необходимые события (все правила). При вызове Stop() будет сделан dispose всего.
Насколько я понял изначально класс и метод уникального правила должны находиться внутри класса стратегии. Верно ли это?
В ответе на мой вопрос Вы вызываете правило как метод larryTrader (QuikTrader). Но это ведь указатель на объект, который дала стратегии основная программа. Откуда он знает про новое правило? (При попытке сделать подобным образом Studio сразу подчёркивает ошибку) Может быть здесь должна быть стратегия? (Видимо ответ тесно связан со 2 вопросом)
Слегка запутался)))
С уважением, Егоров Дмитрий
Вот пример, опять же, из SmaStrategy.cs 3) quikTrader - это объект, который вы передали в стратегию. Он доступен через свойство стратегии Trader. Ведь при инициализации стратегии вы инициализируете свойство Trader:
(из MainWindow.xaml.cs).
поэтому теперь в стратегии в OnStarting можно писать