1、暂存
This commit is contained in:
@ -14,7 +14,6 @@ type Extend struct {
|
||||
Redis RedisConfig `mapstructure:"redis"`
|
||||
ServiceId int64 `mapstructure:"serviceId"` //雪花算法id(服务id,比如1,2,3等,当多机部署需定义唯一id)
|
||||
EmailConfig EmailConfig `mapstructure:"emailConfig"`
|
||||
BinanceSet BinanceConfig `mapstructure:"binanceSet"` //binance配置
|
||||
Domain string //网站域名
|
||||
UDunConfig UDunConfig `mapstructure:"UDunConfig"`
|
||||
ProxyUrl string //代理地址
|
||||
@ -58,12 +57,6 @@ type EmailSend struct {
|
||||
To string `json:"to"` // 收件地址
|
||||
}
|
||||
|
||||
// BinanceConfig 币安路由配置
|
||||
type BinanceConfig struct {
|
||||
SpotRestURL string
|
||||
FutRestURL string
|
||||
}
|
||||
|
||||
type GoToneSmsConfig struct {
|
||||
SenderId string `json:"sender_id"`
|
||||
APIEndpoint string `json:"api_endpoint"`
|
||||
@ -82,3 +75,14 @@ type UDunConfig struct {
|
||||
UDunKey string `json:"UDunKey"`
|
||||
CurrServerIp string `json:"CurrServerIp"`
|
||||
}
|
||||
|
||||
/**
|
||||
* Binance配置结构体
|
||||
*/
|
||||
type BinanceConfig struct {
|
||||
ApiKey string `json:"apiKey" mapstructure:"apiKey"` // API密钥
|
||||
ApiSecret string `json:"apiSecret" mapstructure:"apiSecret"` // API密钥
|
||||
ProxyType string `json:"proxyType" mapstructure:"proxyType"` // 代理类型
|
||||
ProxyAddress string `json:"proxyAddress" mapstructure:"proxyAddress"` // 代理地址
|
||||
TestNet bool `json:"testNet" mapstructure:"testNet"` // 是否使用测试网
|
||||
}
|
||||
|
||||
@ -5,7 +5,6 @@ import (
|
||||
"go-admin/models"
|
||||
"go-admin/pkg/httputils"
|
||||
"go-admin/services/binanceservice"
|
||||
"go-admin/services/futureservice"
|
||||
|
||||
log "github.com/go-admin-team/go-admin-core/logger"
|
||||
"github.com/robfig/cron/v3"
|
||||
@ -33,9 +32,6 @@ func FuturesInit() error {
|
||||
}
|
||||
log.Info("初始化24h行情-结束")
|
||||
|
||||
log.Info("订阅合约-开始")
|
||||
go futureservice.StartBinanceProWs("normal")
|
||||
|
||||
//定时任务
|
||||
RunJobs()
|
||||
return nil
|
||||
|
||||
144
config/serverinit/bitget_init.go
Normal file
144
config/serverinit/bitget_init.go
Normal file
@ -0,0 +1,144 @@
|
||||
package serverinit
|
||||
|
||||
import (
|
||||
"go-admin/config"
|
||||
"go-admin/models"
|
||||
"go-admin/pkg/httputils"
|
||||
"go-admin/pkg/utility"
|
||||
"go-admin/services/bitgetservice"
|
||||
|
||||
log "github.com/go-admin-team/go-admin-core/logger"
|
||||
"github.com/robfig/cron/v3"
|
||||
)
|
||||
|
||||
// BitgetInit 初始化Bitget交易所
|
||||
func BitgetMarketInit() error {
|
||||
// 设置代理(如果配置了的话)
|
||||
httputils.InitProxy(config.ExtConfig.ProxyUrl)
|
||||
|
||||
log.Info("初始化Bitget交易对-开始")
|
||||
spotData := make(map[string]models.TradeSet, 0)
|
||||
futData := make(map[string]models.TradeSet, 0)
|
||||
err := bitgetservice.GetAndReloadSymbols(&spotData, 1)
|
||||
|
||||
if err != nil {
|
||||
log.Error("初始化Bitget交易对失败,可能是网络问题,将跳过初始化:", err)
|
||||
// 不返回错误,允许程序继续运行
|
||||
return nil
|
||||
}
|
||||
|
||||
err = bitgetservice.GetAndReloadSymbols(&futData, 2)
|
||||
if err != nil {
|
||||
log.Error("初始化Bitget合约交易对失败,可能是网络问题,将跳过初始化:", err)
|
||||
// 不返回错误,允许程序继续运行
|
||||
return nil
|
||||
}
|
||||
|
||||
log.Info("初始化Bitget交易对-结束")
|
||||
|
||||
log.Info("初始化Bitget 24h行情-开始")
|
||||
_, err = bitgetservice.InitSymbolsTicker24h(&spotData, 1)
|
||||
|
||||
if err != nil {
|
||||
log.Error("初始化Bitget 24h行情失败,可能是网络问题,将跳过初始化:", err)
|
||||
// 不返回错误,允许程序继续运行
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err = bitgetservice.InitSymbolsTicker24h(&futData, 2)
|
||||
if err != nil {
|
||||
log.Error("初始化Bitget合约24h行情失败,可能是网络问题,将跳过初始化:", err)
|
||||
// 不返回错误,允许程序继续运行
|
||||
return nil
|
||||
}
|
||||
log.Info("初始化Bitget 24h行情-结束")
|
||||
|
||||
//现货行情订阅
|
||||
spotSymbols := []string{}
|
||||
for k, _ := range spotData {
|
||||
spotSymbols = append(spotSymbols, k)
|
||||
}
|
||||
spotMaps := utility.SplitSlice(spotSymbols, 50)
|
||||
bitgetSpot := bitgetservice.BitgetMarketSpotClient{}
|
||||
|
||||
for _, v := range spotMaps {
|
||||
if err := bitgetSpot.Subscribe(v); err != nil {
|
||||
log.Error("订阅Bitget现货行情失败", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
//合约行情订阅
|
||||
futSymbols := []string{}
|
||||
for k, _ := range futData {
|
||||
futSymbols = append(futSymbols, k)
|
||||
}
|
||||
futMaps := utility.SplitSlice(futSymbols, 50)
|
||||
bitgetFut := bitgetservice.BitgetMarketFutureClient{}
|
||||
|
||||
for _, v := range futMaps {
|
||||
if err := bitgetFut.Subscribe(v); err != nil {
|
||||
log.Error("订阅Bitget合约行情失败", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 启动定时任务
|
||||
runBitgetJobs()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// runBitgetJobs 启动Bitget相关的定时任务
|
||||
func runBitgetJobs() {
|
||||
cronJob := cron.New()
|
||||
|
||||
// 每小时更新一次交易对信息
|
||||
_, err := cronJob.AddFunc("@every 1h", func() {
|
||||
log.Info("执行Bitget交易对更新任务")
|
||||
data := make(map[string]models.TradeSet, 0)
|
||||
if err := bitgetservice.GetAndReloadSymbols(&data, 1); err != nil {
|
||||
log.Error("更新Bitget交易对失败", err)
|
||||
}
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Error("添加Bitget交易对更新任务失败", err)
|
||||
} else {
|
||||
log.Info("添加Bitget交易对更新任务成功")
|
||||
}
|
||||
|
||||
// 启动定时任务
|
||||
cronJob.Start()
|
||||
log.Info("Bitget定时任务启动完成")
|
||||
}
|
||||
|
||||
// CreateBitgetPrivateWebSocket 创建Bitget私有WebSocket连接的示例函数
|
||||
func CreateBitgetPrivateWebSocket(apiKey, apiSecret, passphrase, proxyType, proxyAddress string) {
|
||||
log.Info("创建Bitget私有WebSocket连接 key:", apiKey)
|
||||
|
||||
// 现货WebSocket (wsType=0)
|
||||
spotManager := bitgetservice.GetOrCreateBitgetWebSocketManager(
|
||||
0, apiKey, apiSecret, passphrase, proxyType, proxyAddress)
|
||||
spotManager.Start()
|
||||
|
||||
// 合约WebSocket (wsType=1)
|
||||
futuresManager := bitgetservice.GetOrCreateBitgetWebSocketManager(
|
||||
1, apiKey, apiSecret, passphrase, proxyType, proxyAddress)
|
||||
futuresManager.Start()
|
||||
|
||||
log.Info("Bitget私有WebSocket连接已创建")
|
||||
}
|
||||
|
||||
// StopBitgetPrivateWebSocket 停止Bitget私有WebSocket连接的示例函数
|
||||
func StopBitgetPrivateWebSocket(apiKey string) {
|
||||
log.Info("停止Bitget私有WebSocket连接 key:", apiKey)
|
||||
|
||||
// 停止现货WebSocket
|
||||
bitgetservice.StopBitgetWebSocketManager(0, apiKey)
|
||||
|
||||
// 停止合约WebSocket
|
||||
bitgetservice.StopBitgetWebSocketManager(1, apiKey)
|
||||
|
||||
log.Info("Bitget私有WebSocket连接已停止")
|
||||
}
|
||||
@ -8,7 +8,6 @@ import (
|
||||
"go-admin/common/helper"
|
||||
"go-admin/config"
|
||||
"go-admin/pkg/httputils"
|
||||
"go-admin/services/binanceservice"
|
||||
"go-admin/services/cacheservice"
|
||||
"go-admin/services/futureservice"
|
||||
"go-admin/services/scriptservice"
|
||||
@ -46,54 +45,34 @@ func BusinessInit(db *gorm.DB) {
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
||||
//币安 现货交易对
|
||||
SpotCurrencyInit()
|
||||
//币安 合约交易对
|
||||
FuturesInit()
|
||||
|
||||
//第一次初始化交易对价格
|
||||
spotApi := binanceservice.SpotRestApi{}
|
||||
futApi := binanceservice.FutRestApi{}
|
||||
spotApi.Ticker()
|
||||
futApi.Ticker()
|
||||
|
||||
//现货 订阅
|
||||
SpotSubscribeInit("normal")
|
||||
//合约订阅
|
||||
futureservice.StartBinanceProWs("normal")
|
||||
//定时任务
|
||||
RunSpotJobs(db)
|
||||
}
|
||||
|
||||
// 行情监听初始化
|
||||
func BinanceMarketInit() error {
|
||||
//币安 现货交易对(仅数据初始化,不启动WebSocket)
|
||||
SpotCurrencyInit()
|
||||
//币安 合约交易对(仅数据初始化,不启动WebSocket)
|
||||
FuturesInit()
|
||||
|
||||
//现货 订阅
|
||||
// SpotSubscribeInit("normal")
|
||||
//合约订阅
|
||||
futureservice.StartBinanceProWs("normal")
|
||||
// log.Info("订阅合约-开始")
|
||||
// go futureservice.StartBinanceProWs("normal")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 开启现货ws监听
|
||||
func SpotWsInit() {
|
||||
//启动websocket服务
|
||||
//go func() {
|
||||
// err := wsservice.StartServer(":3333")
|
||||
// if err != nil {
|
||||
// log.Info("wsservice.StartServer", zap.Error(err))
|
||||
//
|
||||
// _, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
// cancel()
|
||||
// }
|
||||
//}()
|
||||
}
|
||||
|
||||
// 定义任务
|
||||
func RunSpotJobs(db *gorm.DB) {
|
||||
cronJob := cron.New()
|
||||
//添加任务 同步交易对行情
|
||||
// spotApi := spotservice.SpotRestApi{}
|
||||
// futApi := futureservice.FutRestApi{}
|
||||
// _, err := cronJob.AddFunc("@every 10s", func() {
|
||||
// //BuySellOrderNew(db)
|
||||
// spotApi.Ticker()
|
||||
// futApi.Ticker()
|
||||
// })
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
|
||||
//定时执行脚本任务
|
||||
_, err := cronJob.AddFunc("@every 3s", func() {
|
||||
order := scriptservice.PreOrder{}
|
||||
|
||||
Reference in New Issue
Block a user