initial
This commit is contained in:
99
account/ac.go
Normal file
99
account/ac.go
Normal file
@@ -0,0 +1,99 @@
|
||||
package account
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"git.apinb.com/quant/strategy/internal/core/trade"
|
||||
"git.apinb.com/quant/strategy/internal/models"
|
||||
)
|
||||
|
||||
var (
|
||||
BaseAssets string
|
||||
PlanKeyName string
|
||||
IsDebug bool = false
|
||||
UpdHistory bool = false
|
||||
)
|
||||
|
||||
// 根据基本币,监控帐号可用资金变动,仓位,以及最近7天的交易情况
|
||||
func NewAccountByBinance(base string, p *trade.Spec, debug, updHistory bool) {
|
||||
BaseAssets = base
|
||||
PlanKeyName = p.PlanKeyName
|
||||
IsDebug = debug
|
||||
UpdHistory = updHistory
|
||||
|
||||
trade.NewAccounts()
|
||||
|
||||
if p.Api.Exchange == "BINANCE" {
|
||||
//trade.InitExchange_Binance(p.BinanceFuturesClient, p.AllowSymbols, p.StrategyConf.Leverage)
|
||||
InitAccount_Binance(p)
|
||||
}
|
||||
|
||||
go WatchPositions(p)
|
||||
if UpdHistory {
|
||||
// go WatchHistory(p)
|
||||
}
|
||||
}
|
||||
|
||||
func InitAccount_Binance(p *trade.Spec) {
|
||||
var err error
|
||||
ac, err := p.BinanceClient.GetFuturesAccountBalance()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
} else {
|
||||
trade.AccountsAssets.Set(BaseAssets, ac[BaseAssets])
|
||||
}
|
||||
|
||||
log.Println("WatchAccount", PlanKeyName, BaseAssets, "Account Equity:", ac[BaseAssets].AccountEquity, "Account Available:", ac[BaseAssets].Available)
|
||||
|
||||
orders, err := trade.RefreshPositions(p)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
log.Println("Positions Number", len(orders))
|
||||
}
|
||||
|
||||
func WatchAccount_Binance(p *trade.Spec) {
|
||||
for {
|
||||
var err error
|
||||
ac, err := p.BinanceClient.GetFuturesAccountBalance()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
} else {
|
||||
trade.AccountsAssets.Set(BaseAssets, ac[BaseAssets])
|
||||
log.Println("WatchAccount", PlanKeyName, BaseAssets, "Account Equity:", ac[BaseAssets].AccountEquity, "Account Available:", ac[BaseAssets].Available)
|
||||
}
|
||||
|
||||
time.Sleep(1 * time.Hour)
|
||||
}
|
||||
}
|
||||
|
||||
func WatchPositions(p *trade.Spec) {
|
||||
for {
|
||||
orders, err := trade.RefreshPositions(p)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
if IsDebug {
|
||||
jsonBytes, _ := json.Marshal(orders)
|
||||
log.Println("WatchPositions", string(jsonBytes))
|
||||
}
|
||||
|
||||
time.Sleep(2 * time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
func WatchHistory(p *trade.Spec) {
|
||||
for {
|
||||
trade, pl := trade.RefreshHistoryTotal(p)
|
||||
models.UpdateTotalTrans(PlanKeyName, trade, pl)
|
||||
if IsDebug {
|
||||
log.Println("WatchHistory", "Trade Number", trade, "Trade RealizedPnl", pl)
|
||||
}
|
||||
time.Sleep(10 * time.Minute)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user