ROOT学习——带有二维直方图的蜡烛图示例(candleplot.C)

  蜡烛图又称日本线、K线、阴阳线、棒线等,目前常用的说法百是“K线”以下统称K线。K线源于日本德川幕府时代(1603~1867年)的米市交易,用来计算米价每天的涨跌,后来把它引入股票市场价格走势的分析中,目前已成为股票、外汇技术分析中的重要方法。是技术分析的一种,最早为日本人于十九世纪所度创,被当时日本米市的商人用来记录米市的行知情与价格波动,包括开市价、收市价、最高价及最低价,阳烛代表当日升市,阴烛代表跌市。这种图表分析法在当时的中国以至整个东南亚地区均尤为流行。由于用这种方法绘制出来的图表形状颇似一根根蜡烛道,加上这些蜡烛有黑白之分,因而也叫阴阳线图表。通过K线图,人们能够把每日或某一周期的市况表现完全记录下来,股价经过一段时间的盘档后,在图上即形成一种特殊区域或形版态,不同的形态显示出不同意义。可以从这些形态的变化中摸索出一些有规律的东西出来。权K线图形态可分为反转形态、整理形态及缺口和趋向线等。后K线图因其细腻独到的标画方式而被引入到股市及期货市场。

下面给出具体代码步骤:

设置时间偏移量:

gStyle->SetTimeOffset(0);

定义两个时间量:

TDatime dateBegin(2010,1,1,0,0,0);
TDatime dateEnd(2011,1,1,0,0,0);

定义两个二维直方图:

auto h1 = new TH2I("h1","Machine A + B",12,dateBegin.Convert(),dateEnd.Convert(),1000,0,1000);
auto h2 = new TH2I("h2","Machine B",12,dateBegin.Convert(),dateEnd.Convert(),1000,0,1000);

设置x轴坐标显示类型:

h1->GetXaxis()->SetTimeDisplay(1);

设置x轴显示的时间格式:

h1->GetXaxis()->SetTimeFormat("%m/%y");

设置x轴标题:

h1->GetXaxis()->SetTitle("Date [month/year]");

向两个直方图中填充随机数:

float Rand;
for (int i = dateBegin.Convert(); i < dateEnd.Convert(); i+=86400*30) {
   for (int j = 0; j < 1000; j++) {
      Rand = gRandom->Gaus(500+sin(i/10000000.)*100,50); h1->Fill(i,Rand);
      Rand = gRandom->Gaus(500+sin(i/11000000.)*100,70); h2->Fill(i,Rand);
   }
}

设置条宽:

h1->SetBarWidth(0.4);

设置条形偏移量:

h1->SetBarOffset(-0.25);

设置填充色:

h1->SetFillColor(kYellow);

设置填充类型:

h1->SetFillStyle(1001);

设置h2参数:

h2->SetBarWidth(0.4);
h2->SetBarOffset(0.25);
h2->SetLineColor(kRed);
h2->SetFillColor(kGreen);

创建画板:

auto c1 = new TCanvas();

将h1和h2以蜡烛图的形式画在同一个画板上:

h1->Draw("candle2");
h2->Draw("candle3 same");

添加图例:

gPad->BuildLegend(0.78,0.695,0.980,0.935,"","f");

代码地址:https://github.com/root-project/root/blob/master/tutorials/hist/candleplot.C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值