public static void Main(string[] args) { // Getting the time series TimeSeries series = CsvTradesLoader.loadBitstampSeries(); // Building the trading strategy Strategy strategy = MovingMomentumStrategy.buildStrategy(series); /// <summary> /// Building chart datasets /// </summary> TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(buildChartTimeSeries(series, new ClosePriceIndicator(series), "Bitstamp Bitcoin (BTC)")); /// <summary> /// Creating the chart /// </summary> JFreeChart chart = ChartFactory.createTimeSeriesChart("Bitstamp BTC", "Date", "Price", dataset, 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> /// Running the strategy and adding the buy and sell signals to plot /// </summary> addBuySellSignals(series, strategy, plot); /// <summary> /// Displaying the chart /// </summary> displayChart(chart); }
/// <param name="series"> the time series </param> /// <returns> a map (key: strategy, value: name) of trading strategies </returns> public static IDictionary <Strategy, string> buildStrategiesMap(TimeSeries series) { Dictionary <Strategy, string> strategies = new Dictionary <Strategy, string>(); strategies[CCICorrectionStrategy.buildStrategy(series)] = "CCI Correction"; strategies[GlobalExtremaStrategy.buildStrategy(series)] = "Global Extrema"; strategies[MovingMomentumStrategy.buildStrategy(series)] = "Moving Momentum"; strategies[RSI2Strategy.buildStrategy(series)] = "RSI-2"; return(strategies); }