Documentation ¶
Index ¶
- type AnalyseFunc
- type AnalyseType
- type BacktestConfig
- type Bot
- type CandleDB
- type CandlesStorage
- func (c *CandlesStorage) Candles(id string, from, to time.Time) ([]*pb.HistoricCandle, error)
- func (c *CandlesStorage) CandlesAll(uid string) ([]*pb.HistoricCandle, error)
- func (c *CandlesStorage) Close() error
- func (c *CandlesStorage) LoadCandlesHistory(id string, interval pb.CandleInterval, inc *pb.Quotation, from time.Time) error
- func (c *CandlesStorage) UpdateCandlesHistory(id string) error
- type Executor
- func (e *Executor) BuyLimit(id string, price float64) error
- func (e *Executor) CancelLimit(id string) error
- func (e *Executor) ReplaceLimit(id string, price float64) error
- func (e *Executor) SellLimit(id string, price float64) error
- func (e *Executor) SellOut() (float64, error)
- func (e *Executor) Start(i map[string]Interval) error
- func (e *Executor) Stop(sellOut bool) error
- func (e *Executor) UpdateInterval(id string, i Interval) error
- type Instrument
- type InstrumentState
- type Interval
- type IntervalStrategyConfig
- type NewCandlesStorageRequest
- type Positions
- type State
- type States
- type StorageInstrument
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnalyseFunc ¶
type AnalyseFunc func(id string, candles []*pb.HistoricCandle) (*analyseResponse, error)
AnalyseFunc - Функция для анализа свечей и расчета интервала
type AnalyseType ¶
type AnalyseType int
AnalyseType - Тип анализа исторических свечей при расчете интервала
const ( // MATH_STAT - Анализ свечей при помощи пакета stats. Интервал для цены это AnalyseLowPercentile-AnalyseHighPercentile // из выборки средних цен свечей за последние DaysToCalculateInterval дней MATH_STAT AnalyseType = iota // BEST_WIDTH - Анализ свечей происходит так: // Вычисляется медиана распределения выборки средних цен свечей за последние DaysToCalculateInterval дней, от нее берется // сначала фиксированный интервал шириной MinProfit процентов от медианы, далее если это выгодно интервал расширяется. // Так же есть возможность задать фиксированный интервал в процентах. BEST_WIDTH // SIMPLEST - Поиск интервала простым перебором SIMPLEST )
type BacktestConfig ¶
type BacktestConfig struct { // Analyse - Тип анализа исторических свечей при расчете интервала Analyse AnalyseType // LowPercent - Для анализа типа MathStat нижний перцентиль для расчета интервала LowPercentile float64 // HighPercentile - Для анализа типа MathStat верхний перцентиль для расчета интервала HighPercentile float64 // MinProfit - Минимальный профит для рассчета, с которым рассчитывается интервал MinProfit float64 // StopLoss - Процент убытка для выставления стоп-лосс заявки StopLoss float64 // DaysToCalculateInterval - Кол-во дней на которых рассчитывается интервал для цен для торговли DaysToCalculateInterval int // Commission - Комиссия за 1 сделку в процентах Commission float64 }
type Bot ¶
type Bot struct { StrategyConfig IntervalStrategyConfig Client *investgo.Client // contains filtered or unexported fields }
Bot - Интервальный бот
func NewBot ¶
func NewBot(ctx context.Context, client *investgo.Client, s *CandlesStorage, e *Executor, config IntervalStrategyConfig) (*Bot, error)
NewBot - Создание нового интервального бота по конфигу
type CandlesStorage ¶
type CandlesStorage struct {
// contains filtered or unexported fields
}
CandlesStorage - Локально хранилище свечей в sqlite
func NewCandlesStorage ¶
func NewCandlesStorage(req NewCandlesStorageRequest) (*CandlesStorage, error)
NewCandlesStorage - Создание хранилища свечей
func (*CandlesStorage) Candles ¶
func (c *CandlesStorage) Candles(id string, from, to time.Time) ([]*pb.HistoricCandle, error)
Candles - Получение исторических свечей по uid инструмента
func (*CandlesStorage) CandlesAll ¶
func (c *CandlesStorage) CandlesAll(uid string) ([]*pb.HistoricCandle, error)
CandlesAll - Получение всех исторических свечей из хранилища по uid инструмента
func (*CandlesStorage) Close ¶
func (c *CandlesStorage) Close() error
Close - Закрытие хранилища свечей
func (*CandlesStorage) LoadCandlesHistory ¶
func (c *CandlesStorage) LoadCandlesHistory(id string, interval pb.CandleInterval, inc *pb.Quotation, from time.Time) error
LoadCandlesHistory - Начальная загрузка исторических свечей для нового инструмента (from - now)
func (*CandlesStorage) UpdateCandlesHistory ¶
func (c *CandlesStorage) UpdateCandlesHistory(id string) error
UpdateCandlesHistory - Загрузить исторические свечи в хранилище от времени последнего обновления до now
type Executor ¶
type Executor struct {
// contains filtered or unexported fields
}
Executor - Вызывается ботом и исполняет торговые поручения
func NewExecutor ¶
func (*Executor) BuyLimit ¶
BuyLimit - Выставление лимитного торгового поручения на покупку инструмента с uid = id по цене ближайшей к price
func (*Executor) CancelLimit ¶
CancelLimit - Отмена текущего лимитного поручения, если оно есть, для инструмента с uid = id
func (*Executor) ReplaceLimit ¶
ReplaceLimit - Изменение цены лимитного торгового поручения, если оно есть, для инструмента с uid = id
func (*Executor) SellLimit ¶
SellLimit - Выставление лимитного торгового поручения на продажу инструмента с uid = id по цене ближайшей к price
type Instrument ¶
type Instrument struct { // Quantity - Количество лотов, которое покупает/продает исполнитель за 1 поручение Quantity int64 // lot - Лотность инструмента Lot int32 //currency - Код валюты инструмента Currency string //ticker - Тикер инструмента Ticker string //minPriceInc - Минимальный шаг цены MinPriceInc *pb.Quotation // entryPrice - После открытия позиции, сохраняется цена этой сделки EntryPrice float64 // stopLossPercent - Процент изменения цены, для стоп-лосс заявки StopLossPercent float64 }
type InstrumentState ¶
type InstrumentState int
const ( // WAIT_ENTRY_PRICE - Ожидание нужной last price по инструменту, для выставления лимитной заявки на покупку. // Аналог StopLimit заявки на покупку WAIT_ENTRY_PRICE InstrumentState = iota // OUT_OF_STOCK - Нет открытых позиций по этому инструменту OUT_OF_STOCK // IN_STOCK - Есть открытая позиция по этому инструменту IN_STOCK // TRY_TO_BUY - Выставлена лимитная заявка на покупку этого инструмента TRY_TO_BUY // TRY_TO_SELL - Выставлена лимитная заявка на продажу этого инструмента TRY_TO_SELL )
type Interval ¶
type Interval struct {
// contains filtered or unexported fields
}
Interval - Интервал цены. Low - для покупки, high - для продажи
type IntervalStrategyConfig ¶
type IntervalStrategyConfig struct { // Instruments - Слайс идентификаторов инструментов первичный Instruments []string // PreferredPositionPrice - Предпочтительная стоимость открытия позиции в валюте PreferredPositionPrice float64 // MaxPositionPrice - Максимальная стоимость открытия позиции в валюте MaxPositionPrice float64 // MinProfit - Минимальный процент выгоды, с которым можно совершать сделки MinProfit float64 // IntervalUpdateDelay - Время ожидания для перерасчета интервала цены IntervalUpdateDelay time.Duration // TopInstrumentsQuantity - Топ лучших инструментов по волатильности TopInstrumentsQuantity int // SellOut - Если true, то по достижению дедлайна бот выходит из всех активных позиций SellOut bool // StorageDBPath - Путь к бд sqlite, в которой лежат исторические свечи по инструментам StorageDBPath string // StorageCandleInterval - Интервал для обновления и запроса исторических свечей StorageCandleInterval pb.CandleInterval // StorageFromTime - Время, от которого будет хранилище будет загружать историю для новых инструментов StorageFromTime time.Time // StorageUpdate - Если true, то в хранилище обновятся все свечи до now StorageUpdate bool // DaysToCalculateInterval - Кол-во дней, на которых рассчитывается интервал цен для торговли DaysToCalculateInterval int // StopLossPercent - Процент изменения цены, для стоп-лосс заявки StopLossPercent float64 // AnalyseLowPercentile - Нижний процентиль для расчета интервала AnalyseLowPercentile float64 // AnalyseHighPercentile - Верхний процентиль для расчета интервала AnalyseHighPercentile float64 // Analyse - Тип анализа исторических свечей при расчете интервала Analyse AnalyseType }
IntervalStrategyConfig - Конфигурация стратегии интервального бота
type NewCandlesStorageRequest ¶
type NewCandlesStorageRequest struct { // DBPath - Путь к файлу sqlite DBPath string // Update - Нужно ли обновлять историю Update bool // RequiredInstruments - Требуемые инструменты RequiredInstruments map[string]StorageInstrument Logger investgo.Logger MarketDataService *investgo.MarketDataServiceClient // From, To - Интервал, From, To time.Time }
NewCandlesStorageRequest - Параметры для создания хранилища свечей
type Positions ¶
type Positions struct {
// contains filtered or unexported fields
}
Positions - Данные о позициях счета
func NewPositions ¶
func NewPositions() *Positions
func (*Positions) Update ¶
func (p *Positions) Update(data *pb.PositionData)
Update - Обновление позиций
type State ¶
type State struct {
// contains filtered or unexported fields
}
State - Текущее состояние торгового инструмента