Получение свечки реального времени от Альфа-Директ


Получение свечки реального времени от Альфа-Директ
Atom
03.07.2012


BBB

Фотография
Здравствуйте, прочитал всю документацию но никак не получается это реализовать(версия 4.1.1), может кто даст рабочий пример кода...

Теги:


Спасибо:


< 1 2 3 
Mikhail Sukhov

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


UsilaDobry Перейти
Михаил Сухов Перейти
UsilaDobry Перейти
Изменил немного код вывода значений индикатора, картинка без изменений...


IIndicator.IsFormed проверяется?


Разве свойство значения индикатора IsFinal = true не решает эту проверку?


IsFinal - это свойство, определяющее что данные окончательные в текущем ТФ. IsFormed - что индикатор сформировался и готов к работе (в т.ч. и отрисовки на графике). Посмотрите математическую формулу скользящих (я так понимаю Полосы на основе них сделаны). Все станет понятно.
Спасибо:

UsilaDobry

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


Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только свечи по оператору else...
Код
_series.ProcessCandle += candle =>
                            {
                                    if (candle.State == CandleStates.Finished && _chartBollingerElement.Indicator.IsFormed)
                                    {
                                        var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
                                        this.GuiAsync(() => _chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
                                                    {
                                                        {_candlesElem, candle},
                                                        {_chartBollingerElement, new ChartIndicatorValue(_chartBollingerElement.Indicator, valueBb)},
                                                    }));
                                    }
                                    else
                                    {
                                        this.GuiAsync(() => _chartWindow.Chart.ProcessCandle(_candlesElem, candle));
                                    }
                            };


И почему же я указываю выводить в debug значения законченных свечей, а выводятся 5-секундные значения изменяемой свечи?..

Код
_series.ProcessCandle += candle =>
                    {
                        if (candle.State != CandleStates.Finished)
                            return;

                        Debug.WriteLine("{0}", candle.ToString());
                    };
Спасибо:

Mikhail Sukhov

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


UsilaDobry Перейти
Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только свечи по оператору else...


Сейчас код неправильно написан в корне... Мне кажется надо не игнорировать, а понять, что такое IsFormed. Давайте резберем формулу скользящей средней.
Спасибо:

UsilaDobry

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


Михаил Сухов Перейти
UsilaDobry Перейти
Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только свечи по оператору else...


Сейчас код неправильно написан в корне... Мне кажется надо не игнорировать, а понять, что такое IsFormed. Давайте резберем формулу скользящей средней.


Простая скользящая средняя цены закрытия это среднее арифметическое значений цены закрытия за период. В нашем случае период = 20.
В моем понимании свойство SMA.IsFormed = true, т.е. индикатор сформирован, значит есть минимум 20 значений цены закрытия, которые позволяют рассчитать первое значение индикатора, до тех пор, пока не будут получены 20 значений цены закрытия
свойство SMA.IsFormed = false.
Спасибо:

Mikhail Sukhov

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


UsilaDobry Перейти
Простая скользящая средняя цены закрытия это среднее арифметическое значений цены закрытия за период. В нашем случае период = 20.
В моем понимании свойство SMA.IsFormed = true, т.е. индикатор сформирован, значит есть минимум 20 значений цены закрытия, которые позволяют рассчитать первое значение индикатора, до тех пор, пока не будут получены 20 значений цены закрытия
свойство SMA.IsFormed = false.


Ну вот, а вы индикатор то в своем коде не заполняете. Как ему сформироваться при этом?
Спасибо: UsilaDobry

UsilaDobry

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


Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжимается и на последней свечке стягивается в точку (вложение 2)...? Хотя, согласно кода на последней свечке вообще не должно быть вычисление индикатора пока она в состоянии изменения...



Спасибо:

Mikhail Sukhov

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


UsilaDobry Перейти
Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжимается и на последней свечке стягивается в точку (вложение 2)...?


А теперь изучайте что такое IsFinal[laugh]
Спасибо:

UsilaDobry

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


Михаил Сухов Перейти
UsilaDobry Перейти
Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжимается и на последней свечке стягивается в точку (вложение 2)...?


А теперь изучайте что такое IsFinal[laugh]


[confused]
Как я понимаю, IsFinal=true например для 10-минутного графика означает, что после формирования 10-минутной свечи (когда она примет состояние Finished) значение индикатора больше не будет изменяться, оно будет окончательным.
Спасибо:

UsilaDobry

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


Странно...Вернул всё в первоначальный вид, (топик #18), убрал проверку на IsFormed, ничего не изменилось...Всё также, как в топике #27. Я уже закипаю...

Спасибо:

UsilaDobry

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


Почему с AlfaDirect выводятся график завершенные и последняя незавершенная свечи? В Quik такого нет, при исполнении такого кода выводятся только завершенные свечи... Или это особенность терминала AlfaDirect?

Код
_series.ProcessCandle += candle => 
                    {
                        if (candle.State == CandleStates.Finished)
                        {
                            this.GuiAsync(() =>_chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
                                                                         {
                                                                             {_candlesElem, candle},
                                                                         }));
                            
                        }
                        
                    };
Спасибо:
< 1 2 3 

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

loading
clippy