Example #1
0
        //Main code for creating chart.
        //Note: the argument chartIndex is unused because this demo only has 1 chart.
        public void createChart(WinChartViewer viewer, int chartIndex)
        {
            // Create a finance chart demo containing 100 days of data
            int noOfDays = 100;

            // To compute moving averages starting from the first day, we need to get extra data
            // points before the first day
            int extraDays = 30;

            // In this exammple, we use a random number generator utility to simulate the data. We
            // set up the random table to create 6 cols x (noOfDays + extraDays) rows, using 9 as
            // the seed.
            RanTable rantable = new RanTable(9, 6, noOfDays + extraDays);

            // Set the 1st col to be the timeStamp, starting from Sep 4, 2002, with each row
            // representing one day, and counting week days only (jump over Sat and Sun)
            rantable.setDateCol(0, new DateTime(2002, 9, 4), 86400, true);

            // Set the 2nd, 3rd, 4th and 5th columns to be high, low, open and close data. The open
            // value starts from 100, and the daily change is random from -5 to 5.
            rantable.setHLOCCols(1, 100, -5, 5);

            // Set the 6th column as the vol data from 5 to 25 million
            rantable.setCol(5, 50000000, 250000000);

            // Now we read the data from the table into arrays
            double[] timeStamps = rantable.getCol(0);
            double[] highData   = rantable.getCol(1);
            double[] lowData    = rantable.getCol(2);
            double[] openData   = rantable.getCol(3);
            double[] closeData  = rantable.getCol(4);
            double[] volData    = rantable.getCol(5);

            // Create a FinanceChart object of width 640 pixels
            FinanceChart c = new FinanceChart(640);

            // Add a title to the chart
            c.addTitle("Finance Chart Demonstration");

            // Set the data into the finance chart object
            c.setData(timeStamps, highData, lowData, openData, closeData, volData, extraDays);

            // Add the main chart with 240 pixels in height
            c.addMainChart(240);

            // Add a 5 period simple moving average to the main chart, using brown color
            c.addSimpleMovingAvg(5, 0x663300);

            // Add a 20 period simple moving average to the main chart, using purple color
            c.addSimpleMovingAvg(20, 0x9900ff);

            // Add HLOC symbols to the main chart, using green/red for up/down days
            c.addHLOC(0x008000, 0xcc0000);

            // Add 20 days bollinger band to the main chart, using light blue (9999ff) as the border
            // and semi-transparent blue (c06666ff) as the fill color
            c.addBollingerBand(20, 2, 0x9999ff, unchecked ((int)0xc06666ff));

            // Add a 75 pixels volume bars sub-chart to the bottom of the main chart, using
            // green/red/grey for up/down/flat days
            c.addVolBars(75, 0x99ff99, 0xff9999, 0x808080);

            // Append a 14-days RSI indicator chart (75 pixels high) after the main chart. The main
            // RSI line is purple (800080). Set threshold region to +/- 20 (that is, RSI = 50 +/-
            // 25). The upper/lower threshold regions will be filled with red (ff0000)/blue
            // (0000ff).
            c.addRSI(75, 14, 0x800080, 20, 0xff0000, 0x0000ff);

            // Append a 12-days momentum indicator chart (75 pixels high) using blue (0000ff) color.
            c.addMomentum(75, 12, 0x0000ff);

            // Output the chart
            viewer.Chart = c;
        }
 /// <summary>
 /// Add an indicator chart to the FinanceChart object. In this demo example, the indicator
 /// parameters (such as the period used to compute RSI, colors of the lines, etc.) are hard
 /// coded to commonly used values. You are welcome to design a more complex user interface
 /// to allow users to set the parameters.
 /// </summary>
 /// <param name="m">The FinanceChart object to add the line to.</param>
 /// <param name="indicator">The selected indicator.</param>
 /// <param name="height">Height of the chart in pixels</param>
 /// <returns>The XYChart object representing indicator chart.</returns>
 protected XYChart addIndicator(FinanceChart m, string indicator, int height)
 {
     if (indicator == "RSI")
     {
         return(m.addRSI(height, 14, 0x800080, 20, 0xff6666, 0x6666ff));
     }
     else if (indicator == "StochRSI")
     {
         return(m.addStochRSI(height, 14, 0x800080, 30, 0xff6666, 0x6666ff));
     }
     else if (indicator == "MACD")
     {
         return(m.addMACD(height, 26, 12, 9, 0xff, 0xff00ff, 0x8000));
     }
     else if (indicator == "FStoch")
     {
         return(m.addFastStochastic(height, 14, 3, 0x6060, 0x606000));
     }
     else if (indicator == "SStoch")
     {
         return(m.addSlowStochastic(height, 14, 3, 0x6060, 0x606000));
     }
     else if (indicator == "ATR")
     {
         return(m.addATR(height, 14, 0x808080, 0xff));
     }
     else if (indicator == "ADX")
     {
         return(m.addADX(height, 14, 0x8000, 0x800000, 0x80));
     }
     else if (indicator == "DCW")
     {
         return(m.addDonchianWidth(height, 20, 0xff));
     }
     else if (indicator == "BBW")
     {
         return(m.addBollingerWidth(height, 20, 2, 0xff));
     }
     else if (indicator == "DPO")
     {
         return(m.addDPO(height, 20, 0xff));
     }
     else if (indicator == "PVT")
     {
         return(m.addPVT(height, 0xff));
     }
     else if (indicator == "Momentum")
     {
         return(m.addMomentum(height, 12, 0xff));
     }
     else if (indicator == "Performance")
     {
         return(m.addPerformance(height, 0xff));
     }
     else if (indicator == "ROC")
     {
         return(m.addROC(height, 12, 0xff));
     }
     else if (indicator == "OBV")
     {
         return(m.addOBV(height, 0xff));
     }
     else if (indicator == "AccDist")
     {
         return(m.addAccDist(height, 0xff));
     }
     else if (indicator == "CLV")
     {
         return(m.addCLV(height, 0xff));
     }
     else if (indicator == "WilliamR")
     {
         return(m.addWilliamR(height, 14, 0x800080, 30, 0xff6666, 0x6666ff));
     }
     else if (indicator == "Aroon")
     {
         return(m.addAroon(height, 14, 0x339933, 0x333399));
     }
     else if (indicator == "AroonOsc")
     {
         return(m.addAroonOsc(height, 14, 0xff));
     }
     else if (indicator == "CCI")
     {
         return(m.addCCI(height, 20, 0x800080, 100, 0xff6666, 0x6666ff));
     }
     else if (indicator == "EMV")
     {
         return(m.addEaseOfMovement(height, 9, 0x6060, 0x606000));
     }
     else if (indicator == "MDX")
     {
         return(m.addMassIndex(height, 0x800080, 0xff6666, 0x6666ff));
     }
     else if (indicator == "CVolatility")
     {
         return(m.addChaikinVolatility(height, 10, 10, 0xff));
     }
     else if (indicator == "COscillator")
     {
         return(m.addChaikinOscillator(height, 0xff));
     }
     else if (indicator == "CMF")
     {
         return(m.addChaikinMoneyFlow(height, 21, 0x8000));
     }
     else if (indicator == "NVI")
     {
         return(m.addNVI(height, 255, 0xff, 0x883333));
     }
     else if (indicator == "PVI")
     {
         return(m.addPVI(height, 255, 0xff, 0x883333));
     }
     else if (indicator == "MFI")
     {
         return(m.addMFI(height, 14, 0x800080, 30, 0xff6666, 0x6666ff));
     }
     else if (indicator == "PVO")
     {
         return(m.addPVO(height, 26, 12, 9, 0xff, 0xff00ff, 0x8000));
     }
     else if (indicator == "PPO")
     {
         return(m.addPPO(height, 26, 12, 9, 0xff, 0xff00ff, 0x8000));
     }
     else if (indicator == "UO")
     {
         return(m.addUltimateOscillator(height, 7, 14, 28, 0x800080, 20, 0xff6666, 0x6666ff));
     }
     else if (indicator == "Vol")
     {
         return(m.addVolIndicator(height, 0x99ff99, 0xff9999, 0xc0c0c0));
     }
     else if (indicator == "TRIX")
     {
         return(m.addTRIX(height, 12, 0xff));
     }
     return(null);
 }