@tinkoff/invest-openapi-js-sdk

Tinkoff Invest OpenAPI Client


Keywords
trading, investment, strategy, bot
License
Apache-2.0
Install
npm install @tinkoff/invest-openapi-js-sdk@1.5.0

Documentation

Trading Open API - JS SDK

SDK для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с OpenAPI Π’ΠΈΠ½ΡŒΠΊΠΎΡ„Ρ„ Π˜Π½Π²Π΅ΡΡ‚ΠΈΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹Ρ… Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ².

npm i @tinkoff/invest-openapi-js-sdk --save

ДокумСнтация

Доступна ΠΏΠΎ ссылкС

Swagger

Авторизация

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² настройки Π±Π»ΠΎΠΊ "Π’ΠΎΠΊΠ΅Π½ для OpenAPI"
  2. Ѐункция "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ сдСлок ΠΊΠΎΠ΄ΠΎΠΌ" Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°
  3. ВыпуститС Ρ‚ΠΎΠΊΠ΅Π½ OpenApi для Π±ΠΈΡ€ΠΆΠΈ ΠΈ Sandbox. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ систСма попросит вас Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅Ρ‰Π΅ Ρ€Π°Π·, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€ΠΎΠ±ΠΎΡ‚Π° ΠΊ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.
  4. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ сохранитС, Ρ‚ΠΎΠΊΠ΅Π½ отобраТаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π΅ получится, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

см. Π±ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² 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 соСдинСний Π½Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚