package jfreechart;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.DefaultHighLowDataset;
import org.jfree.data.xy.OHLCDataset;
import org.jfree.date.DateUtilities;

/**
* ロウソク足グラフのサンプル
*/
public class CandlestickChartSample {
public static void main(String[] args) {
// (1)データセットの作成
// 日付
Date[] date = new Date[5];
// 高値
double[] high = new double[5];
// 安値
double[] low = new double[5];
// 始値
double[] open = new double[5];
// 終値
double[] close = new double[5];
// ボリューム
// 設定したボリュームの最大値を100とし、最大値に対する割合で棒グラフが表示される
double[] volume = new double[5];

date[0] = DateUtilities.createDate(2004, 10, 1);
high[0] = 85.0;
low[0] = 55.0;
open[0] = 60.0;
close[0] = 80.0;
volume[0] = 20.0;

date[1] = DateUtilities.createDate(2004, 11, 1);
high[1] = 100.0;
low[1] = 650.0;
open[1] = 80.0;
close[1] = 90.0;
volume[1] = 10.0;

date[2] = DateUtilities.createDate(2004, 12, 1);
high[2] = 115.0;
low[2] = 85.0;
open[2] = 90.0;
close[2] = 105.0;
volume[2] = 40.0;

date[3] = DateUtilities.createDate(2005, 1, 1);
high[3] = 110.0;
low[3] = 100.0;
open[3] = 105.0;
close[3] = 110.0;
volume[3] = 30.0;

date[4] = DateUtilities.createDate(2005, 2, 1);
high[4] = 110.0;
low[4] = 85.0;
open[4] = 110.0;
close[4] = 90.0;
volume[4] = 20.0;

OHLCDataset dataset = new DefaultHighLowDataset("Series 1", date, high, low, open, close, volume);

// (2)JFreeChartオブジェクトの生成
JFreeChart chart = ChartFactory.createCandlestickChart("Sample Candlestick Chart",
"Time", "Value", dataset, true);

// (3)グラフの出力
File outputFile = new File("./output/SampleCandlestickChart.png");
try {
ChartUtilities.saveChartAsPNG(outputFile, chart, 500, 500);
} catch (IOException ioEx) {
ioEx.printStackTrace();
}
}
}