Trading Open API - JS SDK
SDK Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ OpenAPI Π’ΠΈΠ½ΡΠΊΠΎΡΡ ΠΠ½Π²Π΅ΡΡΠΈΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠ³ΠΎΠ²ΡΡ ΡΠΎΠ±ΠΎΡΠΎΠ².
npm i @tinkoff/invest-openapi-js-sdk --save
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π»ΠΎΠΊ "Π’ΠΎΠΊΠ΅Π½ Π΄Π»Ρ OpenAPI"
- Π€ΡΠ½ΠΊΡΠΈΡ "ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΎΠΊ ΠΊΠΎΠ΄ΠΎΠΌ" Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°
- ΠΡΠΏΡΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½ OpenApi Π΄Π»Ρ Π±ΠΈΡΠΆΠΈ ΠΈ Sandbox. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠΏΡΠΎΡΠΈΡ Π²Π°Ρ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ Π΅ΡΠ΅ ΡΠ°Π·, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΠ΅ΡΡ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΡΠ° ΠΊ ΡΠΎΡΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅.
- Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠΎΠΊΠ΅Π½ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅, ΡΠΎΠΊΠ΅Π½ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΊΠ΅Π½ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ
ΡΠΌ. Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² example
import OpenAPI from '@tinkoff/invest-openapi-js-sdk';
const apiURL = 'https://api-invest.tinkoff.ru/openapi/sandbox'; // ΠΠ»Ρ Production-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ https://api-invest.tinkoff.ru/openapi
const socketURL = 'wss://api-invest.tinkoff.ru/openapi/md/v1/md-openapi/ws';
const secretToken = 'xxx'; // ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΡΠ°Π½Π΄Π±ΠΎΠΊΡΠ°
const api = new OpenAPI({ apiURL, secretToken, socketURL });
!(async function run() {
const { figi } = await api.searchOne({ ticker: 'AAPL' });
const { commission, orderId } = await api.limitOrder({
operation: 'Buy',
figi,
lots: 1,
price: 100,
}); // ΠΠΎΠΊΡΠΏΠ°Π΅ΠΌ AAPL
console.log(commission); // ΠΠΎΠΌΠΈΡΡΠΈΡ Π·Π° ΡΠ΄Π΅Π»ΠΊΡ
await api.cancelOrder({ orderId }); // ΠΡΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π°ΡΠ²ΠΊΡ
})();
Sandbox
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Sandbox Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² apiURL ΠΈ Π² secretToken url ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ° Ρ Π°ΠΏΠΈ sandbox'Π° ΠΈ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΡ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
await api.sandboxClear(); // ΠΎΡΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΡ
const { figi } = await api.searchOne({ ticker: 'AAPL' });
await api.setCurrenciesBalance({ currency: 'USD', balance: 1000 }); // 1000$ Π½Π° ΡΡΠ΅Ρ
await api.instrumentPortfolio({ figi }); // Π ΠΏΠΎΡΡΡΠ΅Π»Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ
await api.limitOrder({ operation: 'Buy', figi, lots: 1, price: 100 }); // ΠΠΎΠΊΡΠΏΠ°Π΅ΠΌ AAPL
await api.instrumentPortfolio({ figi }); // Π‘Π΄Π΅Π»ΠΊΠ° ΠΏΡΠΎΡΠ»Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ 6 TCP ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π½Π° Π°ΠΊΠΊΠ°ΡΠ½Ρ