Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sadegh/71de1ba41158cc6a750078f423d96815 to your computer and use it in GitHub Desktop.
Save sadegh/71de1ba41158cc6a750078f423d96815 to your computer and use it in GitHub Desktop.
tradingview-indicator-compute.js
const INDICATORS = {
'Recommend.Other': { title: 'Oscillators Rating' },
'Recommend.All': { title: 'Technical Rating' },
'Recommend.MA': { title: 'Moving Averages Rating' },
RSI: { title: 'Relative Strength Index (14)' },
'RSI[1]': null,
'Stoch.K': { title: 'Stochastic %K (14, 3, 3)' },
'Stoch.D': { title: 'Stochastic %D (14, 3, 3)' },
'Stoch.K[1]': null,
'Stoch.D[1]': null,
CCI20: { title: 'Commodity Channel Index (20)' },
'CCI20[1]': null,
ADX: { title: 'Average Directional Index (14)' },
'ADX+DI': { title: 'Positive Directional Indicator (14)' },
'ADX-DI': { title: 'Negative Directional Indicator (14)' },
'ADX+DI[1]': null,
'ADX-DI[1]': null,
AO: { title: 'Awesome Oscillator' },
'AO[1]': null,
'AO[2]': null,
Mom: { title: 'Momentum (10)' },
'Mom[1]': null,
'MACD.macd': { title: 'MACD Level (12, 26)' },
'MACD.signal': { title: 'MACD Signal (12, 26)' },
'Rec.Stoch.RSI': null,
'Stoch.RSI.K': { title: 'Stochastic RSI Fast (3, 3, 14, 14)' },
'Rec.WR': null,
'W.R': { title: 'Williams Percent Range (14)' },
'Rec.BBPower': null,
BBPower: { title: 'Bull Bear Power' },
'Rec.UO': null,
UO: { title: 'Ultimate Oscillator (7, 14, 28)' },
close: { title: 'Close' },
EMA10: { title: 'Exponential Moving Average (10)' },
SMA10: { title: 'Simple Moving Average (10)' },
EMA20: { title: 'Exponential Moving Average (20)' },
SMA20: { title: 'Simple Moving Average (20)' },
EMA30: { title: 'Exponential Moving Average (30)' },
SMA30: { title: 'Simple Moving Average (30)' },
EMA50: { title: 'Exponential Moving Average (50)' },
SMA50: { title: 'Simple Moving Average (50)' },
EMA100: { title: 'Exponential Moving Average (100)' },
SMA100: { title: 'Simple Moving Average (100)' },
EMA200: { title: 'Exponential Moving Average (200)' },
SMA200: { title: 'Simple Moving Average (200)' },
'Rec.Ichimoku': null,
'Ichimoku.BLine': { title: 'Ichimoku Base Line (9, 26, 52, 26)' },
'Rec.VWMA': null,
VWMA: { title: 'Volume Weighted Moving Average (20)' },
'Rec.HullMA9': null,
HullMA9: { title: 'Hull Moving Average (9)' },
'Pivot.M.Classic.S3': { title: 'Pivot Classic S3' },
'Pivot.M.Classic.S2': { title: 'Pivot Classic S2' },
'Pivot.M.Classic.S1': { title: 'Pivot Classic S1' },
'Pivot.M.Classic.Middle': { title: 'Pivot Classic P' },
'Pivot.M.Classic.R1': { title: 'Pivot Classic R1' },
'Pivot.M.Classic.R2': { title: 'Pivot Classic R2' },
'Pivot.M.Classic.R3': { title: 'Pivot Classic R3' },
'Pivot.M.Fibonacci.S3': { title: 'Pivot Fibonacci S3' },
'Pivot.M.Fibonacci.S2': { title: 'Pivot Fibonacci S2' },
'Pivot.M.Fibonacci.S1': { title: 'Pivot Fibonacci S1' },
'Pivot.M.Fibonacci.Middle': { title: 'Pivot Fibonacci P' },
'Pivot.M.Fibonacci.R1': { title: 'Pivot Fibonacci R1' },
'Pivot.M.Fibonacci.R2': { title: 'Pivot Fibonacci R2' },
'Pivot.M.Fibonacci.R3': { title: 'Pivot Fibonacci R3' },
'Pivot.M.Camarilla.S3': { title: 'Pivot Camarilla S3' },
'Pivot.M.Camarilla.S2': { title: 'Pivot Camarilla S2' },
'Pivot.M.Camarilla.S1': { title: 'Pivot Camarilla S1' },
'Pivot.M.Camarilla.Middle': { title: 'Pivot Camarilla P' },
'Pivot.M.Camarilla.R1': { title: 'Pivot Camarilla R1' },
'Pivot.M.Camarilla.R2': { title: 'Pivot Camarilla R2' },
'Pivot.M.Camarilla.R3': { title: 'Pivot Camarilla R3' },
'Pivot.M.Woodie.S3': { title: 'Pivot Woodie S3' },
'Pivot.M.Woodie.S2': { title: 'Pivot Woodie S2' },
'Pivot.M.Woodie.S1': { title: 'Pivot Woodie S1' },
'Pivot.M.Woodie.Middle': { title: 'Pivot Woodie P' },
'Pivot.M.Woodie.R1': { title: 'Pivot Woodie R1' },
'Pivot.M.Woodie.R2': { title: 'Pivot Woodie R2' },
'Pivot.M.Woodie.R3': { title: 'Pivot Woodie R3' },
'Pivot.M.Demark.S1': { title: 'Pivot DM S1' },
'Pivot.M.Demark.Middle': { title: 'Pivot DM P' },
'Pivot.M.Demark.R1': { title: 'Pivot DM R1' }
};
let S,
x,
g,
F = '';
const M = {};
const xxx = {
RSI: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
displaySignal: !0,
additionalColumns: ['RSI', 'RSI[1]'],
mutateDisplayValue: 'g.signalDisplayFunctions.processRSISignal',
signalComputation: 'g.signalComputationFunctions.computeRSISignal'
},
RSI7: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
displaySignal: !0,
additionalColumns: ['RSI7', 'RSI7[1]'],
mutateDisplayValue: 'g.signalDisplayFunctions.processRSISignal',
signalComputation: 'g.signalComputationFunctions.computeRSISignal'
},
ADX: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
displaySignal: !0,
additionalColumns: ['ADX', 'ADX+DI', 'ADX-DI', 'ADX+DI[1]', 'ADX-DI[1]'],
mutateDisplayValue: 'g.signalDisplayFunctions.processADXSignal',
signalComputation: 'g.signalComputationFunctions.computeADXSignal'
},
'ADX+DI': {
control: 'condition',
conditionFields: ['ADX-DI'],
formatter: S,
filterFormatter: x
},
'ADX-DI': {
control: 'condition',
conditionFields: ['ADX+DI'],
formatter: S,
filterFormatter: x
},
ATR: {
control: 'condition',
conditionFields: []
},
Mom: {
control: 'condition',
conditionFields: [],
filterFormatter: x,
displaySignal: !0,
additionalColumns: ['Mom', 'Mom[1]'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMomSignal',
signalComputation: 'g.signalComputationFunctions.computeMomSignal'
},
'High.All': {
control: 'toggle',
filter: { operator: 'eless', value: 'high' },
formatter: S,
forexFormatter: M
},
'Low.All': {
control: 'toggle',
filter: { operator: 'egreater', value: 'low' },
formatter: S,
forexFormatter: M
},
price_52_week_high: {
control: 'toggle',
filter: { operator: 'eless', value: 'high' },
formatter: S,
forexFormatter: M
},
price_52_week_low: {
control: 'toggle',
filter: { operator: 'egreater', value: 'low' },
formatter: S,
forexFormatter: M
},
is_primary: {
title: 'F.quoteFieldTitles.is_primary[0]',
control: 'toggle',
filter: { operator: 'equal', value: !0 },
category: 1
},
'High.6M': {
control: 'toggle',
filter: { operator: 'eless', value: 'high' },
formatter: S,
forexFormatter: M
},
'Low.6M': {
control: 'toggle',
filter: { operator: 'egreater', value: 'low' },
formatter: S,
forexFormatter: M
},
'High.3M': {
control: 'toggle',
filter: { operator: 'eless', value: 'high' },
formatter: S,
forexFormatter: M
},
'Low.3M': {
control: 'toggle',
filter: { operator: 'egreater', value: 'low' },
formatter: S,
forexFormatter: M
},
'High.1M': {
control: 'toggle',
filter: { operator: 'eless', value: 'high' },
formatter: S,
forexFormatter: M
},
'Low.1M': {
control: 'toggle',
filter: { operator: 'egreater', value: 'low' },
formatter: S,
forexFormatter: M
},
EMA5: {
control: 'condition',
conditionFields: 'EMA5',
displaySignal: !0,
additionalColumns: ['EMA5', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
EMA10: {
control: 'condition',
conditionFields: 'EMA10',
displaySignal: !0,
additionalColumns: ['EMA10', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
EMA20: {
control: 'condition',
conditionFields: 'EMA20',
displaySignal: !0,
additionalColumns: ['EMA20', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
EMA30: {
control: 'condition',
conditionFields: 'EMA30',
displaySignal: !0,
additionalColumns: ['EMA30', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
EMA50: {
control: 'condition',
conditionFields: 'EMA50',
displaySignal: !0,
additionalColumns: ['EMA50', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
EMA100: {
control: 'condition',
conditionFields: 'EMA100',
displaySignal: !0,
additionalColumns: ['EMA100', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
EMA200: {
control: 'condition',
conditionFields: 'EMA200',
displaySignal: !0,
additionalColumns: ['EMA200', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
SMA5: {
control: 'condition',
conditionFields: 'SMA5',
displaySignal: !0,
additionalColumns: ['SMA5', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
SMA10: {
control: 'condition',
conditionFields: 'SMA10',
displaySignal: !0,
additionalColumns: ['SMA10', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
SMA20: {
control: 'condition',
conditionFields: 'SMA20',
displaySignal: !0,
additionalColumns: ['SMA20', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
SMA30: {
control: 'condition',
conditionFields: 'SMA30',
displaySignal: !0,
additionalColumns: ['SMA30', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
SMA50: {
control: 'condition',
conditionFields: 'SMA50',
displaySignal: !0,
additionalColumns: ['SMA50', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
SMA100: {
control: 'condition',
conditionFields: 'SMA100',
displaySignal: !0,
additionalColumns: ['SMA100', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
SMA200: {
control: 'condition',
conditionFields: 'SMA200',
displaySignal: !0,
additionalColumns: ['SMA200', 'close'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMASignal',
signalComputation: 'g.signalComputationFunctions.computeMASignal'
},
'Stoch.K': {
control: 'condition',
conditionFields: ''.concat(['Stoch.D']),
formatter: S,
displaySignal: !0,
additionalColumns: ['Stoch.K', 'Stoch.D', 'Stoch.K[1]', 'Stoch.D[1]'],
mutateDisplayValue: 'g.signalDisplayFunctions.processStochSignal',
signalComputation: 'g.signalComputationFunctions.computeStochSignal'
},
'Stoch.D': {
control: 'condition',
conditionFields: ''.concat(['Stoch.K']),
formatter: S
},
'MACD.macd': {
control: 'condition',
conditionFields: ''.concat(['MACD.signal']),
displaySignal: !0,
additionalColumns: ['MACD.macd', 'MACD.signal'],
mutateDisplayValue: 'g.signalDisplayFunctions.processMACDSignal',
signalComputation: 'g.signalComputationFunctions.computeMACDSignal'
},
'MACD.signal': {
control: 'condition',
conditionFields: ''.concat(['MACD.macd'])
},
'Aroon.Up': {
control: 'condition',
conditionFields: ['Aroon.Down'],
formatter: S
},
'Aroon.Down': {
control: 'condition',
conditionFields: ['Aroon.Up'],
formatter: S
},
'BB.upper': {
control: 'condition',
conditionFields: ''.concat(['BB.lower', 'KltChnl.upper', 'KltChnl.lower']),
displaySignal: !0,
additionalColumns: ['close', 'BB.upper'],
mutateDisplayValue: 'g.signalDisplayFunctions.processBBSellSignal',
signalComputation: 'g.signalComputationFunctions.computeBBSellSignal'
},
'BB.lower': {
control: 'condition',
conditionFields: ''.concat(['BB.upper', 'KltChnl.upper', 'KltChnl.lower']),
displaySignal: !0,
additionalColumns: ['close', 'BB.lower'],
mutateDisplayValue: 'g.signalDisplayFunctions.processBBBuySignal',
signalComputation: 'g.signalComputationFunctions.computeBBBuySignal'
},
'KltChnl.upper': {
control: 'condition',
conditionFields: ''.concat(['KltChnl.lower', 'BB.upper', 'BB.lower'])
},
'KltChnl.lower': {
control: 'condition',
conditionFields: ''.concat(['KltChnl.upper', 'BB.upper', 'BB.lower'])
},
'P.SAR': {
control: 'condition',
conditionFields: '',
displaySignal: !0,
additionalColumns: ['P.SAR', 'open'],
mutateDisplayValue: 'g.signalDisplayFunctions.processPSARSignal',
signalComputation: 'g.signalComputationFunctions.computePSARSignal'
},
'Value.Traded': { control: 'range', formatter: 'D', category: 1 },
MoneyFlow: {
control: 'condition',
conditionFields: [],
formatter: S
},
ChaikinMoneyFlow: {
control: 'condition',
conditionFields: [],
formatter: S
},
goodwill: { control: 'range', formatter: 'D', category: 2 },
net_debt: { control: 'range', formatter: 'D', category: 2 },
total_debt: { control: 'range', formatter: 'D', category: 2 },
revenue_per_employee: { control: 'range', formatter: 'D', category: 2 },
return_on_invested_capital: {
control: 'condition',
conditionFields: [],
category: 2,
highlightChange: !0
},
after_tax_margin: {
control: 'condition',
conditionFields: [],
category: 2,
highlightChange: !0
},
pre_tax_margin: {
control: 'condition',
conditionFields: [],
category: 2,
highlightChange: !0
},
gross_margin: {
control: 'condition',
conditionFields: [],
category: 2,
highlightChange: !0
},
dividends_paid: { control: 'range', formatter: 'D', category: 2 },
dividend_yield_recent: {
control: 'condition',
conditionFields: [],
category: 2,
highlightChange: !0
},
basic_eps_net_income: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
net_income: { control: 'range', formatter: 'D', category: 2 },
gross_profit: { control: 'range', formatter: 'D', category: 2 },
gross_profit_fq: { control: 'range', formatter: 'D', category: 2 },
number_of_shareholders: { control: 'range', formatter: 'D', category: 2 },
float_shares_outstanding: {
control: 'range',
formatter: 'D',
category: 2
},
total_shares_outstanding_fundamental: {
control: 'range',
formatter: 'D',
category: 2
},
total_shares_outstanding: {
control: 'range',
formatter: 'D',
category: 2
},
total_shares_diluted: { control: 'range', formatter: 'D', category: 2 },
total_value_traded: { control: 'range', formatter: 'D', category: 2 },
total_assets: { control: 'range', formatter: 'D', category: 2 },
total_current_assets: { control: 'range', formatter: 'D', category: 2 },
total_revenue: { control: 'range', formatter: 'D', category: 2 },
total_liabilities_fy: { control: 'range', formatter: 'D', category: 2 },
total_liabilities_fq: { control: 'range', formatter: 'D', category: 2 },
dividends_per_share_fq: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
earnings_per_share_diluted_ttm: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
enterprise_value_ebitda_ttm: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
enterprise_value_fq: { control: 'range', formatter: 'D', category: 2 },
price_revenue_ttm: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
number_of_employees: { control: 'range', formatter: 'D', category: 2 },
last_annual_eps: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
last_annual_revenue: { control: 'range', formatter: 'D', category: 2 },
CCI20: {
control: 'condition',
conditionFields: [],
formatter: S,
displaySignal: !0,
additionalColumns: ['CCI20', 'CCI20[1]'],
mutateDisplayValue: 'g.signalDisplayFunctions.processCCI20Signal',
signalComputation: 'g.signalComputationFunctions.computeCCI20Signal'
},
'DonchCh20.Upper': {
control: 'condition',
conditionFields: ''.concat(['DonchCh20.Lower'])
},
'DonchCh20.Lower': {
control: 'condition',
conditionFields: ''.concat(['DonchCh20.Upper'])
},
HullMA9: {
control: 'condition',
conditionFields: 'HullMA9',
displaySignal: !0,
additionalColumns: ['Rec.HullMA9'],
mutateDisplayValue: 'g.signalDisplayFunctions.processSimpleSignal',
signalComputation: 'g.signalComputationFunctions.computeSimpleSignal'
},
AO: {
control: 'condition',
conditionFields: [],
displaySignal: !0,
additionalColumns: ['AO', 'AO[1]', 'AO[2]'],
mutateDisplayValue: 'g.signalDisplayFunctions.processAOSignal',
signalComputation: 'g.signalComputationFunctions.computeAOSignal'
},
'Pivot.M.Classic.Middle': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Classic.R1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Classic.R2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Classic.R3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Classic.S1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Classic.S2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Classic.S3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Fibonacci.Middle': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Fibonacci.R1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Fibonacci.R2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Fibonacci.R3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Fibonacci.S1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Fibonacci.S2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Fibonacci.S3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Camarilla.Middle': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Camarilla.R1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Camarilla.R2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Camarilla.R3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Camarilla.S1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Camarilla.S2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Camarilla.S3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Woodie.Middle': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Woodie.R1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Woodie.R2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Woodie.R3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Woodie.S1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Woodie.S2': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Woodie.S3': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Demark.Middle': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Demark.R1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
'Pivot.M.Demark.S1': {
formatter: S,
forexFormatter: M,
align: 'right'
},
update_mode: { hiddenColumn: !1, hideSetupColumn: !0, skipField: !0 },
premarket_change: {
title: 'Pre-market Change %',
shortTitle: 'Pre-market chg %',
control: 'condition',
conditionFields: ['change'],
highlightChange: !0
},
premarket_change_abs: {
title: 'Pre-market Change',
shortTitle: 'Pre-market chg',
control: 'condition',
conditionFields: ['change_abs'],
forexFormatter: M,
highlightChange: !0
},
premarket_change_from_open: {
title: 'Pre-market Change from Open %',
shortTitle: 'Pre-market chg from Open %',
control: 'condition',
conditionFields: [],
highlightChange: !0
},
premarket_change_from_open_abs: {
title: 'Pre-market Change from Open',
shortTitle: 'Pre-market chg from Open',
control: 'condition',
conditionFields: [],
forexFormatter: M,
highlightChange: !0
},
premarket_close: {
title: 'Pre-market Close',
shortTitle: 'Pre-market Close',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
premarket_gap: {
title: 'Pre-market Gap %',
shortTitle: 'Pre-market Gap %',
control: 'condition',
conditionFields: ['gap'],
highlightChange: !0
},
premarket_high: {
title: 'Pre-market High',
shortTitle: 'Pre-market High',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
premarket_low: {
title: 'Pre-market Low',
shortTitle: 'Pre-market Low',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
premarket_open: {
title: 'Pre-market Open',
shortTitle: 'Pre-market Open',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
premarket_volume: {
title: 'Pre-market Volume',
shortTitle: 'Pre-market Volume',
control: 'range',
formatter: 'D',
category: 1
},
postmarket_change: {
title: 'Post-market Change %',
shortTitle: 'Post-market chg %',
control: 'condition',
conditionFields: ['change'],
highlightChange: !0
},
postmarket_change_abs: {
title: 'Post-market Change',
shortTitle: 'Post-market chg',
control: 'condition',
conditionFields: ['change_abs'],
forexFormatter: M,
highlightChange: !0
},
postmarket_close: {
title: 'Post-market Close',
shortTitle: 'Post-market Close',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
postmarket_high: {
title: 'Post-market High',
shortTitle: 'Post-market High',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
postmarket_low: {
title: 'Post-market Low',
shortTitle: 'Post-market Low',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
postmarket_open: {
title: 'Post-market Open',
shortTitle: 'Post-market Open',
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 1
},
postmarket_volume: {
title: 'Post-market Volume',
shortTitle: 'Post-market Volume',
control: 'range',
formatter: 'D',
category: 1
},
earnings_per_share_forecast_next_fq: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
earnings_per_share_fq: {
control: 'condition',
conditionFields: [],
formatter: S,
filterFormatter: x,
category: 2
},
'Recommend.All': {
control: 'select',
mutateDisplayValue: 'g.signalDisplayFunctions.processRecommendSignal',
signalComputation: 'g.signalComputationFunctions.computeRecommendSignal',
useDefaultRange: !0,
sortable: !1,
sortSelectedFirst: !1,
defaultRange: 'g.recommendsRange',
customFilterCondition: (t) =>
(0, g.generateRecommendsRequest)(t, 'Recommend.All')
},
'Recommend.MA': {
control: 'select',
mutateDisplayValue: 'g.signalDisplayFunctions.processRecommendSignal',
signalComputation: 'g.signalComputationFunctions.computeRecommendSignal',
useDefaultRange: !0,
sortable: !1,
sortSelectedFirst: !1,
defaultRange: 'g.recommendsRange',
customFilterCondition: (t) =>
(0, g.generateRecommendsRequest)(t, 'Recommend.MA')
},
'Recommend.Other': {
control: 'select',
mutateDisplayValue: 'g.signalDisplayFunctions.processRecommendSignal',
signalComputation: 'g.signalComputationFunctions.computeRecommendSignal',
useDefaultRange: !0,
sortable: !1,
sortSelectedFirst: !1,
defaultRange: 'g.recommendsRange',
customFilterCondition: (t) =>
(0, g.generateRecommendsRequest)(t, 'Recommend.Other')
},
'Stoch.RSI.K': {
control: 'condition',
conditionFields: ['Stoch.RSI.D'],
formatter: S,
displaySignal: !0,
additionalColumns: ['Rec.Stoch.RSI'],
mutateDisplayValue: 'g.signalDisplayFunctions.processSimpleSignal',
signalComputation: 'g.signalComputationFunctions.computeSimpleSignal'
},
'Stoch.RSI.D': {
control: 'condition',
conditionFields: ['Stoch.RSI.K'],
formatter: S
},
'W.R': {
control: 'condition',
conditionFields: [],
formatter: S,
displaySignal: !0,
additionalColumns: ['Rec.WR'],
mutateDisplayValue: 'g.signalDisplayFunctions.processSimpleSignal',
signalComputation: 'g.signalComputationFunctions.computeSimpleSignal'
},
ROC: {
control: 'condition',
conditionFields: [],
formatter: S
},
BBPower: {
control: 'condition',
conditionFields: [],
displaySignal: !0,
additionalColumns: ['Rec.BBPower'],
mutateDisplayValue: 'g.signalDisplayFunctions.processSimpleSignal',
signalComputation: 'g.signalComputationFunctions.computeSimpleSignal'
},
UO: {
control: 'condition',
conditionFields: [],
formatter: S,
displaySignal: !0,
additionalColumns: ['Rec.UO'],
mutateDisplayValue: 'g.signalDisplayFunctions.processSimpleSignal',
signalComputation: 'g.signalComputationFunctions.computeSimpleSignal'
},
VWAP: {
control: 'condition'
// conditionFields: ,
//
},
VWMA: {
control: 'condition',
// conditionFields: ,
//
displaySignal: !0,
additionalColumns: ['Rec.VWMA'],
mutateDisplayValue: 'g.signalDisplayFunctions.processSimpleSignal',
signalComputation: 'g.signalComputationFunctions.computeSimpleSignal'
},
ADR: {
control: 'condition',
conditionFields: ''
},
'Ichimoku.CLine': {
control: 'condition',
conditionFields: 'Ichimoku.CLine'
},
'Ichimoku.BLine': {
control: 'condition',
conditionFields: 'Ichimoku.BLine',
displaySignal: !0,
additionalColumns: ['Rec.Ichimoku'],
mutateDisplayValue: 'g.signalDisplayFunctions.processSimpleSignal',
signalComputation: 'g.signalComputationFunctions.computeSimpleSignal'
}
};
console.log(
JSON.stringify(
Object.keys(INDICATORS).reduce((previousValue, indicator) => {
const obj = INDICATORS[indicator];
let result;
if (obj) {
result = {
[indicator]: {
...INDICATORS[indicator]
}
};
let compute;
if (xxx && xxx[indicator] && xxx[indicator]['additionalColumns']) {
compute = {
method:
'//Compute.' +
xxx[indicator]['mutateDisplayValue'].match(
/process(.*)Signal/
)[1] +
'//',
paramKeys: xxx[indicator]['additionalColumns']
};
}
if (compute) {
result[indicator].compute = compute;
}
} else {
result = {
[indicator]: null
};
}
return {
...previousValue,
...result
};
}, {})
)
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment