[update] 新增模拟交易参数

This commit is contained in:
lychiyu 2024-09-12 23:27:22 +08:00
parent 15e2268351
commit eddcaecc92
5 changed files with 25 additions and 11 deletions

View File

@ -43,6 +43,7 @@ type ExchangeSession struct {
Secret string `json:"secret,omitempty" yaml:"secret,omitempty"` Secret string `json:"secret,omitempty" yaml:"secret,omitempty"`
Passphrase string `json:"passphrase,omitempty" yaml:"passphrase,omitempty"` Passphrase string `json:"passphrase,omitempty" yaml:"passphrase,omitempty"`
Proxy string `json:"proxy,omitempty" yaml:"proxy,omitempty"` Proxy string `json:"proxy,omitempty" yaml:"proxy,omitempty"`
Simulated string `json:"simulated,omitempty" yaml:"simulated,omitempty"`
SubAccount string `json:"subAccount,omitempty" yaml:"subAccount,omitempty"` SubAccount string `json:"subAccount,omitempty" yaml:"subAccount,omitempty"`
// Withdrawal is used for enabling withdrawal functions // Withdrawal is used for enabling withdrawal functions
@ -796,7 +797,7 @@ func (session *ExchangeSession) newBasicPrivateExchange(exchangeName types.Excha
var err error var err error
var exMinimal types.ExchangeMinimal var exMinimal types.ExchangeMinimal
if session.Key != "" && session.Secret != "" { if session.Key != "" && session.Secret != "" {
exMinimal, err = exchange2.New(exchangeName, session.Key, session.Secret, session.Passphrase, session.Proxy) exMinimal, err = exchange2.New(exchangeName, session.Key, session.Secret, session.Passphrase, session.Proxy, session.Simulated)
} else { } else {
exMinimal, err = exchange2.NewWithEnvVarPrefix(exchangeName, session.EnvVarPrefix) exMinimal, err = exchange2.NewWithEnvVarPrefix(exchangeName, session.EnvVarPrefix)
} }

View File

@ -15,7 +15,7 @@ import (
) )
func NewPublic(exchangeName types.ExchangeName) (types.Exchange, error) { func NewPublic(exchangeName types.ExchangeName) (types.Exchange, error) {
exMinimal, err := New(exchangeName, "", "", "", "") exMinimal, err := New(exchangeName, "", "", "", "", "0")
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -27,7 +27,7 @@ func NewPublic(exchangeName types.ExchangeName) (types.Exchange, error) {
return nil, fmt.Errorf("exchange %T does not implement types.Exchange", exMinimal) return nil, fmt.Errorf("exchange %T does not implement types.Exchange", exMinimal)
} }
func New(n types.ExchangeName, key, secret, passphrase, proxy string) (types.ExchangeMinimal, error) { func New(n types.ExchangeName, key, secret, passphrase, proxy, simulated string) (types.ExchangeMinimal, error) {
switch n { switch n {
case types.ExchangeBinance: case types.ExchangeBinance:
@ -37,7 +37,7 @@ func New(n types.ExchangeName, key, secret, passphrase, proxy string) (types.Exc
return max.New(key, secret), nil return max.New(key, secret), nil
case types.ExchangeOKEx: case types.ExchangeOKEx:
return okex.New(key, secret, passphrase), nil return okex.New(key, secret, passphrase, simulated), nil
case types.ExchangeKucoin: case types.ExchangeKucoin:
return kucoin.New(key, secret, passphrase), nil return kucoin.New(key, secret, passphrase), nil
@ -71,5 +71,6 @@ func NewWithEnvVarPrefix(n types.ExchangeName, varPrefix string) (types.Exchange
passphrase := os.Getenv(varPrefix + "_API_PASSPHRASE") passphrase := os.Getenv(varPrefix + "_API_PASSPHRASE")
proxy := os.Getenv(varPrefix + "_PROXY") proxy := os.Getenv(varPrefix + "_PROXY")
return New(n, key, secret, passphrase, proxy) simulated := os.Getenv(varPrefix + "_SIMULATED")
return New(n, key, secret, passphrase, proxy, simulated)
} }

View File

@ -65,13 +65,12 @@ var log = logrus.WithFields(logrus.Fields{
var ErrSymbolRequired = errors.New("symbol is a required parameter") var ErrSymbolRequired = errors.New("symbol is a required parameter")
type Exchange struct { type Exchange struct {
key, secret, passphrase string key, secret, passphrase, simulated string
client *okexapi.RestClient
client *okexapi.RestClient timeNowFunc func() time.Time
timeNowFunc func() time.Time
} }
func New(key, secret, passphrase string) *Exchange { func New(key, secret, passphrase, simulated string) *Exchange {
client := okexapi.NewClient() client := okexapi.NewClient()
if len(key) > 0 && len(secret) > 0 { if len(key) > 0 && len(secret) > 0 {
@ -82,6 +81,7 @@ func New(key, secret, passphrase string) *Exchange {
key: key, key: key,
secret: secret, secret: secret,
passphrase: passphrase, passphrase: passphrase,
simulated: simulated,
client: client, client: client,
timeNowFunc: time.Now, timeNowFunc: time.Now,
} }

View File

@ -24,6 +24,18 @@ const PublicWebSocketURL = "wss://wsaws.okx.com:8443/ws/v5/public"
const PrivateWebSocketURL = "wss://wsaws.okx.com:8443/ws/v5/private" const PrivateWebSocketURL = "wss://wsaws.okx.com:8443/ws/v5/private"
const PublicBusinessWebSocketURL = "wss://wsaws.okx.com:8443/ws/v5/business" const PublicBusinessWebSocketURL = "wss://wsaws.okx.com:8443/ws/v5/business"
/*
模拟交易
RESThttps://www.okx.com
WebSocket公共频道wss://wspap.okx.com:8443/ws/v5/public
WebSocket私有频道wss://wspap.okx.com:8443/ws/v5/private
WebSocket业务频道wss://wspap.okx.com:8443/ws/v5/business
*/
const SimulatedRestBaseURL = "https://www.okx.com/"
const SimulatedPublicWebSocketURL = "wss://wspap.okx.com:8443/ws/v5/public"
const SimulatedPrivateWebSocketURL = "wss://wspap.okx.com:8443/ws/v5/private"
const SimulatedPublicBusinessWebSocketURL = "wss://wspap.okx.com:8443/ws/v5/business"
type SideType string type SideType string
const ( const (

View File

@ -16,7 +16,7 @@ func Test_QueryKlines(t *testing.T) {
t.Skip("Please configure all credentials about OKEX") t.Skip("Please configure all credentials about OKEX")
} }
e := New(key, secret, passphrase) e := New(key, secret, passphrase, "0")
queryOrder := types.OrderQuery{ queryOrder := types.OrderQuery{
Symbol: "BTC-USDT", Symbol: "BTC-USDT",