ob_bot/

directory
v1.19.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2024 License: Apache-2.0

README

Робот на стакане

Стратегия

Робот отслеживает "стакан". Если лотов в заявках на покупку больше, чем в лотах на продажу в BuyRatio раз, то поступает сигнал на покупку, в противном случае, если лотов в заявках на продажу больше, чем в лотах на покупку в SellRatio раз - поступает сигнал на продажу

Конфигурация
type OrderBookStrategyConfig struct {
// Instruments - слайс идентификаторов инструментов
Instruments []string
// Currency - ISO-код валюты инструментов
Currency string
// RequiredMoneyBalance - Минимальный баланс денежных средств в Currency для начала торгов.
// Для песочницы пополнится автоматически.
RequiredMoneyBalance float64
// Depth - Глубина стакана
Depth int32
//  Если кол-во бид/аск больше чем BuyRatio - покупаем
BuyRatio float64
//  Если кол-во аск/бид больше чем SellRatio - продаем
SellRatio float64
// MinProfit - Минимальный процент выгоды, с которым можно совершать сделки
MinProfit float64
// SellOut - Если true, то по достижению дедлайна бот выходит из всех активных позиций
SellOut bool
}

Исполнитель

Под стратегию написан простейший исполнитель, который выставляет рыночные поручения. Пока реализована возможность открывать только long позиции.

Покупка

Заявка на покупку не выставляется если:

  • Позиция уже открыта
  • На счету недостаточно денежных средств

Продажа

Заявка на продажу не выставляется если:

  • Позиция не открыта
  • Цена открытия позиции меньше цены последней сделки по этому инструменту

Режим работы

Данный пример ориентирован на торговлю внутри одного дня. За расписанием торгов следит investgo.Timer, он сигнализирует о начале и завершении основной торговй сессии на сегодня. При запуске main investgo.Timer возвращает канал с событиями, START/STOP - сигналы к запуску и остановке бота, если выставлен флаг SellOut в конфигурации стратеги и время cancelAhead при создании таймера, то бот завершит работу и закроет все позиции за cancelAhead до конца торгов текущего дня.

Запуск

Важно! В примерах роботов interval_bot и загрузчика стаканов order_book_download используется драйвер для sqlite, который является cgo пакетом. Перед запуском убедитесь, что на вашем компьютере установлен gcc.

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

git clone https://github.com/russianinvestments/invest-api-go-sdk

Перейдите в папку с ботом

cd invest-api-go-sdk/examples/ob_bot

Создайте файл config.yaml

touch "config.yaml"

И заполните его по примеру example.yaml

AccountId: ""
APIToken: <your_token>
EndPoint: sandbox-invest-public-api.tinkoff.ru:443
AppName: invest-api-go-sdk
DisableResourceExhaustedRetry: false
DisableAllRetry: false
MaxRetries: 3

Для быстрого старта на песочнице достаточно указать только токен, остальное заполнится по умолчанию.

go run cmd/main.go

Обратите внимание, что в одной функции main есть возможность создать несколько клиентов для investAPI c разными токенами и счетами, а с разными клиентами можно создавать разных ботов и запускать их одновременно.

Дисклеймер

Разработчики не несут ответственность за любые финансовые потери, возникшие в процессе использования ботов из данного репозитория. Примеры торговых роботов не являются абсолютно верными решениями, их основная цель - продемонстрировать возможности investAPI и go-sdk в частности. Вы свободно можете использовать код из примеров для развития своих проектов.

Directories

Path Synopsis
internal
bot

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL