Platforms to show: All Mac Windows Linux Cross-Platform

CDFinanceChartMBS class

Super class: CDMultiChartMBS

Type Topic Plugin Version macOS Windows Linux iOS Targets
class ChartDirector MBS ChartDirector Plugin 9.2 ✅ Yes ✅ Yes ✅ Yes ✅ Yes All
FinanceChart is a financial charting library built on top of the main ChartDirector library.

It extends CDMultiChartMBS by implementing many financial indicators, and allowing complex financial charts to be composed easily.

Key Features:

  • Arbitrary Financial Chart Composition: Allows a complex financial chart to be constructed by stacking a main financial chart with arbitrary number of indicator charts in any order.
  • Main Chart Layers: The main chart can show information in Candlestick or OHLC, and/or various price lines, such as closing price line, weighted close line, typical price line or median price line.
  • Moving Averages: Chart can include arbitrary number of moving average lines of configurable types and periods. Supports simple, exponential, triangular and weighted moving averages.
  • Parabolic SAR: A parabolic SAR indicator can be added to the main price chart.
  • Bands and Envelops: Built-in Bollinger Band layer, Donchian Channel layer, and moving average envelops. Also supports custom-defined bands.
  • Volume Bars: Volume Bars can be displayed as part of the main chart, or as a separate indicator chart.
  • Axis Styles: Axis can be log or linear scale, and can display on left or right side of the chart.
  • Built-In Indicators: Accumulation/Distribution, Aroon Up/Down, Aroon Oscillator, Average Directional Index, Average True Range (including raw True Range), Bollinger Band Width, Commodity Channel Index, Chaikin Money Flow, Chaikin Oscillator, Chaikin Volatility, Close Location Value, Detrended Price Oscillator, Donchian Channel Width, Ease of Movement, Fast Stochastic, MACD, Mass Index, Money Flow Index, Momentum, Negative Volume Index, On Balance Volume, Performance, Percentage Price Oscillator, Positive Volume Index, Percentage Volume Oscillator, Price Volume Trend, Rate of Change, Relative Strength Index, Slow Stochastic, Standard Deviation, Stochastic RSI, TRIX, Ultimate Oscillator, Volume, William %R.
  • Custom Lines and Indicators: Extensible design allows developers to implement additional lines and indicator types.
  • Customizable Look and Feel: Preserves the flexibility and power of the ChartDirector API. Background images, custom text boxes, logos, fonts and colors, etc., are all customizable.

Using FinanceChart:
You create an instance of FinanceChart. Next, you may add data to it using setData. After that, you may add the main chart (addMainChart) and other indicator charts to display the data graphically. These charts may be added in any order.

For the main chart, you may:

  • Display price information using Candlesticks (addCandleStick) or HLOC (addHLOC) symbols
  • Add various price lines (addCloseLine, addWeightedClose, addTypicalPrice, addMedianPrice)
  • Add moving average lines of different types and periods (addSimpleMovingAvg, addExpMovingAvg, addTriMovingAvg, addWeightedMovingAvg)
  • Add Parabolic SAR (addParabolicSAR)
  • Add price bands or envelops: (addBollingerBand, addDonchianChannel, addEnvelop)
  • Add custom lines or bands (addLineIndicator2, addBand)
  • Add volume bars (addVolBars)

For indicator charts, FinanceChart includes a wide variety of indicators. Please refer to the table below for details. You may also add your own custom indicator chart using addLineIndicator and addBarIndicator.

In addition to chart building methods, FinanceChart also has a number of chart formatting methods, such as addPlotAreaTitle to add chart title, setPlotAreaStyle to control background color and grid lines, setDateLabelFormat to control date/time formatting, etc.

Furthermore, as FinanceChart is a subclass of CDMultiChartMBS, and the main and indicator charts are implemented as XYChart objects, they can use the powerful ChartDirector API for formatting (eg. background images, custom logos, custom text boxes, metallic colors, etc).
Subclass of the CDMultiChartMBS class.

Super class CDMultiChartMBS

Super class CDBaseChartMBS

  • 2 properties
  • shared property ScaleFactor as Double
  • 91 methods
    • method addExtraField(numbers() as Double)
    • method addExtraField(paths() as folderitem)
    • method addExtraField(texts() as string)
    • method addLegend(x as Integer, y as Integer, noOfCols as Integer, font as string = "", fontsize as Double = 10) as CDLegendBoxMBS
    • method addLegend(x as Integer, y as Integer, vertical as boolean=true, font as string = "", fontsize as Double = 10) as CDLegendBoxMBS
    • method addLine(x1 as Integer, y1 as Integer, x2 as Integer, y2 as Integer, colorvalue as color, lineWidth as Integer = 1) as CDLineMBS
    • method addLine(x1 as Integer, y1 as Integer, x2 as Integer, y2 as Integer, colorvalue as Integer = &hffff0001, lineWidth as Integer = 1) as CDLineMBS
    • method addTable(x as Integer, y as Integer, alignment as Integer, col as Integer, row as Integer) as CDMLTableMBS
    • method addText(x as Integer, y as Integer, text as string, font as string = "", fontsize as Double = 8, fontcolor as Integer = &hffff0002, alignment as Integer = 7, angle as Double = 0, vertical as boolean=false) as CDTextBoxMBS
    • method addText(x as Integer, y as Integer, text as string, font as string, fontsize as Double, fontcolor as color, alignment as Integer = 7, angle as Double = 0, vertical as boolean=false) as CDTextBoxMBS
    • method addTitle(alignment as Integer, text as string, font as string = "", fontsize as Double = 12, fontColor as Integer = &hffff0002, bgColor as Integer = &hff000000, edgeColor as Integer = &hff000000) as CDTextBoxMBS
    • method addTitle(alignment as Integer, text as string, font as string, fontsize as Double, fontColor as color, bgColor as color, edgeColor as color) as CDTextBoxMBS
    • method addTitle(text as string, font as string = "", fontsize as Double = 12, fontColor as Integer = &hffff0002, bgColor as Integer = &hff000000, edgeColor as Integer = &hff000000) as CDTextBoxMBS
    • method addTitle(text as string, font as string, fontsize as Double, fontColor as color, bgColor as color, edgeColor as color) as CDTextBoxMBS
    • method adjustBrightness(ColorValue as color, brightness as Double) as Integer
    • method adjustBrightness(ColorValue as Integer, brightness as Double) as Integer
    • method Constructor   Private
    • method dashLineColor(colorvalue as color, patternCode as Integer = &h0505) as Integer
    • method dashLineColor(colorvalue as Integer, patternCode as Integer = &h0505) as Integer
    • method Destructor
    • method formatValue(value as Double, formatstring as string) as string
    • method getAbsOffsetX as Integer
    • method getAbsOffsetY as Integer
    • method getChartMetrics as string
    • method getColor(index as Integer) as Integer
    • method getDrawArea as CDDrawAreaMBS
    • method getHeight as Integer
    • method getHTMLImageMap(url as string, queryFormat as string = "", extraAttr as string = "", offsetX as Integer = 0, offsetY as Integer = 0) as string
    • method getLegend as CDLegendBoxMBS
    • method getWidth as Integer
    • method gradientColor(colors() as color, angle as Double = 90, scale as Double = 1.0, startX as Integer = 0, startY as Integer = 0) as Integer
    • method gradientColor(colors() as Integer, angle as Double = 90, scale as Double = 1.0, startX as Integer = 0, startY as Integer = 0) as Integer
    • method gradientColor(startX as Integer, startY as Integer, endX as Integer, endY as Integer, startColor as color, endColor as color) as Integer
    • method gradientColor(startX as Integer, startY as Integer, endX as Integer, endY as Integer, startColor as Integer, endColor as Integer) as Integer
    • method halfColor(c as Integer) as Integer
    • method initDynamicLayer as CDDrawAreaMBS
    • method layout
    • method layoutLegend as CDLegendBoxMBS
    • method linearGradientColor(startX as Integer, startY as Integer, endX as Integer, endY as Integer, colors() as color, periodic as boolean=false) as Integer
    • method linearGradientColor(startX as Integer, startY as Integer, endX as Integer, endY as Integer, colors() as Integer, periodic as boolean=false) as Integer
    • method linearGradientColor(startX as Integer, startY as Integer, endX as Integer, endY as Integer, startColor as color, endColor as color, periodic as boolean=false) as Integer
    • method linearGradientColor(startX as Integer, startY as Integer, endX as Integer, endY as Integer, startColor as Integer, endColor as Integer, periodic as boolean=false) as Integer
    • method makeChart as CDDrawAreaMBS
    • method makeChart(format as Integer) as string
    • method makeChart(path as folderitem) as boolean
    • method makeChartPicture as picture
    • method patternColor(colorvalues() as color, height as Integer, startX as Integer = 0, startY as Integer = 0) as Integer
    • method patternColor(colorvalues() as Integer, height as Integer, startX as Integer = 0, startY as Integer = 0) as Integer
    • method patternColor(file as folderitem, startX as Integer = 0, startY as Integer = 0) as Integer
    • method patternColor(path as string, startX as integer = 0, startY as integer = 0) as integer
    • method patternColor(pic as picture, startX as Integer = 0, startY as Integer = 0) as Integer
    • method radialGradientColor(cx as Integer, cy as Integer, rx as Integer, ry as Integer, data() as Integer, periodic as boolean=false) as Integer
    • method radialGradientColor(cx as Integer, cy as Integer, rx as Integer, ry as Integer, startColor as color, endColor as color, periodic as boolean=false) as Integer
    • method radialGradientColor(cx as Integer, cy as Integer, rx as Integer, ry as Integer, startColor as Integer, endColor as Integer, periodic as boolean=false) as Integer
    • method removeDynamicLayer
    • method setAMPM(am as string, pm as string)
    • method setAntiAlias(shapeAntiAlias as Boolean, textAntiAlias as Integer)
    • method setBackground(colorvalue as color, edgeColor as color, raisedEffect as Integer = 0)
    • method setBackground(colorvalue as Integer, edgeColor as Integer = &hff000000, raisedEffect as Integer = 0)
    • method setBgImage(img as string, align as Integer = 5)
    • method setBorder(colorvalue as color)
    • method setBorder(colorvalue as Integer)
    • method setColor(paletteEntry as Integer, colorvalue as color)
    • method setColor(paletteEntry as Integer, colorvalue as Integer)
    • method setColors(numbers() as color)
    • method setColors(numbers() as Integer)
    • method setColors(paletteEntry as Integer, numbers() as color)
    • method setColors(paletteEntry as Integer, numbers() as Integer)
    • method setDefaultColors(paletteEntry as Integer = 0)
    • method setDefaultFonts(normal as string, bold as string, italic as string, boldItalic as string)
    • method setDropShadow(ColorValue as color, OffsetX as Integer = 5, OffsetY as Integer = &h7fffffff, blurRadius as Integer = 5)
    • method setDropShadow(ColorValue as Integer = &hAAAAAA, OffsetX as Integer = 5, OffsetY as Integer = &h7fffffff, blurRadius as Integer = 5)
    • method setFontTable(index as Integer, font as string)
    • method setMonthNames(names() as string)
    • method setNumberFormat(thousandSeparator as string = "~", decimalPointChar as string = ".", signChar as string = "-")
    • method setOutputOptions(options as string)
    • method setResource(id as string, data as MemoryBlock)
    • method setResource(id as string, data as string)
    • method setResource(id as string, DataArea as CDDrawAreaMBS)
    • method setRoundedFrame(extColor as color, r1 as Integer = 10, r2 as Integer = -1, r3 as Integer = -1, r4 as Integer = -1)
    • method setRoundedFrame(extColor as Integer = &hFFFFFF, r1 as Integer = 10, r2 as Integer = -1, r3 as Integer = -1, r4 as Integer = -1)
    • method setSearchPath(path as string)
    • method setSize(width as Integer, height as Integer)
    • method setThickFrame(thickness as Integer, frameColor as Integer = -1, outerEdgeColor as Integer = -1, innerEdgeColor as Integer = -1)
    • method setTransparentColor(c as color)
    • method setTransparentColor(c as Integer)
    • method setTransparentColors(paletteEntry as Integer = 0)
    • method setWallpaper(img as folderitem)
    • method setWeekDayNames(names() as string)
    • method setWhiteOnBlackColors(paletteEntry as Integer = 0)
  • 67 shared methods
    • shared method AllPassFilter as Integer
    • shared method ArrowShape(angle as Double = 0.0, widthRatio as Double = 1, stemWidthRatio as Double = 0.5, stemLengthRatio as Double = 0.5) as Integer
    • shared method barLighting(startBrightness as Double = 0.75, endBrightness as Double = 1.5) as Integer
    • shared method blueMetalGradient as Integer()
    • shared method brushedGoldColor(texture as Integer = 2, angle as Integer = 90) as Integer
    • shared method brushedMetalColor(c as Integer, texture as Integer = 2, angle as Integer = 90) as Integer
    • shared method brushedSilverColor(texture as Integer = 2, angle as Integer = 90) as Integer
    • shared method bSearch(values() as Double, value as Double) as Double
    • shared method chartTime(t as Integer) as Double
    • shared method chartTime(year as Integer, month as Integer, day as Integer, hour as Integer = 0, minute as Integer = 0, second as Integer = 0) as Double
    • shared method ClearTypeColor(gamma as Double = 0) as Integer
    • shared method ClearTypeMono(gamma as Double = 0) as Integer
    • shared method ColorToInteger(c as color, alpha as Integer = 0) as Integer
    • shared method Cross2Shape(width as Double = 0.5) as Integer
    • shared method CrossShape(width as Double = 0.5) as Integer
    • shared method cylinderEffect(orientation as Integer = 5, ambientIntensity as Double = 0.5, diffuseIntensity as Double = 0.5, specularIntensity as Double = 0.75, shininess as Integer = 8) as Integer
    • shared method defaultPalette as Integer()
    • shared method flatBorder(thickness as Integer) as Integer
    • shared method getChartWeekDay(t as Double) as Integer
    • shared method getChartYMD(t as Double) as Integer
    • shared method getCopyright as string
    • shared method getDescription as string
    • shared method GetPath(path as folderitem) as string
    • shared method getVersion as Integer
    • shared method glassEffect(glareSize as Integer = 3, glareDirection as Integer = 8, raisedEffect as Integer = 5) as Integer
    • shared method goldColor(angle as Integer = 90) as Integer
    • shared method goldGradient as Integer()
    • shared method greenMetalGradient as Integer()
    • shared method kDataBound as Double
    • shared method kLinearTick as Double
    • shared method kLogTick as Double
    • shared method kMicroTickOnly as Double
    • shared method kMinorTickOnly as Double
    • shared method kNoValue as Double
    • shared method kTickInc as Double
    • shared method kTouchBar as Double
    • shared method metalColor(c as Integer, angle as Integer = 90) as Integer
    • shared method NonePassFilter as Integer
    • shared method phongLighting(ambientIntensity as Double = 0.5, diffuseIntensity as Double = 0.5, specularIntensity as Double = 0.75, shininess as Integer = 8) as Integer
    • shared method Polygon2Shape(slide as Integer) as Integer
    • shared method PolygonShape(slide as Integer) as Integer
    • shared method PolynomialRegression(n as Integer) as Integer
    • shared method redMetalGradient as Integer()
    • shared method RegularSpacingFilter(labelStep as Integer = 1, initialMargin as Integer = 0) as Integer
    • shared method RGB(r as Integer, g as Integer, b as Integer, a as Integer = 0) as Integer
    • shared method SelectItemFilter(item as Integer) as Integer
    • shared method SetFontSearchPath(path as folderitem)
    • shared method SetFontSearchPath(path as string)
    • shared method setLicenseCode(n as string, enddate as Integer, v1 as Integer, v2 as Integer)
    • shared method setResourceGlobal(id as string, data as MemoryBlock)
    • shared method setResourceGlobal(id as string, data as string)
    • shared method setResourceGlobal(id as string, DrawArea as CDDrawAreaMBS)
    • shared method silverColor(angle as Integer = 90) as Integer
    • shared method silverGradient as Integer()
    • shared method softLighting(direction as Integer = 8, raisedEffect as Integer = 4) as Integer
    • shared method StarShape(slide as Integer) as Integer
    • shared method StartOfDayFilter(labelStep as Integer = 1, initialMargin as Double = 0.05) as Integer
    • shared method StartOfHourFilter(labelStep as Integer = 1, initialMargin as Double = 0.05) as Integer
    • shared method StartOfMinuteFilter(labelStep as Integer = 1, initialMargin as Double = 0.05) as Integer
    • shared method StartOfMonthFilter(labelStep as Integer = 1, initialMargin as Double = 0.05) as Integer
    • shared method StartOfSecondFilter(labelStep as Integer = 1, initialMargin as Double = 0.05) as Integer
    • shared method StartOfWeekFilter(labelStep as Integer = 1, initialMargin as Double = 0.05) as Integer
    • shared method StartOfYearFilter(labelStep as Integer = 1, initialMargin as Double = 0.05) as Integer
    • shared method testFont(font as string, fontIndex as Integer, fontHeight as Double, fontWidth as Double, angle as Double, byref buffer as string) as boolean
    • shared method transparentPalette as Integer()
    • shared method whiteOnBlackPalette as Integer()
    • shared method xySize(x as Integer, y as Integer) as Integer
  • 186 constants

This class has no sub classes.

Some examples using this class:

Blog Entries

Xojo Developer Magazine


The items on this page are in the following plugins: MBS ChartDirector Plugin.


CDDrawObjMBS   -   CDFinanceSimulatorMBS


The biggest plugin in space...