蜡烛图又称日本线、K线、阴阳线、棒线等,目前常用的说法百是“K线”以下统称K线。K线源于日本德川幕府时代(1603~1867年)的米市交易,用来计算米价每天的涨跌,后来把它引入股票市场价格走势的分析中,目前已成为股票、外汇技术分析中的重要方法。是技术分析的一种,最早为日本人于十九世纪所度创,被当时日本米市的商人用来记录米市的行知情与价格波动,包括开市价、收市价、最高价及最低价,阳烛代表当日升市,阴烛代表跌市。这种图表分析法在当时的中国以至整个东南亚地区均尤为流行。由于用这种方法绘制出来的图表形状颇似一根根蜡烛道,加上这些蜡烛有黑白之分,因而也叫阴阳线图表。通过K线图,人们能够把每日或某一周期的市况表现完全记录下来,股价经过一段时间的盘档后,在图上即形成一种特殊区域或形版态,不同的形态显示出不同意义。可以从这些形态的变化中摸索出一些有规律的东西出来。权K线图形态可分为反转形态、整理形态及缺口和趋向线等。后K线图因其细腻独到的标画方式而被引入到股市及期货市场。
下面给出具体代码步骤:
新建一个画布:
TCanvas *c1 = new TCanvas("c1","Candle Presets",800,600);
将画布横向分成3块,纵向分成2块:
c1->Divide(3,2);
创建一个随机数:
TRandom *rng = new TRandom();
创建二维直方图:
TH2I *h1 = new TH2I("h1","Sin",18,0,360,300,-1.5,1.5);
设置x轴标题:
h1->GetXaxis()->SetTitle("Deg");
使用高斯随机数填充二维直方图:
float myRand;
for (int i = 0; i < 360; i+=10) {
for (int j = 0; j < 100; j++) {
myRand = rng->Gaus(sin(i*3.14/180),0.2);
h1->Fill(i,myRand);
}
}
绘制6种不同类型的蜡烛图:
for (int i = 1; i < 7; i++) {
c1->cd(i);
char str[16];
sprintf(str,"candlex%d",i);
TH2I * myhist = (TH2I*)h1->DrawCopy(str);
myhist->SetTitle(str);
}
创建第二张画布:
TCanvas *c2 = new TCanvas("c2","Candle Individual",800,600);
将画布横纵分别分成4块:
c2->Divide(4,4);
绘制15种不同类型的蜡烛图:
char myopt[16][8] = {"0","1","11","21","31","30","111","311","301","1111","2321","12111","112111","212111","312111"};
for (int i = 0; i < 15; i++) {
c2->cd(i+1);
char str[16];
sprintf(str, "candlex(%s)",myopt[i]);
TH2I * myhist = (TH2I*)h1->DrawCopy(str);
myhist->SetTitle(str);
}
代码地址:https://github.com/root-project/root/blob/master/tutorials/hist/candleplotoption.C