Для изменения размера нажмите или перетащите

Создание свечей по корзине инструментов

Для создания свечей ContinuousSecurity, WeightedIndexSecurity или ExpressionIndexSecurity используется тот же механизм что и при создании свечей Security.

Например создадим 1мин. свечи для спреда GZM5 - LKM5:

C#
private QuikTrader _trader;

private Security _instr1;
private Security _instr2;
private WeightedIndexSecurity _indexInstr;

private const string _secCode1 = "GZM5";
private const string _secCode2 = "LKM5";

private CandleManager _candleManager;
private CandleSeries _indexSeries;

readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1);

private ChartArea _area;
private ChartCandleElement _candlesElem;

...

_area = new ChartArea();
_chart.Areas.Add(_area);

_candlesElem = new ChartCandleElement();
_area.Candles.Add(_candlesElem);

...

_candleManager = new CandleManager(_trader);
_candleManager.Processing += DrawCandles;
....
///Регистрация QuikTrader как ISecurityProvider
ConfigManager.RegisterService<ISecurityProvider>(_trader);
...

_indexInstr = new WeightedIndexSecurity() { Board = ExchangeBoard.Forts, Id = "IndexInstr" };
_indexInstr.Weights.Add(_instr1, 1);
_indexInstr.Weights.Add(_instr2, -1);
_indexSeries = new CandleSeries(typeof(TimeFrameCandle), _indexInstr, _timeFrame)
{
    BuildCandlesMode = BuildCandlesModes.Build,
};
...

_candleManager.Start(_indexSeries);

После этого, в обработчик события Processing - DrawCandles, будут поступать свечи, которые можно вывести на график:

C#
private void DrawCandles(CandleSeries series, Candle candle)
{
    if (series == _indexSeries) 
       {
          var chartData = new ChartDrawData();
          chartData.Group(candle.OpenTime).Add(_candleElement, candle);
          _chart.Draw(chartData);
       }
}
См. также