IG Trading API for Node.js, written in TypeScript.
IG Trading API
Unofficial IG Trading API for Node.js, written in TypeScript and covered by tests.
Features
- Typed. Source code is 100% TypeScript. No need to install external typings.
- Tested. Code coverage is 100%. No surprises when using [ig-trading-api][1].
- Maintained. Automated security updates. No threats from outdated dependencies.
- Documented. Get started with the [generated documentation][2].
Installation
npm
npm install ig-trading-api
Yarn
yarn add ig-trading-api
Usage
You can set the API gateway, when initializing the API client. Use APIClient.URLDEMO (demo-api.ig.com) for demo accounts and APIClient.URLLIVE (api.ig.com) for live account access.
Login
import {APIClient} from 'ig-trading-api';
const client = new APIClient(APIClient.URL_LIVE, { apiKey: 'your-api-key', username: 'your-username', password: 'your-password', });
Search Trading Symbol
Make sure to use IG's Epic codes to find a trading symbol:
const query = 'BITCOIN';
const response = await client.rest.market.searchMarkets(query);
console.log(response.markets[0].epic);
Show available resolutions
Check the available intervals for retrieving data:
import {APIClient, Resolution} from 'ig-trading-api';
console.log(Resolution);
Retrieve historical data
const epic = 'UC.D.MSFT.CASH.IP';
const prices = await client.rest.market.price.getPrices(epic, Resolution.DAY, 5);
Subscribe to live data
Here is how you can subscribe to live candles and other updates from IG:
More Examples
More code examples can be found in the demo directory.
Resources
- IG REST Trading API Reference
- IG API Companion
- IG Streaming Companion
- IG REST Trading API Limits
- Spreads, commissions and margins (in Germany)
IG Instrument Identifier (Epic)
Breakdown for "IX.D.DOW.DAILY.IP":
| Symbol | Description | Example | | ------ | ------------------------------- | ------------------------------------------------------------------ | | IX | Hours of trading | "Index Out of Hours" | | D | Tradability | "D" when tradeable | | DOW | Underlying market | "Dow Jones" | | DAILY | Indicator for processing method | "Daily" funded bet | | IP | Asset type | "Intellectual Property" |
Epics for testing:
| Epic | Name | Environment | Trading Time | | ------------------- | ------------------- | ----------- | ---------------------- | | ED.D.DHERGY.CASH.IP | Delivery Hero SE | Live / Demo | Germany: 09:00 - 17:30 | | UC.D.MSFT.CASH.IP | Microsoft Corp | Live / Demo | Germany: 10:00 - 03:00 | | UA.D.COINUS.CASH.IP | Coinbase Global Inc | Live | Germany: 15:30 - 22:00 |
Development Setup
You can get up and running in just a few simple steps:
- Run
yarn(to install or update third-party dependencies) - Have a look at the .env.defaults file and make a copy (including your own credentials) with the name
.envin the root directory of this repository (read more about dotenv files) - Run
yarn demo:loginto test your credentials
Maintainers
[![Benny Neugebauer on Stack Exchange][stackexchangebennynbadge]][stackexchangebennynurl]
Contributing
Contributions, issues and feature requests are welcome!
Feel free to check the issues page.
License
This project is MIT licensed.
⭐️ Show your support ⭐️
Please leave a star if you find this project useful.
[1]: https://www.npmjs.com/package/ig-trading-api [2]: https://bennycode.com/ig-trading-api [stackexchangebennyn_badge]: https://stackexchange.com/users/flair/203782.png?theme=default [stackexchangebennyn_url]: https://stackexchange.com/users/203782/benny-neugebauer?tab=accounts