Не формируются свечи
Atom
29.10.2012
Tauler


Коллеги!

Никак не соображу в чем проблема, вот код (версия 4.1.4) :

security = new Security { Id = "GAZP@EQNE", MinStepSize = 0.01m, Exchange = Exchange.Micex };
        List<Trade> trades = makeDealsFromHistory(edtPathToHistoryFile.Text);
        foreach (var trade in trades)
        {
            trade.Security = security;
            trade.OrderDirection = OrderDirections.Sell;
        }
        DateTime from = trades.Min(trade => trade.Time).AddDays(-1);
        DateTime to = trades.Max(trade => trade.Time).AddDays(1);
        var builderSource = new RawConvertableCandleBuilderSource<Trade>(security, from , to, trades);

        CandleSeries series = new CandleSeries(typeof(RangeHLCandle), security, edtStockRange.Value);
        CandleManager candleManager = new CandleManager();
        candleManager.Sources.Add(new RangeHLCandleBuilder { Sources = { builderSource }});

        candleManager.Start(series);
        List<RangeHLCandle> candles1 = series.GetCandles<RangeHLCandle>().ToList();

        chartMain.Series[0].Points.DataBind(candles1, String.Empty, "LowPrice,HighPrice,OpenPrice,ClosePrice",
                                            "Tooltip = HighPrice");
    }

}

Вроде все делаю как в мануале и как во многих ветках форума тут, однако свечи упорно не формируются, список candles1 - пустой. Дело даже не доходит до методов CreateCandle, UpdateCandle, IsCandleFinishedBeforeChange в самой реализации RangeHLCandleBuilder : CandleBuilder , в метод GetSupportedRanges один раз заходит, судя по всему из candleManager.Start(series);

Помогите кто чем может!


Теги:


Спасибо:


< 1 2 
Tauler

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


Коллеги, осталось чуть чуть до полной победы разума над бездушной машиной :)

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

Делаю так:

IList data = Container.GetValues(series, candle).ToList();

но в итоге в data пусто. С контейнерами я ничего не химичил,вот оба конструктора:

    ```csharp

public RangeHLCandleBuilder()

    public RangeHLCandleBuilder(ICandleBuilderContainer container) : base(container)
    {} 

Есть какие либо мысли?

Вручную нигде в этот контейнер не надо ничего совать?
Спасибо:

Tauler

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


Отцы-основатели, ну вы хоть помогите :)

Спасибо:

Tauler

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


protected override bool IsCandleFinishedBeforeChange(CandleSeries series, RangeHLCandle candle, ICandleBuilderSourceValue value)
        {
            Container.AddValue(series, candle, value);
            var data = Container.GetValues(series, candle);
            int i = data.Count();
         }

Даже тут i получается 0. В чем секрет, никто не знает? Версия стокшарпа 4.1.4

Спасибо:

Tauler

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


Нашел секрет. Почему то по умолчанию свойство Container.ValuesKeepTime = 00:00:00. Хотя в документации Время хранения ICandleBuilderSourceValue в памяти. По-умолчанию равно 2-ум дням. Но заметил - если в конструкторе

    ```csharp

public RangeHLCandleBuilder()


то в коллекции IList<ICandleBuilderSourceValue> data = Container.GetValues(series, candle).ToList(); есть сделки.
Но сам процесс построения свечей гораздо дольше.
Спасибо:

Mikhail Sukhov

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


Tauler: Нашел секрет. Почему то по умолчанию свойство Container.ValuesKeepTime = 00:00:00. Хотя в документации Время хранения ICandleBuilderSourceValue в памяти. По-умолчанию равно 2-ум дням.

Спасибо, поправим.

Спасибо:

Tauler

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


Михаил, хочу обратить внимание,что при Container.ValuesKeepTime = 00:00:00 свечки порезвей строятся. Ну или мне показалось.

Спасибо:
< 1 2 

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

loading
clippy