Гидра формирует кривые свечки?
Atom
26.03.2013


или я чего-то не понимаю...

15 минутные:
15min
лишняя свечка в конце дня.

часовые:

час

лишняя в конце дня, плюс свечка с окончанием в 18.45 отображается с временем окончания 18 и OHLC одинаковые...

Теги:


Спасибо:


< 1 2 3 
esper

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


1. При выводе данных вы используете CloseTime, а в Гидре используется OpenTime.
2. Каким образом вы строите свечки у себя? По сделкам или загружаете именно свечки из хранилища?
3.
Цитата:
Как сделать, чтобы для последней свечки событие .WhenCandlesFinished() поднималось не во время начала новой свечки на след день, а по завершении сессии?

Ссылку на подобное обсуждение вы сами привели. Только стоит подумать, имеет ли это смысл, т.к. после завершения последней свечки вы все-равно уже ничего не сделаете.
4. Не думаю, что WorkingTime причина проблем. Проверил у себя, свечки точь в точь совпадают с теми, что вы выгрузили из Гидры. У меня используется подобный подход.
Спасибо:

profts

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


Видел, что вы читаете тему и надеялся, что ответите )
1. При выводе тоже пишу OpenTime:
Код

series_1
                .WhenCandlesFinished()
                .Do(ProcessCandle_1)
                .Apply(this);
...
private void ProcessCandle_1(Candle candle)
        {
            var candle_string = candle.OpenTime.TimeOfDay.ToString();
                candle_string += ";";
                candle_string += candle.OpenPrice.ToString();
                candle_string += ";";
                candle_string += candle.HighPrice.ToString();
                candle_string += ";";
                candle_string += candle.LowPrice.ToString();
                candle_string += ";";
                candle_string += candle.ClosePrice.ToString();
                candle_string += candle.TotalVolume.ToString();
                this.AddInfoLog(candle_string);
}


получаю свечки такого вида:
Код

2013/03/25 23:00:00.001|       22:00:00;140620.0000000;140750.0000000;140510.0000000;140620.000000036455
2013/03/26 10:00:00.000|       23:00:00;140620.0000000;140620.0000000;140620.0000000;140620.000000014298
2013/03/26 10:00:00.001|       10:00:00;140720.0000000;140720.0000000;140350.0000000;140670.000000021449
2013/03/26 11:00:00.001|       10:00:00;140740.0000000;141190.0000000;140460.0000000;140920.0000000127852
2013/03/26 12:00:00.001|       11:00:00;140910.0000000;141580.0000000;140810.0000000;141410.0000000117363
2013/03/26 13:00:00.001|       12:00:00;141410.0000000;141440.0000000;140350.0000000;141100.0000000189043

т.е. в начале каждой последующей свечки срабатывает событие .WhenCandlesFinished().
а для последней свечки оно срабатывает дважды - в начале торговой сессии, т.е. в 10.00 и когда начинает формироваться новая свечка, т.е. в 10.00.00.001.

2.Повторюсь. в данном случае я полностью использую шаблон SampleHistoryTesting. ну и естественно выставил UseCandleTimeFrame. т.е., насколько я понимаю, подгружаются уже готовые финамовские свечки из хранилища. т.е. ошибка возникает из-за WorkingTime.
3. да ссылку то привел ... )))) но моих познаний в программировании не хватило, чтобы осилить умную фразу Александра Муханчикова про какое-то переопределение и т.д. )))
После завершения свечки мне ничего делать и не нужно. Это просто тестер, который изначально считает необходимые параметры для нейронки на основе свечек и записывает их а базу, потом нейронка обучается по этой базе и затем уже на полученных знаниях я снова прогоняю тест уже с рисованием эквити и т.д. Т.е. нужны просто правильные свечки, чтобы все индикаторы и параметры рассчитывались корректно...
4. В вашей ссылке свечки строятся из тиков, с этим никогда не было проблем )

Спасибо:

esper

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


Выложите bin файлы часовиков для 25 и 26 числа.
Спасибо:

profts

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


Сделал еще проще... Чтобы показать в чем проблема...
Запускаю SampleHistoryTesting из 4.1.9.
Все оставляю как есть, кроме:
меняю таймфрейм на:
Код

var timeFrame = TimeSpan.FromMinutes(60);

и в SmaStrategy.cs комментирую все, кроме строки:
Код

this.AddInfoLog("Новая свеча {0}: {1};{2};{3};{4}; объем {5}".Put(candle.OpenTime, candle.OpenPrice, candle.HighPrice, candle.LowPrice, candle.ClosePrice, candle.TotalVolume));

на выходе получаю:
Код

2012/10/30 21:00:00.001|       Новая свеча 30.10.2012 20:00:00: 142330.0000000;142440.0000000;142080.0000000;142080.0000000; объем 13765
2012/10/30 22:00:00.001|       Новая свеча 30.10.2012 21:00:00: 142090.0000000;142220.0000000;142030.0000000;142140.0000000; объем 10005
2012/10/30 23:00:00.001|       Новая свеча 30.10.2012 22:00:00: 142130.0000000;142150.0000000;141960.0000000;142150.0000000; объем 7250
2012/10/31 10:00:00.000|       Новая свеча 30.10.2012 23:00:00: 142150.0000000;142150.0000000;142150.0000000;142150.0000000; объем 3762
2012/10/31 10:00:00.001|       Новая свеча 30.10.2012 10:00:00: 142310.0000000;142310.0000000;142040.0000000;142270.0000000; объем 5643
2012/10/31 11:00:00.001|       Новая свеча 31.10.2012 10:00:00: 142210.0000000;143180.0000000;142060.0000000;143140.0000000; объем 112085
2012/10/31 12:00:00.001|       Новая свеча 31.10.2012 11:00:00: 143130.0000000;143490.0000000;142660.0000000;143420.0000000; объем 121099


)))
Спасибо:

profts

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


"Выложите bin файлы часовиков для 25 и 26 числа.":
http://rusfolder.com/35703295
http://rusfolder.com/35703296
Спасибо:

profts

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


Собственно нашел частичное решение проблемы:
на вход подавать готовые финамовские свечки 5 минутные, а в series уже указывать таймфрейм 60 мин:

Код

var timeFrame = TimeSpan.FromMinutes(5);
var timeFrame2 = TimeSpan.FromMinutes(60);
...
UseCandleTimeFrame = timeFrame
...
var series = new CandleSeries(typeof(TimeFrameCandle), security, timeFrame2);


на выходе все отлично:
Код

2013/03/25 22:00:00.001|       Новая свеча 25.03.2013 21:00:00: 140260.0000000;140660.0000000;140140.0000000;140600.0000000; объем 71381
2013/03/25 23:00:00.001|       Новая свеча 25.03.2013 22:00:00: 140620.0000000;140750.0000000;140510.0000000;140620.0000000; объем 36455
2013/03/26 10:00:00.001|       Новая свеча 25.03.2013 23:00:00: 140620.0000000;140720.0000000;140350.0000000;140670.0000000; объем 35747
2013/03/26 11:00:00.001|       Новая свеча 26.03.2013 10:00:00: 140740.0000000;141190.0000000;140460.0000000;140920.0000000; объем 127852
2013/03/26 12:00:00.001|       Новая свеча 26.03.2013 11:00:00: 140910.0000000;141580.0000000;140810.0000000;141410.0000000; объем 117363
2013/03/26 13:00:00.001|       Новая свеча 26.03.2013 12:00:00: 141410.0000000;141440.0000000;140350.0000000;141100.0000000; объем 189043


P.S. с подгрузкой готовых 15 минутных свечек такой вариант уже не прокатывает ))) т.е. опять же последняя 15 мин свечка 23.45 - 0.00. и также как и часовая разбивается на две )
Спасибо:

esper

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


Багу нашел. Связано с сохранением свечек с Финама.
Спасибо: profts
< 1 2 3 

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

loading
clippy