157 lines
3.1 KiB
Go
157 lines
3.1 KiB
Go
package okex
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.qtrade.icu/coin-quant/exchange"
|
|
"git.qtrade.icu/coin-quant/trademodel"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
var (
|
|
testClt *OkxTrader
|
|
)
|
|
|
|
func getTestClt() *OkxTrader {
|
|
cfgPath := "../test/test.yaml"
|
|
cfg := viper.New()
|
|
cfg.SetConfigFile(cfgPath)
|
|
err := cfg.ReadInConfig()
|
|
if err != nil {
|
|
log.Fatal("ReadInConfig failed:" + err.Error())
|
|
}
|
|
testClt, err = NewOkxTrader(exchange.WrapViper(cfg), "okx")
|
|
if err != nil {
|
|
log.Fatal("create client failed:" + err.Error())
|
|
}
|
|
testClt.Start()
|
|
return testClt
|
|
}
|
|
|
|
func TestMain(m *testing.M) {
|
|
testClt = getTestClt()
|
|
m.Run()
|
|
}
|
|
|
|
func TestSymbols(t *testing.T) {
|
|
symbols, err := testClt.Symbols()
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
for _, v := range symbols {
|
|
t.Log(v.Symbol, v.Precision, v.PriceStep, v.AmountPrecision, v.AmountStep)
|
|
}
|
|
}
|
|
|
|
func TestKline(t *testing.T) {
|
|
// start, _ := time.Parse("2006-01-02 15:04:05", "2023-01-01 00:00:00")
|
|
start := time.Now().Add(time.Minute * -5)
|
|
end := start.Add(time.Hour + time.Second)
|
|
datas, err := testClt.GetKline("BTC-USDT-SWAP", "1m", start, end)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, v := range datas {
|
|
t.Log(v)
|
|
}
|
|
if len(datas) != 60 {
|
|
t.Fatal("Kline resp not match:", len(datas))
|
|
}
|
|
}
|
|
|
|
func TestOrder(t *testing.T) {
|
|
order, err := testClt.ProcessOrder(trademodel.TradeAction{
|
|
Symbol: "APT-USDT-SWAP",
|
|
Action: trademodel.OpenShort,
|
|
Amount: 1,
|
|
Price: 20,
|
|
Time: time.Now(),
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
t.Log(*order)
|
|
time.Sleep(time.Second)
|
|
_, err = testClt.CancelAllOrders()
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
}
|
|
|
|
func TestStopOrder(t *testing.T) {
|
|
order, err := testClt.ProcessOrder(trademodel.TradeAction{
|
|
Symbol: "APT-USDT-SWAP",
|
|
Action: trademodel.StopShort,
|
|
Amount: 1,
|
|
Price: 17,
|
|
Time: time.Now(),
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
t.Log(*order)
|
|
time.Sleep(time.Second)
|
|
_, err = testClt.CancelAllOrders()
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
}
|
|
|
|
func TestCancelAllOrder(t *testing.T) {
|
|
_, err := testClt.CancelAllOrders()
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
}
|
|
|
|
func TestCancelOrder(t *testing.T) {
|
|
act := trademodel.TradeAction{
|
|
Action: trademodel.OpenLong,
|
|
Amount: 1,
|
|
Price: 2000,
|
|
Time: time.Now(),
|
|
}
|
|
order, err := testClt.ProcessOrder(act)
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
t.Log(*order)
|
|
time.Sleep(time.Second * 5)
|
|
ret, err := testClt.CancelOrder(order)
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
t.Log("ret:", *ret)
|
|
}
|
|
|
|
func TestCancelStopOrder(t *testing.T) {
|
|
act := trademodel.TradeAction{
|
|
Action: trademodel.StopLong,
|
|
Amount: 1,
|
|
Price: 2000,
|
|
Time: time.Now(),
|
|
}
|
|
order, err := testClt.ProcessOrder(act)
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
t.Log(*order)
|
|
time.Sleep(time.Second * 5)
|
|
ret, err := testClt.CancelOrder(order)
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
t.Log("ret:", *ret)
|
|
}
|
|
|
|
func TestDepth(t *testing.T) {
|
|
param := exchange.WatchParam{Type: exchange.WatchTypeDepth, Param: map[string]string{"symbol": "ETH-USDT-SWAP", "name": "depth"}}
|
|
testClt.Watch(param, func(data interface{}) {
|
|
fmt.Println(data)
|
|
})
|
|
time.Sleep(time.Second * 10)
|
|
}
|