rest-клиент на Go для работы с API Финама
tradeapi.finam
go get github.com/Ruvad39/go-finam-restctx := context.Background()
token, _ := "FINAM_TOKEN"
client, err := finam.NewClient(ctx, token)
if err != nil {
slog.Error("NewClient", "err", err.Error())
return
}
// Получение информации о токене сессии
res, err := client.GetTokenDetails(ctx)
if err != nil {
slog.Error("main", "AuthService.TokenDetails", err.Error())
}
slog.Info("main", "res", res)
slog.Info("main", "res.AccountIds", res.AccountIds)accountId := "номер счета"
res, err := client.NewAccountRequest(accountId).Do(ctx)
if err != nil {
slog.Error("AccountsService.GetAccount", "GetAccount", err.Error())
return
}
slog.Info("AccountsService.GetAccount",
"AccountId", res.AccountId,
"Type", res.Type,
"Status", res.Status,
"Equity", fmt.Sprintf("%.2f", res.Equity.Float64()),
"UnrealizedProfit", fmt.Sprintf("%.2f", res.UnrealizedProfit.Float64()),
"Cash", res.Cash[0], // будет ошибка, если нет денег
)
// список позиций
slog.Info("getPositions", "len(Positions)", len(res.Positions))
for row, pos := range res.Positions {
slog.Info("AccountsService.GetAccount.Positions",
"row", row,
"Symbol", pos.Symbol,
"Quantity", pos.Quantity.Int(),
"AveragePrice", pos.AveragePrice.Float64(),
"CurrentPrice", pos.CurrentPrice.Float64(),
)
}symbol := "SBER@MISX" //"ROSN@MISX" //"SIM5@RTSX"
quote, err := client.NewQuoteRequest(symbol).Do(ctx)
if err != nil {
slog.Error("GetQuote", "err", err.Error())
return
}
slog.Info("GetQuote", "q", quote)
slog.Info("GetQuote", "symbol", quote.Symbol,
"Timestamp", quote.Quote.Timestamp.In(finam.TzMoscow),
"ask", quote.Quote.Ask.Float64(),
"bid", quote.Quote.Bid.Float64(),
"last", quote.Quote.Last.Float64(),
"change", quote.Quote.Change.Float64(),
)Остальные примеры тут
- AuthService.Auth (GetJWT())
Получение JWT токена из API токена - AuthService.TokenDetails (GetTokenDetails)
Получение информации о токене сессии
- AccountsService.GetAccount (AccountRequest)
Получение информации по конкретному аккаунту - AccountsService.Trades (AccountTradesRequest)
Получение истории по сделкам аккаунта
- AssetsService.Clock (GetTimeGetTime)
Получить текущее время сервера - AssetsService.Assets (AssetsRequest)
Получение списка доступных инструментов, их описание - AssetsService.GetAsset (AssetInfoRequest)
Получение параметров по инструменту - AssetsService.GetAssetParams (AssetParamsRequest)
Получение торговых параметров по инструменту
- MarketDataService.Bars (BarsRequest)
Получение исторических данных по инструменту (агрегированные свечи) - MarketDataService.LastQuote (QuoteRequest)
Получение последней котировки по инструменту
- OrdersService.PlaceOrder (PlaceOrderRequest)
Выставление биржевой заявки - OrdersService.CancelOrder (CancelOrderRequest)
Отмена биржевой заявки - OrdersService.GetOrders (GetOrdersRequest)
Получение списка заявок для аккаунта
- AssetsService.Schedule
- MarketDataService.OrderBook
- OrdersService.GetOrder