Урок 4. Свечи, графики, история
Atom
01.05.2013
IvanB


Видео-уроки (основное):
Свечи, индикаторы, стратегия, метки, вывод на график



[vk]http://vk.com/video_ext.php?oid=-66650972&id=167470235&hash=5354329b0f44e11a&hd=3[/vk]

Исторические свечи, стратегия, вывод на график

[vk]http://vk.com/video_ext.php?oid=-66650972&id=167470340&hash=d4a2baaf8c533bc8&hd=3[/vk]

Видео-уроки (экстра):
Создание и работа с кластерными свечками

[vk]http://vk.com/video_ext.php?oid=-66650972&id=167470847&hash=05646cb903828f2e&hd=3[/vk]

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

Свечи (S# документация)
  1. Получение свечей из торгового терминала
  2. Вывод свечного графика

Индикаторы (S# документация)
  1. Создание простого собственного индикатора
  2. Вывод графика индикатора

Стратегия (S# документация)
  1. Получение заявок и сделок
  2. Вывод меток заявок и сделок на график

Работа с графиком (SciChart)
  1. Работа с областями графика
  2. Создание и использование графических элементов

Создание модуля для получения исторических данных
Создание сборки с получением исторических свечей, отрисовкой графиков и запуском стратегии
Выводим свечной график в S#.Studio


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

Полезные ссылки:
Свечи, документация

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

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

Теги:


Спасибо:


1 2 3  > >>
UsilaDobry

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


Увидел в Вас в примере код свойства:
Код
private bool NoActiveOrders
 {  get { return Orders.Count(o => o.State != OrderStates.Done) == 0 && PendingOrders.Count() == 0; } }

Я бы его написал вот так
Код
private bool NoActiveOrders { get { return Orders.Count(o => o.State == OrderStates.Active) == 0; } }


А в чем замысел?
Спасибо:

UsilaDobry

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


Что-то я не пойму, как мне коллекцию свечей из метода GetHistoryCandles(); передать в метод ProcessCandle(CandleSeries series, Candle candle)?..
В уроке метод Draw(Candle), принимает только свечи, а у меня при выводе на график ProcessCandle(CandleSeries series, Candle candle) принимает еще и серию свечей... В моем варианте использовать метод GetHistoryCandles() не получится?

Спасибо:

IvanB

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


UsilaDobry
Что-то я не пойму, как мне коллекцию свечей из метода GetHistoryCandles(); передать в метод ProcessCandle(CandleSeries series, Candle candle)?..
В уроке метод Draw(Candle), принимает только свечи, а у меня при выводе на график ProcessCandle(CandleSeries series, Candle candle) принимает еще и серию свечей... В моем варианте использовать метод GetHistoryCandles() не получится?



Можно сделать так:
Код

foreach (var candle in GetHistoryCandles())
{
   ProcessCandle(null, candle);
}

В методе ProcessCandle Вы не используете аргумент CandleSeries series, можно подписаться на получение свечей так:
series.ProcessCandle += ProcessCandle;
в место этого:
_candleManager.Processing += ProcessCandle;
и изменить заголовок метода:
private void ProcessCandle(Candle candle)

тогда получать свечи можно так:
Код

foreach (var candle in GetHistoryCandles())
{
   ProcessCandle(candle);
}

Спасибо: UsilaDobry

UsilaDobry

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


IvanB

В методе ProcessCandle Вы не используете аргумент CandleSeries series, можно подписаться на получение свечей так:
series.ProcessCandle += ProcessCandle;
в место этого:
_candleManager.Processing += ProcessCandle;
и изменить заголовок метода:
private void ProcessCandle(Candle candle)

тогда получать свечи можно так:
Код

foreach (var candle in GetHistoryCandles())
{
   ProcessCandle(candle);
}



Может в таком случае можно не использовать foreach, а сделать как в видео-уроке

Код
GetHistoryCandles().ForEach(ProcessCandle);


но я не могу этого сейчас испробовать, поскольку срок на демосервер истек, а новые ключи вчера получил, но они не прокатывают. Написал письмо в техподдержку Квика, пока молчат... Процесс остановился [biggrin]
Наконец-то подключили...
Проверил, такой вариант работает, но график индикаторов выводит не корректно...
Спасибо:

UsilaDobry

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


И таким способом
Код
foreach (var candle in GetHistoryCandles())
{
   ProcessCandle(null, candle);
}

и таким способом
Код
GetHistoryCandles().ForEach(ProcessCandle);

история выводится корректно, и свечи и индикаторы, но склейка получается неправильная...
например при выводе реальной свечи на 10 минутном графике после свечи 12:10 рисуется свеча 12:45, потом после Finished становится свечой 12:20.
Также в месте склейки искажаются индикаторы...На истории индикаторы переходят из одного дня в другой плавно, а в месте склейки идёт явный разрыв значений...
Что можно придумать...?
Спасибо:

IvanB

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


UsilaDobry
И таким способом
Код
foreach (var candle in GetHistoryCandles())
{
   ProcessCandle(null, candle);
}

и таким способом
Код
GetHistoryCandles().ForEach(ProcessCandle);

история выводится корректно, и свечи и индикаторы, но склейка получается неправильная...
например при выводе реальной свечи на 10 минутном графике после свечи 12:10 рисуется свеча 12:45, потом после Finished становится свечой 12:20.
Также в месте склейки искажаются индикаторы...На истории индикаторы переходят из одного дня в другой плавно, а в месте склейки идёт явный разрыв значений...
Что можно придумать...?


Если учесть то, что в демо квике данные поступают со сдвигом во времени, и учесть что исторические данные мы качаем реальные, которые были, то тогда становится понятно почему склейка получается "кривая". Т.е. причина в демо данных, которые никак не состыкуются с реальной историей.
Спасибо: UsilaDobry

pft_man

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


А какие ещё темы есть в SciChart.ChartTheme, кроме ExpressionDark? Я искал в документации и на форуме, но ничего не нашёл.
Спасибо:

UsilaDobry

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


pft_man
А какие ещё темы есть в SciChart.ChartTheme, кроме ExpressionDark? Я искал в документации и на форуме, но ничего не нашёл.


Доступные темы: ExpressionLight, ExpressionDark, BlackSteel, BrightSpark, Chrome, Electric, Oscilloscope
Спасибо:

pft_man

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


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

pft_man

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


А как нарисовать на графике свой трейлинг-стоп так, чтобы он ещё и на истории показывался? В Wealth-Lab для этого существует метод PlotStops(), который просто рисует стопы, а я рассчитываю сами значения стопов.

Единственный вариант - сделать свой индикатор, рассчитывающий трейлинг-стоп, так? Такой индикатор будет иметь значение IsFormed, когда есть позиция. То есть он привязан к стратегии. Как лучше это в коде организовать?

И есть ли свойство у ChartIndicatorElement, позволяющее рисовать не линии, а точки, например. Если нет, то как можно это сделать?
Спасибо:
1 2 3  > >>

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

loading
clippy