quik

package module
v0.4.6 Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2025 License: Apache-2.0 Imports: 1 Imported by: 0

README

QuikGo

Доступ к функционалу Quik из связки Lua&Golang

CI Status Go Report Card GoDoc License GitHub release Known Vulnerabilities

Install

go get -u github.com/DBoyara/QuikGo@v0.4.1

Examples

Пример подключения к серверу LUA и команды Ping
func main() {
	logger, _ := zap.NewDevelopment()
	client, err := quik.NewQuikClient("127.0.0.1", 54320, true) // development = true — режим разработки, false — продакшен
	if err != nil {
		logger.Error("Failed to create Quik client", zap.Error(err))
		return
	}
	defer client.Close()

	context := context.Background()

	response, err := client.Ping(context)
	if err != nil {
		logger.Error("Failed to ping Quik server", zap.Error(err))
		return
	}

	logger.Info("Ping response", zap.Any("response", response))
}
Пример создания DataSource и получения свечей
func main() {
	dataDataSource := quik.CreateDataSourceRequest{
		quik.DataSourceRequest: quik.DataSourceRequest{
			Ticker:   "SBER",
			Interval: 1,
		}
		Class: "TQBR",
	}
	err := client.CreateDataSource(dataDataSource, context)
	if err != nil {
		logger.Error("Failed to create data source", zap.Error(err))
		return
	}

	dataCandles := quik.GetCandlesRequest{
		Ticker:   "SBER",
		Interval: 1,
		Count:    10,
		Class:    "TQBR",
	}
	candles, err := client.GetCandles(dataCandles, context)
	if err != nil {
		logger.Error("Failed to get candles", zap.Error(err))
		return
	}

	for _, candle := range candles {
		fmt.Printf("Candle: %s O: %.2f H: %.2f L: %.2f C: %.2f V: %d\n",
			candle.Timestamp,
			candle.Open,
			candle.High,
			candle.Low,
			candle.Close,
			candle.Volume,
		)
	}
}
Пример получения аккаунтов
accounts, err := client.GetTradeAccounts(context)
if err != nil {
    logger.Error("Failed to get trade accounts", zap.Error(err))
    return
}

fmt.Println(accounts)
Пример денежных лимитов
limits, err := client.GetMoneyLimits(context)
if err != nil {
    logger.Error("Failed to get limits", zap.Error(err))
    return
}

fmt.Println(limits)
Account, ClientCode, FirmId - можно разово получить из GetTradeAccounts и GetMoneyLimits
Пример заявок на покупку
transID := quik.NewCounter(1)
dataOrder := quik.CreateOrderRequest{
    ClassCode: "TQBR",
    SecCode:   "SBER",
    Account:   "your-account-code",
    Trans_id:  transID.Next(),
    Operation: "B",
    Price:     "100.00",
    Quantity:  "1",
    Action:    "NEW_ORDER",
    Type:      "L",
}
err = client.SendTransaction(dataOrder, context)
if err != nil {
    logger.Error("Failed to create order", zap.Error(err))
    return
}
Пример портфолио
dataPortfolio := quik.GetPortfolioRequest{
    ClientCode: "your-client-code",
    FirmId:     "your-firm-id",
}
portfolio, err := client.GetPortfolioInfo(dataPortfolio, context)
if err != nil {
    logger.Error("Failed to get portfolio", zap.Error(err))
    return
}

fmt.Println(portfolio)
Пример обработки Callback
func eventHandler(event quik.Event) {
	switch event.Cmd {
	case "OnConnected":
		fmt.Println("✅ Подключение установлено:", event.Data)
	case "OnDisconnected":
		fmt.Println("❌ Подключение разорвано:", event.Data)
	case "OnTrade":
		fmt.Println("📊 Новая сделка:", event.Data)
	default:
		fmt.Println("⚠️ Неизвестное событие:", event.Cmd, "| Данные:", event.Data)
	}
}

func main() {
	logger, _ := quik.NewLogger(true)
	quik.RunServer(54321, true, eventHandler, logger)
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var NewCounter = quik.NewCounter
View Source
var NewLogger = quik.NewLogger
View Source
var NewQuikClient = quik.NewQuikClient

Реэкспортируем функции

View Source
var NewQuikServer = quik.NewQuikServer
View Source
var RunServer = quik.RunServer

Functions

This section is empty.

Types

type Account

type Account = quik.Account

type Candle

type Candle = quik.Candle

type Counter added in v0.4.1

type Counter = quik.Counter

type CreateDataSourceRequest

type CreateDataSourceRequest = quik.CreateDataSourceRequest

type CreateOrderRequest

type CreateOrderRequest = quik.CreateOrderRequest

type DataSourceRequest added in v0.4.3

type DataSourceRequest = quik.DataSourceRequest

type Event added in v0.4.0

type Event = quik.Event

type GetCandlesRequest

type GetCandlesRequest = quik.GetCandlesRequest

type GetOrderByIdRequest

type GetOrderByIdRequest = quik.GetOrderByIdRequest

type GetOrderByNumberRequest

type GetOrderByNumberRequest = quik.GetOrderByNumberRequest

type GetPortfolioRequest

type GetPortfolioRequest = quik.GetPortfolioRequest

type GetStopOrderByTickerRequest

type GetStopOrderByTickerRequest = quik.GetStopOrderByTickerRequest

type MoneyLimits

type MoneyLimits = quik.MoneyLimits

type QuikCandle

type QuikCandle = quik.QuikCandle

type QuikClient

type QuikClient = quik.QuikClient

Реэкспортируем типы

type QuikServer added in v0.4.0

type QuikServer = quik.QuikServer

type QuikTime

type QuikTime = quik.QuikTime

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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