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

Не формируются свечи
Atom
10/29/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);

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


Tags:


Thanks:


< 1 2 
Tauler

Avatar
Date: 10/29/2012
Reply


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

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

Делаю так:

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

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

    ```csharp

public RangeHLCandleBuilder()

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

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

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

Tauler

Avatar
Date: 10/29/2012
Reply


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

Thanks:

Tauler

Avatar
Date: 10/29/2012
Reply


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

Thanks:

Tauler

Avatar
Date: 10/30/2012
Reply


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

    ```csharp

public RangeHLCandleBuilder()


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

Mikhail Sukhov

Avatar
Date: 10/30/2012
Reply


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

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

Thanks:

Tauler

Avatar
Date: 10/31/2012
Reply


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

Thanks:
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy