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.
-
$\begingroup$ Are you only using it for charting? Node.js has not yet (as of June 2014) reached version 1. I know it is widely used for web development but I would be hesitant to rely on it for trading purposes. $\endgroup$– deprecatedJun 11, 2014 at 13:19
-
$\begingroup$ @deprecated the project would have been used for trading but its currently on hold for now. $\endgroup$– NikosOct 8, 2014 at 11:16
6 Answers
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
-
1$\begingroup$ Making as the answer as provides technical library. $\endgroup$– NikosDec 16, 2015 at 13:44
-
$\begingroup$ This binding is synchronous, maybe you can use talib-binding(npmjs.com/package/talib-binding) alternatively. $\endgroup$– kcatsOct 13, 2017 at 9:20
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
-
$\begingroup$ The most helpful would be practical reasons why one would not--seeing that it has been used successful is similarly helpful (why wasn't it good enough for your signal generation?). In either case, any particular remarkable "lessons learned" from the processing of building such a system or library is also not a waste. $\endgroup$ Dec 21, 2023 at 15:33
Cloud9Trader uses Node.js on the back end and JavaScript across its technology stack, including for writing the trading algorithms themselves.
-
$\begingroup$ Hi hacklikecrack, welcome to Quant.SE! Could you please disclose any affiliations? $\endgroup$– Bob Jansen ♦Oct 5, 2014 at 11:09
-
-
$\begingroup$ Hi Nikos, our tooling is developed in house. Please take a look at our core library API documentation: cloud9trader.com/documentation/api-reference You may also be interested in our technical indicator code, which is available for use in our platform and open sourced here: github.com/Cloud9Trader/TechnicalIndicators $\endgroup$ Nov 27, 2015 at 17:18
-
$\begingroup$ @BobJansen yes, I am the founder and a developer on the project. $\endgroup$ Nov 27, 2015 at 17:23
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.
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).
-
1