highcharts
Version:
JavaScript charting framework
1,198 lines (1,197 loc) • 39.6 kB
JavaScript
/* *
*
* GUI generator for Stock tools
*
* (c) 2009-2025 Sebastian Bochan
*
* License: www.highcharts.com/license
*
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
*
* */
'use strict';
/* *
*
* Constants
*
* */
/**
* @optionparent lang
*/
const lang = {
/**
* Configure the stockTools GUI titles(hints) in the chart. Requires
* the `stock-tools.js` module to be loaded.
*
* @product highstock
* @since 7.0.0
*/
stockTools: {
gui: {
// Main buttons:
simpleShapes: 'Simple shapes',
lines: 'Lines',
crookedLines: 'Crooked lines',
measure: 'Measure',
advanced: 'Advanced',
toggleAnnotations: 'Toggle annotations',
verticalLabels: 'Vertical labels',
flags: 'Flags',
zoomChange: 'Zoom change',
typeChange: 'Type change',
saveChart: 'Save chart',
indicators: 'Indicators',
currentPriceIndicator: 'Current Price Indicators',
// Other features:
zoomX: 'Zoom X',
zoomY: 'Zoom Y',
zoomXY: 'Zooom XY',
fullScreen: 'Fullscreen',
typeOHLC: 'OHLC',
typeLine: 'Line',
typeCandlestick: 'Candlestick',
typeHLC: 'HLC',
typeHollowCandlestick: 'Hollow Candlestick',
typeHeikinAshi: 'Heikin Ashi',
// Basic shapes:
circle: 'Circle',
ellipse: 'Ellipse',
label: 'Label',
rectangle: 'Rectangle',
// Flags:
flagCirclepin: 'Flag circle',
flagDiamondpin: 'Flag diamond',
flagSquarepin: 'Flag square',
flagSimplepin: 'Flag simple',
// Measures:
measureXY: 'Measure XY',
measureX: 'Measure X',
measureY: 'Measure Y',
// Segment, ray and line:
segment: 'Segment',
arrowSegment: 'Arrow segment',
ray: 'Ray',
arrowRay: 'Arrow ray',
line: 'Line',
arrowInfinityLine: 'Arrow line',
horizontalLine: 'Horizontal line',
verticalLine: 'Vertical line',
infinityLine: 'Infinity line',
// Crooked lines:
crooked3: 'Crooked 3 line',
crooked5: 'Crooked 5 line',
elliott3: 'Elliott 3 line',
elliott5: 'Elliott 5 line',
// Counters:
verticalCounter: 'Vertical counter',
verticalLabel: 'Vertical label',
verticalArrow: 'Vertical arrow',
// Advanced:
fibonacci: 'Fibonacci',
fibonacciTimeZones: 'Fibonacci Time Zones',
pitchfork: 'Pitchfork',
parallelChannel: 'Parallel channel',
timeCycles: 'Time Cycles'
}
},
navigation: {
popup: {
// Annotations:
circle: 'Circle',
ellipse: 'Ellipse',
rectangle: 'Rectangle',
label: 'Label',
segment: 'Segment',
arrowSegment: 'Arrow segment',
ray: 'Ray',
arrowRay: 'Arrow ray',
line: 'Line',
arrowInfinityLine: 'Arrow line',
horizontalLine: 'Horizontal line',
verticalLine: 'Vertical line',
crooked3: 'Crooked 3 line',
crooked5: 'Crooked 5 line',
elliott3: 'Elliott 3 line',
elliott5: 'Elliott 5 line',
verticalCounter: 'Vertical counter',
verticalLabel: 'Vertical label',
verticalArrow: 'Vertical arrow',
fibonacci: 'Fibonacci',
fibonacciTimeZones: 'Fibonacci Time Zones',
pitchfork: 'Pitchfork',
parallelChannel: 'Parallel channel',
infinityLine: 'Infinity line',
measure: 'Measure',
measureXY: 'Measure XY',
measureX: 'Measure X',
measureY: 'Measure Y',
timeCycles: 'Time Cycles',
// Flags:
flags: 'Flags',
// GUI elements:
addButton: 'Add',
saveButton: 'Save',
editButton: 'Edit',
removeButton: 'Remove',
series: 'Series',
volume: 'Volume',
connector: 'Connector',
// Field names:
innerBackground: 'Inner background',
outerBackground: 'Outer background',
crosshairX: 'Crosshair X',
crosshairY: 'Crosshair Y',
tunnel: 'Tunnel',
background: 'Background',
// Indicators' searchbox (#16019):
noFilterMatch: 'No match',
// Indicators' params (#15170):
searchIndicators: 'Search Indicators',
clearFilter: '\u2715 clear filter',
index: 'Index',
period: 'Period',
periods: 'Periods',
standardDeviation: 'Standard deviation',
periodTenkan: 'Tenkan period',
periodSenkouSpanB: 'Senkou Span B period',
periodATR: 'ATR period',
multiplierATR: 'ATR multiplier',
shortPeriod: 'Short period',
longPeriod: 'Long period',
signalPeriod: 'Signal period',
decimals: 'Decimals',
algorithm: 'Algorithm',
topBand: 'Top band',
bottomBand: 'Bottom band',
initialAccelerationFactor: 'Initial acceleration factor',
maxAccelerationFactor: 'Max acceleration factor',
increment: 'Increment',
multiplier: 'Multiplier',
ranges: 'Ranges',
highIndex: 'High index',
lowIndex: 'Low index',
deviation: 'Deviation',
xAxisUnit: 'x-axis unit',
factor: 'Factor',
fastAvgPeriod: 'Fast average period',
slowAvgPeriod: 'Slow average period',
average: 'Average',
/**
* Configure the aliases for indicator names.
*
* @product highstock
* @since 9.3.0
*/
indicatorAliases: {
// Overlays
/**
* Acceleration Bands alias.
*
* @default ['Acceleration Bands']
* @type {Array<string>}
*/
abands: ['Acceleration Bands'],
/**
* Bollinger Bands alias.
*
* @default ['Bollinger Bands']
* @type {Array<string>}
*/
bb: ['Bollinger Bands'],
/**
* Double Exponential Moving Average alias.
*
* @default ['Double Exponential Moving Average']
* @type {Array<string>}
*/
dema: ['Double Exponential Moving Average'],
/**
* Exponential Moving Average alias.
*
* @default ['Exponential Moving Average']
* @type {Array<string>}
*/
ema: ['Exponential Moving Average'],
/**
* Ichimoku Kinko Hyo alias.
*
* @default ['Ichimoku Kinko Hyo']
* @type {Array<string>}
*/
ikh: ['Ichimoku Kinko Hyo'],
/**
* Keltner Channels alias.
*
* @default ['Keltner Channels']
* @type {Array<string>}
*/
keltnerchannels: ['Keltner Channels'],
/**
* Linear Regression alias.
*
* @default ['Linear Regression']
* @type {Array<string>}
*/
linearRegression: ['Linear Regression'],
/**
* Pivot Points alias.
*
* @default ['Pivot Points']
* @type {Array<string>}
*/
pivotpoints: ['Pivot Points'],
/**
* Price Channel alias.
*
* @default ['Price Channel']
* @type {Array<string>}
*/
pc: ['Price Channel'],
/**
* Price Envelopes alias.
*
* @default ['Price Envelopes']
* @type {Array<string>}
*/
priceenvelopes: ['Price Envelopes'],
/**
* Parabolic SAR alias.
*
* @default ['Parabolic SAR']
* @type {Array<string>}
*/
psar: ['Parabolic SAR'],
/**
* Simple Moving Average alias.
*
* @default ['Simple Moving Average']
* @type {Array<string>}
*/
sma: ['Simple Moving Average'],
/**
* Super Trend alias.
*
* @default ['Super Trend']
* @type {Array<string>}
*/
supertrend: ['Super Trend'],
/**
* Triple Exponential Moving Average alias.
*
* @default ['Triple Exponential Moving Average']
* @type {Array<string>}
*/
tema: ['Triple Exponential Moving Average'],
/**
* Volume by Price alias.
*
* @default ['Volume by Price']
* @type {Array<string>}
*/
vbp: ['Volume by Price'],
/**
* Volume Weighted Moving Average alias.
*
* @default ['Volume Weighted Moving Average']
* @type {Array<string>}
*/
vwap: ['Volume Weighted Moving Average'],
/**
* Weighted Moving Average alias.
*
* @default ['Weighted Moving Average']
* @type {Array<string>}
*/
wma: ['Weighted Moving Average'],
/**
* Zig Zagalias.
*
* @default ['Zig Zag']
* @type {Array<string>}
*/
zigzag: ['Zig Zag'],
// Oscilators
/**
* Absolute price indicator alias.
*
* @default ['Absolute price indicator']
* @type {Array<string>}
*/
apo: ['Absolute price indicator'],
/**
* Accumulation/Distribution alias.
*
* @default ['Accumulation/Distribution’]
* @type {Array<string>}
*/
ad: ['Accumulation/Distribution'],
/**
* Aroon alias.
*
* @default ['Aroon']
* @type {Array<string>}
*/
aroon: ['Aroon'],
/**
* Aroon oscillator alias.
*
* @default ['Aroon oscillator']
* @type {Array<string>}
*/
aroonoscillator: ['Aroon oscillator'],
/**
* Average True Range alias.
*
* @default ['Average True Range’]
* @type {Array<string>}
*/
atr: ['Average True Range'],
/**
* Awesome oscillator alias.
*
* @default ['Awesome oscillator’]
* @type {Array<string>}
*/
ao: ['Awesome oscillator'],
/**
* Commodity Channel Index alias.
*
* @default ['Commodity Channel Index’]
* @type {Array<string>}
*/
cci: ['Commodity Channel Index'],
/**
* Chaikin alias.
*
* @default ['Chaikin’]
* @type {Array<string>}
*/
chaikin: ['Chaikin'],
/**
* Chaikin Money Flow alias.
*
* @default ['Chaikin Money Flow’]
* @type {Array<string>}
*/
cmf: ['Chaikin Money Flow'],
/**
* Chande Momentum Oscillator alias.
*
* @default ['Chande Momentum Oscillator’]
* @type {Array<string>}
*/
cmo: ['Chande Momentum Oscillator'],
/**
* Disparity Index alias.
*
* @default ['Disparity Index’]
* @type {Array<string>}
*/
disparityindex: ['Disparity Index'],
/**
* Directional Movement Index alias.
*
* @default ['Directional Movement Index’]
* @type {Array<string>}
*/
dmi: ['Directional Movement Index'],
/**
* Detrended price oscillator alias.
*
* @default ['Detrended price oscillator’]
* @type {Array<string>}
*/
dpo: ['Detrended price oscillator'],
/**
* Klinger Oscillator alias.
*
* @default [‘Klinger Oscillator’]
* @type {Array<string>}
*/
klinger: ['Klinger Oscillator'],
/**
* Linear Regression Angle alias.
*
* @default [‘Linear Regression Angle’]
* @type {Array<string>}
*/
linearRegressionAngle: ['Linear Regression Angle'],
/**
* Linear Regression Intercept alias.
*
* @default [‘Linear Regression Intercept’]
* @type {Array<string>}
*/
linearRegressionIntercept: ['Linear Regression Intercept'],
/**
* Linear Regression Slope alias.
*
* @default [‘Linear Regression Slope’]
* @type {Array<string>}
*/
linearRegressionSlope: ['Linear Regression Slope'],
/**
* Moving Average Convergence Divergence alias.
*
* @default ['Moving Average Convergence Divergence’]
* @type {Array<string>}
*/
macd: ['Moving Average Convergence Divergence'],
/**
* Money Flow Index alias.
*
* @default ['Money Flow Index’]
* @type {Array<string>}
*/
mfi: ['Money Flow Index'],
/**
* Momentum alias.
*
* @default [‘Momentum’]
* @type {Array<string>}
*/
momentum: ['Momentum'],
/**
* Normalized Average True Range alias.
*
* @default ['Normalized Average True Range’]
* @type {Array<string>}
*/
natr: ['Normalized Average True Range'],
/**
* On-Balance Volume alias.
*
* @default ['On-Balance Volume’]
* @type {Array<string>}
*/
obv: ['On-Balance Volume'],
/**
* Percentage Price oscillator alias.
*
* @default ['Percentage Price oscillator’]
* @type {Array<string>}
*/
ppo: ['Percentage Price oscillator'],
/**
* Rate of Change alias.
*
* @default ['Rate of Change’]
* @type {Array<string>}
*/
roc: ['Rate of Change'],
/**
* Relative Strength Index alias.
*
* @default ['Relative Strength Index’]
* @type {Array<string>}
*/
rsi: ['Relative Strength Index'],
/**
* Slow Stochastic alias.
*
* @default [‘Slow Stochastic’]
* @type {Array<string>}
*/
slowstochastic: ['Slow Stochastic'],
/**
* Stochastic alias.
*
* @default [‘Stochastic’]
* @type {Array<string>}
*/
stochastic: ['Stochastic'],
/**
* TRIX alias.
*
* @default [‘TRIX’]
* @type {Array<string>}
*/
trix: ['TRIX'],
/**
* Williams %R alias.
*
* @default [‘Williams %R’]
* @type {Array<string>}
*/
williamsr: ['Williams %R']
}
}
}
};
/**
* Configure the stockTools gui strings in the chart. Requires the
* [stockTools module]() to be loaded. For a description of the module
* and information on its features, see [Highcharts StockTools]().
*
* @product highstock
*
* @sample stock/demo/stock-tools-gui Stock Tools GUI
*
* @sample stock/demo/stock-tools-custom-gui Stock Tools customized GUI
*
* @since 7.0.0
* @optionparent stockTools
*/
const stockTools = {
/**
* Definitions of buttons in Stock Tools GUI.
*/
gui: {
/**
* Path where Highcharts will look for icons. Change this to use
* icons from a different server.
*
* Since 7.1.3 use [iconsURL](#navigation.iconsURL) for popup and
* stock tools.
*
* @deprecated
* @apioption stockTools.gui.iconsURL
*
*/
/**
* Enable or disable the stockTools gui.
*/
enabled: true,
/**
* A CSS class name to apply to the stocktools' div,
* allowing unique CSS styling for each chart.
*/
className: 'highcharts-bindings-wrapper',
/**
* A CSS class name to apply to the container of buttons,
* allowing unique CSS styling for each chart.
*/
toolbarClassName: 'stocktools-toolbar',
/**
* A collection of strings pointing to config options for the
* toolbar items. Each name refers to a unique key from the
* definitions object.
*
* @type {Array<string>}
* @default [
* 'indicators',
* 'separator',
* 'simpleShapes',
* 'lines',
* 'crookedLines',
* 'measure',
* 'advanced',
* 'toggleAnnotations',
* 'separator',
* 'verticalLabels',
* 'flags',
* 'separator',
* 'zoomChange',
* 'fullScreen',
* 'typeChange',
* 'separator',
* 'currentPriceIndicator',
* 'saveChart'
* ]
*/
buttons: [
'indicators',
'separator',
'simpleShapes',
'lines',
'crookedLines',
'measure',
'advanced',
'toggleAnnotations',
'separator',
'verticalLabels',
'flags',
'separator',
'zoomChange',
'fullScreen',
'typeChange',
'separator',
'currentPriceIndicator',
'saveChart'
],
/**
* An options object of the buttons definitions. Each name refers to
* unique key from buttons array.
*/
definitions: {
separator: {
elementType: 'span',
/**
* A predefined background symbol for the button.
*/
symbol: 'separator.svg'
},
simpleShapes: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'label',
* 'circle',
* 'ellipse',
* 'rectangle'
* ]
*
*/
items: [
'label',
'circle',
'ellipse',
'rectangle'
],
circle: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*
*/
symbol: 'circle.svg'
},
ellipse: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*
*/
symbol: 'ellipse.svg'
},
rectangle: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*
*/
symbol: 'rectangle.svg'
},
label: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*
*/
symbol: 'label.svg'
}
},
flags: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'flagCirclepin',
* 'flagDiamondpin',
* 'flagSquarepin',
* 'flagSimplepin'
* ]
*
*/
items: [
'flagCirclepin',
'flagDiamondpin',
'flagSquarepin',
'flagSimplepin'
],
flagSimplepin: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*
*/
symbol: 'flag-basic.svg'
},
flagDiamondpin: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*
*/
symbol: 'flag-diamond.svg'
},
flagSquarepin: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'flag-trapeze.svg'
},
flagCirclepin: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'flag-elipse.svg'
}
},
lines: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'segment',
* 'arrowSegment',
* 'ray',
* 'arrowRay',
* 'line',
* 'arrowInfinityLine',
* 'horizontalLine',
* 'verticalLine'
* ]
*/
items: [
'segment',
'arrowSegment',
'ray',
'arrowRay',
'line',
'arrowInfinityLine',
'horizontalLine',
'verticalLine'
],
segment: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'segment.svg'
},
arrowSegment: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'arrow-segment.svg'
},
ray: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'ray.svg'
},
arrowRay: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'arrow-ray.svg'
},
line: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'line.svg'
},
arrowInfinityLine: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'arrow-line.svg'
},
verticalLine: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'vertical-line.svg'
},
horizontalLine: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'horizontal-line.svg'
}
},
crookedLines: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'elliott3',
* 'elliott5',
* 'crooked3',
* 'crooked5'
* ]
*
*/
items: [
'elliott3',
'elliott5',
'crooked3',
'crooked5'
],
crooked3: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'crooked-3.svg'
},
crooked5: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'crooked-5.svg'
},
elliott3: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'elliott-3.svg'
},
elliott5: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'elliott-5.svg'
}
},
verticalLabels: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'verticalCounter',
* 'verticalLabel',
* 'verticalArrow'
* ]
*/
items: [
'verticalCounter',
'verticalLabel',
'verticalArrow'
],
verticalCounter: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'vertical-counter.svg'
},
verticalLabel: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'vertical-label.svg'
},
verticalArrow: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'vertical-arrow.svg'
}
},
advanced: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'fibonacci',
* 'fibonacciTimeZones',
* 'pitchfork',
* 'parallelChannel',
* 'timeCycles'
* ]
*/
items: [
'fibonacci',
'fibonacciTimeZones',
'pitchfork',
'parallelChannel',
'timeCycles'
],
pitchfork: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'pitchfork.svg'
},
fibonacci: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'fibonacci.svg'
},
fibonacciTimeZones: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'fibonacci-timezone.svg'
},
parallelChannel: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'parallel-channel.svg'
},
timeCycles: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'time-cycles.svg'
}
},
measure: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'measureXY',
* 'measureX',
* 'measureY'
* ]
*/
items: [
'measureXY',
'measureX',
'measureY'
],
measureX: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'measure-x.svg'
},
measureY: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'measure-y.svg'
},
measureXY: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'measure-xy.svg'
}
},
toggleAnnotations: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'annotations-visible.svg'
},
currentPriceIndicator: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'current-price-show.svg'
},
indicators: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'indicators.svg'
},
zoomChange: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'zoomX',
* 'zoomY',
* 'zoomXY'
* ]
*/
items: [
'zoomX',
'zoomY',
'zoomXY'
],
zoomX: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'zoom-x.svg'
},
zoomY: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'zoom-y.svg'
},
zoomXY: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'zoom-xy.svg'
}
},
typeChange: {
/**
* A collection of strings pointing to config options for
* the items.
*
* @type {Array}
* @default [
* 'typeOHLC',
* 'typeLine',
* 'typeCandlestick'
* 'typeHollowCandlestick'
* ]
*/
items: [
'typeOHLC',
'typeLine',
'typeCandlestick',
'typeHollowCandlestick',
'typeHLC',
'typeHeikinAshi'
],
typeOHLC: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'series-ohlc.svg'
},
typeLine: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'series-line.svg'
},
typeCandlestick: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'series-candlestick.svg'
},
typeHLC: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'series-hlc.svg'
},
typeHeikinAshi: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'series-heikin-ashi.svg'
},
typeHollowCandlestick: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'series-hollow-candlestick.svg'
}
},
fullScreen: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'fullscreen.svg'
},
saveChart: {
/**
* A predefined background symbol for the button.
*
* @type {string}
*/
symbol: 'save-chart.svg'
}
},
/**
* Whether the stock tools toolbar is visible.
*
* @since 11.4.4
*/
visible: true
}
};
/* *
*
* Default Exports
*
* */
const StockToolsDefaults = {
lang,
stockTools
};
export default StockToolsDefaults;