/// <summary> /// Builds a JFreeChart time series from a Ta4j time series and an indicator. </summary> /// <param name="tickSeries"> the ta4j time series </param> /// <param name="indicator"> the indicator </param> /// <param name="name"> the name of the chart time series </param> /// <returns> the JFreeChart time series </returns> private static org.jfree.data.time.TimeSeries buildChartTimeSeries(TimeSeries tickSeries, Indicator <Decimal> indicator, string name) { org.jfree.data.time.TimeSeries chartTimeSeries = new org.jfree.data.time.TimeSeries(name); for (int i = 0; i < tickSeries.TickCount; i++) { Tick tick = tickSeries.getTick(i); chartTimeSeries.add(new Minute(tick.EndTime.toDate()), indicator.getValue(i).toDouble()); } return(chartTimeSeries); }
public static void Main(string[] args) { // Getting the time series TimeSeries series = CsvTradesLoader.loadBitstampSeries(); // Building the trading strategy Strategy strategy = MovingMomentumStrategy.buildStrategy(series); // Running the strategy TradingRecord tradingRecord = series.run(strategy); // Getting the cash flow of the resulting trades CashFlow cashFlow = new CashFlow(series, tradingRecord); /// <summary> /// Building chart datasets /// </summary> TimeSeriesCollection datasetAxis1 = new TimeSeriesCollection(); datasetAxis1.addSeries(buildChartTimeSeries(series, new ClosePriceIndicator(series), "Bitstamp Bitcoin (BTC)")); TimeSeriesCollection datasetAxis2 = new TimeSeriesCollection(); datasetAxis2.addSeries(buildChartTimeSeries(series, cashFlow, "Cash Flow")); /// <summary> /// Creating the chart /// </summary> JFreeChart chart = ChartFactory.createTimeSeriesChart("Bitstamp BTC", "Date", "Price", datasetAxis1, true, true, false); // generate URLs? - generate tooltips? - create legend? - data - y-axis label - x-axis label - title XYPlot plot = (XYPlot)chart.Plot; DateAxis axis = (DateAxis)plot.DomainAxis; axis.DateFormatOverride = new SimpleDateFormat("MM-dd HH:mm"); /// <summary> /// Adding the cash flow axis (on the right) /// </summary> addCashFlowAxis(plot, datasetAxis2); /// <summary> /// Displaying the chart /// </summary> displayChart(chart); }