2017-05-08 39 views
0

QCandlestickSeriesQBarSeriesを使用して金融株価チャート(価格と量)を作成しようとしています。同じQChartにQCandlestickSeriesとQBarSeriesを追加する方法

しかし、私は問題に固執しています。同じチャートに2つのシリーズを追加するにはどうすればいいですか?

コード:価格燭台については

... 
QChart *pChart = new QChart; 
QCandlestickSeries *pPriceSeries = new QCandlestickSeries; 
QBarSeries *pVolumeSeries = new QBarSeries; 
QBarSet *pVolumeSet = new QBarSet("Volume"); 
QList<qreal> listVolume; 

QDateTimeAxis *pAxisX = new QDateTimeAxis; 
QValueAxis *pAxisY = new QValueAxis; 

while (!pFile.atEnd()) 
{ 
    ... 
    // Parsing a file with stock data line by line 
    // dOpen, dHigh, dLow and dClose - stock price 
    // dVolume - volume 
    // dt - date and time 
    // nSeconds - number of seconds depending of interval (1/5/10 minutes, Day, Week, Month) 
    ... 
    // Setting ranges to date and time axis, X 
    // one interval is left/right margin 
    if (pAxisX->max() < dt) pAxisX->setMax(dt.addSecs(nSeconds)); 
    if (pAxisX->min() > dt || pAxisX->min().toUTC().toSecsSinceEpoch() == 0) 
     pAxisX->setMin(dt.addSecs(-nSeconds)); 

    // Setting ranges to value axis, Y 
    // 50px is top/bottom margin 
    if (pAxisY->max() < dHigh) pAxisY->setMax(dHigh + 50.0); 
    if (pAxisY->min() > dLow || pAxisY->min() == 0.0) 
     pAxisY->setMin(dLow - 50.0); 

    // Create new price candlestick 
    QCandlestickSet *pPriceSet = new QCandlestickSet(dOpen, dHigh, dLow, dClose, dt.toMSecsSinceEpoch()); 
    pPriceSeries->append(pPriceSet); 

    // Append volume value to the list 
    // for example: 568 000/10 000 = 56.8 
    listVolume.append(dVolume/10000.0); 
} 

// Add price series to chart 
pChart->addSeries(pPriceSeries); 

// Fill in the volume set from the list 
for (qint64 nVolume = 0; nVolume < listVolume.size(); nVolume++) 
    // For example: 56.8 + 2887.0 = 2943.8 
    pVolumeSet->append(listVolume.at(nVolume) + pAxisY->min()); 

// Add volume series to chart 
pVolumeSeries->append(pVolumeSet); 
pChart->addSeries(pVolumeSeries); 

// Set chart axis X 
pChart->setAxisX(pAxisX, pPriceSeries); 
pChart->setAxisX(pAxisX, pVolumeSeries); 

// Set chart axis Y 
pChart->setAxisY(pAxisY, pPriceSeries); 
pChart->setAxisY(pAxisY, pVolumeSeries); 

... 

- すべてはOKですが、私はチャート上のボリュームバーを見ることができない(!しかし伝説が表示されている)、私はなぜ知りません...

Price candlesticks without volume

私が間違って何をしているのですか?事前にお返事ありがとうございます。 周りの仕事:;

答えて

関連する問題