Using Node.js for Trading Tools and Technical Indicators
Summary
The discussion surveys ways Node.js and JavaScript have been used in trading projects, from tracking market data and calculating indicators to reporting, backtesting, and live applications. One response recommends using a Node.js wrapper for the TA-Lib technical analysis library, which supplies a broad set of indicators, including moving averages, momentum measures, volatility measures, and candlestick-pattern functions. Other contributors describe using Node.js for reporting or platform services, and some cite JavaScript or TypeScript indicator and time-series packages.
The examples show that the ecosystem can support indicator work and real-time applications, but they do not compare performance, reliability, or suitability for production trading. The replies also distinguish supporting tools from a main signal-generation system. Package names and maintenance status reflect the time of the discussion, so readers should check current compatibility and support before relying on a library. The thread offers implementation leads rather than evidence that a particular language or indicator set improves trading results.
Key ideas
- Node.js can support market-data projects, indicator calculations, reporting, and trading applications.
- TA-Lib wrappers provide access to a broad catalog of technical indicators and pattern functions.
- Contributors report varied uses, including reporting services and algorithm development.
- The discussion does not benchmark tools or establish that JavaScript is suitable for every production system.
- Library availability and maintenance may change, so current status should be checked.
Tags
Full text
# Is node.js being used in systematic trading software? # Is node.js being used in systematic trading software? I have a project where I would like to track some tick data and create some indicators to follow it. I am thinking of using Node.js for this project, but I would like to know from those in industry if they have come across it in their own or others systems and if they use any particular JavaScript finance libraries. ## Answer by sdude (score 6, accepted) https://quant.stackexchange.com/a/19547 I think the best choice for technical analysis with node is node-talib, a wrapper around TA-Lib. We're using it for some projects and it works ok so far. Here's a list of the indicators you get out of the box: ``` AD Chaikin A/D Line ADOSC Chaikin A/D Oscillator ADX Average Directional Movement Index ADXR Average Directional Movement Index Rating APO Absolute Price Oscillator AROON Aroon AROONOSC Aroon Oscillator ATR Average True Range AVGPRICE Average Price BBANDS Bollinger Bands BETA Beta BOP Balance Of Power CCI Commodity Channel Index CDL2CROWS Two Crows CDL3BLACKCROWS Three Black Crows CDL3INSIDE Three Inside Up/Down CDL3LINESTRIKE Three-Line Strike CDL3OUTSIDE Three Outside Up/Down CDL3STARSINSOUTH Three Stars In The South CDL3WHITESOLDIERS Three Advancing White Soldiers CDLABANDONEDBABY Abandoned Baby CDLADVANCEBLOCK Advance Block CDLBELTHOLD Belt-hold CDLBREAKAWAY Breakaway CDLCLOSINGMARUBOZU Closing Marubozu CDLCONCEALBABYSWALL Concealing Baby Swallow CDLCOUNTERATTACK Counterattack CDLDARKCLOUDCOVER Dark Cloud Cover CDLDOJI Doji CDLDOJISTAR Doji Star CDLDRAGONFLYDOJI Dragonfly Doji CDLENGULFING Engulfing Pattern CDLEVENINGDOJISTAR Evening Doji Star CDLEVENINGSTAR Evening Star CDLGAPSIDESIDEWHITE Up/Down-gap side-by-side white lines CDLGRAVESTONEDOJI Gravestone Doji CDLHAMMER Hammer CDLHANGINGMAN Hanging Man CDLHARAMI Harami Pattern CDLHARAMICROSS Harami Cross Pattern CDLHIGHWAVE High-Wave Candle CDLHIKKAKE Hikkake Pattern CDLHIKKAKEMOD Modified Hikkake Pattern CDLHOMINGPIGEON Homing Pigeon CDLIDENTICAL3CROWS Identical Three Crows CDLINNECK In-Neck Pattern CDLINVERTEDHAMMER Inverted Hammer CDLKICKING Kicking CDLKICKINGBYLENGTH Kicking - bull/bear determined by the longer marubozu CDLLADDERBOTTOM Ladder Bottom CDLLONGLEGGEDDOJI Long Legged Doji CDLLONGLINE Long Line Candle CDLMARUBOZU Marubozu CDLMATCHINGLOW Matching Low CDLMATHOLD Mat Hold CDLMORNINGDOJISTAR Morning Doji Star CDLMORNINGSTAR Morning Star CDLONNECK On-Neck Pattern CDLPIERCING Piercing Pattern CDLRICKSHAWMAN Rickshaw Man CDLRISEFALL3METHODS Rising/Falling Three Methods CDLSEPARATINGLINES Separating Lines CDLSHOOTINGSTAR Shooting Star CDLSHORTLINE Short Line Candle CDLSPINNINGTOP Spinning Top CDLSTALLEDPATTERN Stalled Pattern CDLSTICKSANDWICH Stick Sandwich CDLTAKURI Takuri (Dragonfly Doji with very long lower shadow) CDLTASUKIGAP Tasuki Gap CDLTHRUSTING Thrusting Pattern CDLTRISTAR Tristar Pattern CDLUNIQUE3RIVER Unique 3 River CDLUPSIDEGAP2CROWS Upside Gap Two Crows CDLXSIDEGAP3METHODS Upside/Downside Gap Three Methods CMO Chande Momentum Oscillator CORREL Pearson's Correlation Coefficient (r) DEMA Double Exponential Moving Average DX Directional Movement Index EMA Exponential Moving Average HT_DCPERIOD Hilbert Transform - Dominant Cycle Period HT_DCPHASE Hilbert Transform - Dominant Cycle Phase HT_PHASOR Hilbert Transform - Phasor Components HT_SINE Hilbert Transform - SineWave HT_TRENDLINE Hilbert Transform - Instantaneous Trendline HT_TRENDMODE Hilbert Transform - Trend vs Cycle Mode KAMA Kaufman Adaptive Moving Average LINEARREG Linear Regression LINEARREG_ANGLE Linear Regression Angle LINEARREG_INTERCEPT Linear Regression Intercept LINEARREG_SLOPE Linear Regression Slope MA All Moving Average MACD Moving Average Convergence/Divergence MACDEXT MACD with controllable MA type MACDFIX Moving Average Convergence/Divergence Fix 12/26 MAMA MESA Adaptive Moving Average MAX Highest value over a specified period MAXINDEX Index of highest value over a specified period MEDPRICE Median Price MFI Money Flow Index MIDPOINT MidPoint over period MIDPRICE Midpoint Price over period MIN Lowest value over a specified period MININDEX Index of lowest value over a specified period MINMAX Lowest and highest values over a specified period MINMAXINDEX Indexes of lowest and highest values over a specified period MINUS_DI Minus Directional Indicator MINUS_DM Minus Directional Movement MOM Momentum NATR Normalized Average True Range OBV On Balance Volume PLUS_DI Plus Directional Indicator PLUS_DM Plus Directional Movement PPO Percentage Price Oscillator ROC Rate of change : ((price/prevPrice)-1)*100 ROCP Rate of change Percentage: (price-prevPrice)/prevPrice ROCR Rate of change ratio: (price/prevPrice) ROCR100 Rate of change ratio 100 scale: (price/prevPrice)*100 RSI Relative Strength Index SAR Parabolic SAR SAREXT Parabolic SAR - Extended SMA Simple Moving Average STDDEV Standard Deviation STOCH Stochastic STOCHF Stochastic Fast STOCHRSI Stochastic Relative Strength Index SUM Summation T3 Triple Exponential Moving Average (T3) TEMA Triple Exponential Moving Average TRANGE True Range TRIMA Triangular Moving Average TRIX 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA TSF Time Series Forecast TYPPRICE Typical Price ULTOSC Ultimate Oscillator VAR Variance WCLPRICE Weighted Close Price WILLR Williams' %R WMA Weighted Moving Average ``` ## Answer by chollida (score 12) https://quant.stackexchange.com/a/12620 We use `Node` for reporting but not as part of our main signal generating trading system. To be honest the answer will almost certainly be yes for every common programming technology as it just takes one person to use it somewhere to make the answer yes. Just look at OCaml, before Jane street, most techno logiest on the street had never heard of it and now its very well known. Probably the canonical answer for this type of question should be this one: https://quant.stackexchange.com/a/304/743 META RANT In general I find these kind of questions a bit troubling for this site for two reasons: - for any given programming language or stack if you ask is anyone using this for trading the answer is mostly likely yes. - There is no real outcome or call to action from the question. If someone answers yes, so what? if someone answers no, so what? What is the canonical answer to a question like this that Or put another way, what answer would make the poster happy here? END RANT ## Answer by jonkafton (score 6) https://quant.stackexchange.com/a/14951 Cloud9Trader uses Node.js on the back end and JavaScript across its technology stack, including for writing the trading algorithms themselves. https://www.cloud9trader.com ## Answer by Jack Slocum (score 4) https://quant.stackexchange.com/a/14403 We use node.js at alta5. The event-driven, non-blocking I/O model performs well in data-intensive real-time applications like a trading platform. http://alta5.com/ ## Answer by Julien L (score 3) https://quant.stackexchange.com/a/15791 I am using NodeJS for a similar project. There's not a ton of packages on NPM for finance and stocks, so I wrote my own, that might help you get started: - Fetching historical stock data, including intraday: https://www.npmjs.org/package/node-activetick - Charting, analysing, forecasting the data: https://www.npmjs.org/package/timeseries-analysis You can use timeseries-analysis to write your own indicators, and chart them with the stock data. I am currently writing a new npm package to make using/creating indicators easier and more efficient. Mail me if you want to follow up or if you have any question. ## Answer by Benny Neugebauer (score 1) https://quant.stackexchange.com/a/68783 With the rise of crypto trading more and more technical indicators, backtesting software and live trading applications have been created using JavaScript/TypeScript and Node.js. One of the most successful was probably gekko, which unfortunately is not maintained by its creator anymore but has some active forks. If you are just interested in indicator libraries, then you should take a look at tulind which is a wrapper around the famous Tulip Indicators and provides 100+ technical analysis indicator functions. Other good ones are Anand Aravindan's technical indicators (pure JavaScript) or my trading-signals library (TypeScript & JavaScript).
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.