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
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?
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.
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.