Forked from kyawswarthwin/TradingView Indicator Compute
Created
May 23, 2024 10:45
-
-
Save sadegh/71de1ba41158cc6a750078f423d96815 to your computer and use it in GitHub Desktop.
tradingview-indicator-compute.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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