Coder Social home page Coder Social logo

keshon / tinkoff-invest-api-nimlang Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 17 KB

Реализация для Тинькофф Инвестиции OpenAPI на языке Nim

License: Apache License 2.0

Nim 100.00%
tinkoff tinkoff-invest tinkoff-invest-api nimlang nim-lang nim stock-market stocks stocks-api stock-trading

tinkoff-invest-api-nimlang's Introduction

Реализация для Тинькофф Инвестиции OpenAPI на языке Nim

⚠️ Внимание

  • Покрытие тестами не полное.
  • Работоспособность проверялалсь только на Windows.
  • Автор ничего на языке Nim до этого не писал, так что "вы держитесь здесь, вам всего доброго..."

Данный код написан на основе официальной реализации на языке Go. Поддерживается пока только rest, без streams.

Установка

Клонируйте репо:

git clone https://github.com/keshon/tinkoff-nimfest-api.git

Переименуйте example.token.conf в token.conf и укажите в нем свой API токен от Тинькофф Ивестиции в следующем формате (о получении токена можно узнать из официальной документации)

Для запуска примера выполните следующую команду в терминале (в корне проекта):

nimble erun

Для тестов:

nimble trun

Методы

Официальный OpenAPI

Описание Метод (без типов)
Создание клиента newRestClient(token)
Создание клиента в sandbox newSandboxClient(token)
Регистрация клиента в sandbox register(accountType)
Выставление баланса по валютным позициям setCurrencyBalance(accountID, currency, balance)
Выставление баланса по инструментным позициям setPositionsBalance(accountID, figi, balance)
Удаление счета remove(accountID)
Удаление всех позиций clear(accountID)
Получение инструмента по FIGI instrumentByFIGI(figi)
Получение инструмента по тикеру instrumentByTicker(ticker)
Получение списка валютных пар currencies()
Получение списка ETF etfs()
Получение списка акций stocks()
Получение списка облигаций bonds()
Получение списка операций operations(accountID, fromTime, toTime, figi)
Получение портфеля клиента positionsPortfolio(accountID)
Получение валютных активов клиента currenciesPortfolio(accountID)
Получение портфеля и валютных активов клиента portfolio(accountID)
Отмена заявки orderCancel(id, accountID)
Создание лимитной заявки limitOrder(accountID, figi, lots, operation, price)
Создание рыночной заявки marketOrder(accountID, figi, lots, operation)
Получение списка активных заявок orders(accountID)
Получение исторических свечей по FIGI candles(fromTime, toTime, interval, figi)
Получение стакана по FIGI orderbook(figi, depth)
Получение брокерских счетов клиента accounts()

Пример

import parsecfg

import
    api/domain,
    api/sandbox_api,
    api/rest_api


when isMainModule:

    # Считываем токен из конфига:
    let config = loadConfig("token.conf")
    let token = config.getSectionValue("", "TOKEN")

    # Создаем клиента
    var ti: RestClient
    ti = newSandboxClient(token)

    # Регистрация клиента в sandbox
    var (resp, err) = ti.register(AccountTinkoff)
    let accountId = resp.brokerAccountId

    # Получение брокерских счетов клиента
    echo ti.accounts()[0] # [0] - содержимое ответа, [1] - содержимое ошибки

    # Выставление баланса по валютным позициям
    echo ti.setCurrencyBalance(accountId, RUB, 1000.0)

    # Выставление баланса по инструментным позициям
    echo ti.setPositionsBalance(accountId, "BBG00PNLY692", 10.0)

    # Получение портфеля клиента
    echo ti.positionsPortfolio(accountId)[0]

    # Удаление всех позиций
    echo ti.clear(accountId)

    # Удаление счета
    #echo ti.remove(accountId)

Дополнительно

Во время запуска (примера или тестов) создается тестовый счет, который после завершения удаляется автоматически.

tinkoff-invest-api-nimlang's People

Contributors

keshon avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.