160 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			160 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package jobs
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"fmt"
							 | 
						||
| 
								 | 
							
									"go-admin/app/admin/models"
							 | 
						||
| 
								 | 
							
									"go-admin/common/helper"
							 | 
						||
| 
								 | 
							
									"go-admin/services/binanceservice"
							 | 
						||
| 
								 | 
							
									"testing"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/go-admin-team/go-admin-core/sdk/config"
							 | 
						||
| 
								 | 
							
									"github.com/shopspring/decimal"
							 | 
						||
| 
								 | 
							
									"gorm.io/driver/mysql"
							 | 
						||
| 
								 | 
							
									"gorm.io/gorm"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 测试现货限价转市价订单
							 | 
						||
| 
								 | 
							
								func TestSpotLimitTransferJob(t *testing.T) {
							 | 
						||
| 
								 | 
							
									dsn := "root:123456@tcp(127.0.0.1:3306)/go_exchange_single?charset=utf8mb4&parseTime=True&loc=Local&timeout=1000ms"
							 | 
						||
| 
								 | 
							
									db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									helper.InitDefaultRedis("127.0.0.1:6379", "", 2)
							 | 
						||
| 
								 | 
							
									helper.InitLockRedisConn("127.0.0.1:6379", "", "3")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									job := LimitOrderTimeoutDuration{}
							 | 
						||
| 
								 | 
							
									orders := make([]models.LinePreOrder, 0)
							 | 
						||
| 
								 | 
							
									err := db.Model(&models.LinePreOrder{}).
							 | 
						||
| 
								 | 
							
										Where("order_sn =?", "393609596205268992").
							 | 
						||
| 
								 | 
							
										Preload("Childs").
							 | 
						||
| 
								 | 
							
										Find(&orders).Error
							 | 
						||
| 
								 | 
							
									// job.Exec([]string{})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									config.ApplicationConfig.Mode = "dev"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										fmt.Printf("获取订单失败 %v", err)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for _, order := range orders {
							 | 
						||
| 
								 | 
							
										apiInfo, err := binanceservice.GetApiInfo(49)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											fmt.Printf("获取api信息失败 %v", err)
							 | 
						||
| 
								 | 
							
											return
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										spotApi := binanceservice.SpotRestApi{}
							 | 
						||
| 
								 | 
							
										err = job.ReSpotOrderPlace(db, order, apiInfo, spotApi)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											fmt.Printf("下单失败 %v", err)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									select {}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 测试限价转市价订单
							 | 
						||
| 
								 | 
							
								func TestLimitTransferJob(t *testing.T) {
							 | 
						||
| 
								 | 
							
									dsn := "root:123456@tcp(127.0.0.1:3306)/go_exchange_single?charset=utf8mb4&parseTime=True&loc=Local&timeout=1000ms"
							 | 
						||
| 
								 | 
							
									db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									helper.InitDefaultRedis("127.0.0.1:6379", "", 2)
							 | 
						||
| 
								 | 
							
									helper.InitLockRedisConn("127.0.0.1:6379", "", "3")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									job := LimitOrderTimeoutDuration{}
							 | 
						||
| 
								 | 
							
									orders := make([]models.LinePreOrder, 0)
							 | 
						||
| 
								 | 
							
									err := db.Model(&models.LinePreOrder{}).
							 | 
						||
| 
								 | 
							
										Where("order_sn =?", "393573282378416128").
							 | 
						||
| 
								 | 
							
										Preload("Childs").
							 | 
						||
| 
								 | 
							
										Find(&orders).Error
							 | 
						||
| 
								 | 
							
									// job.Exec([]string{})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									config.ApplicationConfig.Mode = "dev"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										fmt.Printf("获取订单失败 %v", err)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for _, order := range orders {
							 | 
						||
| 
								 | 
							
										apiInfo, err := binanceservice.GetApiInfo(49)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											fmt.Printf("获取api信息失败 %v", err)
							 | 
						||
| 
								 | 
							
											return
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										futApi := binanceservice.FutRestApi{}
							 | 
						||
| 
								 | 
							
										err = job.ReFutOrderPlace(db, order, apiInfo, futApi)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											fmt.Printf("下单失败 %v", err)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									select {}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func TestReduce(t *testing.T) {
							 | 
						||
| 
								 | 
							
									dsn := "root:123456@tcp(127.0.0.1:3306)/go_exchange_single?charset=utf8mb4&parseTime=True&loc=Local&timeout=1000ms"
							 | 
						||
| 
								 | 
							
									gorm.Open(mysql.Open(dsn), &gorm.Config{})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									helper.InitDefaultRedis("127.0.0.1:6379", "", 2)
							 | 
						||
| 
								 | 
							
									helper.InitLockRedisConn("127.0.0.1:6379", "", "3")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									futApi := binanceservice.FutRestApi{}
							 | 
						||
| 
								 | 
							
									// params := binanceservice.FutOrderPlace{
							 | 
						||
| 
								 | 
							
									// 	Symbol: "ADAUSDT",
							 | 
						||
| 
								 | 
							
									// 	ApiId: 49,
							 | 
						||
| 
								 | 
							
									// 	Side: ,
							 | 
						||
| 
								 | 
							
									// }
							 | 
						||
| 
								 | 
							
									apiInfo, err := binanceservice.GetApiInfo(49)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										fmt.Printf("获取api信息失败 %v", err)
							 | 
						||
| 
								 | 
							
										return
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									err = futApi.ClosePositionLoop("ADAUSDT", "393573282378416128", decimal.NewFromInt(21), "SELL", "LONG", apiInfo, "LIMIT", "0", decimal.NewFromFloat(0.76), 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Printf("报错 %v", err)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 测试现货下单
							 | 
						||
| 
								 | 
							
								func TestReduceSpot(t *testing.T) {
							 | 
						||
| 
								 | 
							
									dsn := "root:123456@tcp(127.0.0.1:3306)/go_exchange_single?charset=utf8mb4&parseTime=True&loc=Local&timeout=1000ms"
							 | 
						||
| 
								 | 
							
									db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									helper.InitDefaultRedis("127.0.0.1:6379", "", 2)
							 | 
						||
| 
								 | 
							
									helper.InitLockRedisConn("127.0.0.1:6379", "", "3")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									spotApi := binanceservice.SpotRestApi{}
							 | 
						||
| 
								 | 
							
									// params := binanceservice.FutOrderPlace{
							 | 
						||
| 
								 | 
							
									// 	Symbol: "ADAUSDT",
							 | 
						||
| 
								 | 
							
									// 	ApiId: 49,
							 | 
						||
| 
								 | 
							
									// 	Side: ,
							 | 
						||
| 
								 | 
							
									// }
							 | 
						||
| 
								 | 
							
									apiInfo, err := binanceservice.GetApiInfo(49)
							 | 
						||
| 
								 | 
							
									fmt.Sprintf("%v", apiInfo)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// if err != nil {
							 | 
						||
| 
								 | 
							
									// 	fmt.Printf("获取api信息失败 %v", err)
							 | 
						||
| 
								 | 
							
									// 	return
							 | 
						||
| 
								 | 
							
									// }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									err = spotApi.CancelOpenOrderByOrderSn(apiInfo, "ADAUSDT", "393609596188491776")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Printf("取消报错 %v", err)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									params := binanceservice.OrderPlacementService{
							 | 
						||
| 
								 | 
							
										ApiId:            49,
							 | 
						||
| 
								 | 
							
										Side:             "SELL",
							 | 
						||
| 
								 | 
							
										Type:             "LIMIT",
							 | 
						||
| 
								 | 
							
										TimeInForce:      "GTC",
							 | 
						||
| 
								 | 
							
										Symbol:           "ADAUSDT",
							 | 
						||
| 
								 | 
							
										Price:            decimal.NewFromFloat(0.76),
							 | 
						||
| 
								 | 
							
										Quantity:         decimal.NewFromInt(21),
							 | 
						||
| 
								 | 
							
										NewClientOrderId: "393609596205268992",
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									err = spotApi.OrderPlaceLoop(db, params, 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Printf("报错 %v", err)
							 | 
						||
| 
								 | 
							
								}
							 |