mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
Getting closed orders implementation, fixed Binance MARKET order creation, expanded SubmitOrder response (#572)
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce * return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo * removed the Binance extra method GetClosedOrder * func description corrected * removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side * GetClosedOrder implementation moved to GetOrderInfo * changed GetOrderInfo params * removed Canceled order.Type used for Kraken * update QueryOrder in gctscript * add missed params to QueryOrder validator (gctscript) * fixed testing issues * GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce * return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo * removed the Binance extra method GetClosedOrder * func description corrected * removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side * GetClosedOrder implementation moved to GetOrderInfo * changed GetOrderInfo params * removed Canceled order.Type used for Kraken * update QueryOrder in gctscript * add missed params to QueryOrder validator (gctscript) * fixed testing issues * pull previous changes * linter issues fix * updated query_order exmple in gctscript, fixed params check * removed orderPair unnecessary conversion Co-authored-by: Vazha Bezhanishvili <vazha.bezhanishvili@elegro.eu>
This commit is contained in:
@@ -2,7 +2,7 @@ fmt := import("fmt")
|
||||
exch := import("exchange")
|
||||
|
||||
load := func() {
|
||||
info := exch.orderquery("BTC Markets", "4491600698")
|
||||
info := exch.orderquery("binance", "4491600698", "BTC-USDT", "spot")
|
||||
fmt.println(info)
|
||||
}
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@ func ExchangeAccountInfo(args ...objects.Object) (objects.Object, error) {
|
||||
|
||||
// ExchangeOrderQuery query order on exchange
|
||||
func ExchangeOrderQuery(args ...objects.Object) (objects.Object, error) {
|
||||
if len(args) != 2 {
|
||||
if len(args) < 2 {
|
||||
return nil, objects.ErrWrongNumArguments
|
||||
}
|
||||
|
||||
@@ -260,7 +260,36 @@ func ExchangeOrderQuery(args ...objects.Object) (objects.Object, error) {
|
||||
if !ok {
|
||||
return nil, fmt.Errorf(ErrParameterConvertFailed, orderID)
|
||||
}
|
||||
orderDetails, err := wrappers.GetWrapper().QueryOrder(exchangeName, orderID)
|
||||
|
||||
var pair currency.Pair
|
||||
assetTypeString := asset.Spot.String()
|
||||
|
||||
switch len(args) {
|
||||
case 4:
|
||||
assetTypeString, ok = objects.ToString(args[3])
|
||||
if !ok {
|
||||
return nil, fmt.Errorf(ErrParameterConvertFailed, assetTypeString)
|
||||
}
|
||||
fallthrough
|
||||
case 3:
|
||||
currencyPairString, isOk := objects.ToString(args[2])
|
||||
if !isOk {
|
||||
return nil, fmt.Errorf(ErrParameterConvertFailed, currencyPairString)
|
||||
}
|
||||
|
||||
var err error
|
||||
pair, err = currency.NewPairFromString(currencyPairString)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf(ErrParameterConvertFailed, currencyPairString)
|
||||
}
|
||||
}
|
||||
|
||||
assetType, err := asset.New(assetTypeString)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
orderDetails, err := wrappers.GetWrapper().QueryOrder(exchangeName, orderID, pair, assetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ type Exchange interface {
|
||||
Orderbook(exch string, pair currency.Pair, item asset.Item) (*orderbook.Base, error)
|
||||
Ticker(exch string, pair currency.Pair, item asset.Item) (*ticker.Price, error)
|
||||
Pairs(exch string, enabledOnly bool, item asset.Item) (*currency.Pairs, error)
|
||||
QueryOrder(exch, orderid string) (*order.Detail, error)
|
||||
QueryOrder(exch, orderid string, pair currency.Pair, assetType asset.Item) (*order.Detail, error)
|
||||
SubmitOrder(submit *order.Submit) (*order.SubmitResponse, error)
|
||||
CancelOrder(exch, orderid string) (bool, error)
|
||||
AccountInformation(exch string) (account.Holdings, error)
|
||||
|
||||
@@ -82,13 +82,13 @@ func (e Exchange) Pairs(exch string, enabledOnly bool, item asset.Item) (*curren
|
||||
}
|
||||
|
||||
// QueryOrder returns details of a valid exchange order
|
||||
func (e Exchange) QueryOrder(exch, orderID string) (*order.Detail, error) {
|
||||
func (e Exchange) QueryOrder(exch, orderID string, pair currency.Pair, assetType asset.Item) (*order.Detail, error) {
|
||||
ex, err := e.GetExchange(exch)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
r, err := ex.GetOrderInfo(orderID)
|
||||
r, err := ex.GetOrderInfo(orderID, pair, assetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -108,7 +108,7 @@ func (e Exchange) SubmitOrder(submit *order.Submit) (*order.SubmitResponse, erro
|
||||
|
||||
// CancelOrder wrapper to cancel order on exchange
|
||||
func (e Exchange) CancelOrder(exch, orderID string) (bool, error) {
|
||||
orderDetails, err := e.QueryOrder(exch, orderID)
|
||||
orderDetails, err := e.QueryOrder(exch, orderID, currency.Pair{}, "")
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ func TestExchange_QueryOrder(t *testing.T) {
|
||||
if !configureExchangeKeys() {
|
||||
t.Skip("no exchange configured test skipped")
|
||||
}
|
||||
_, err := exchangeTest.QueryOrder(exchName, orderID)
|
||||
_, err := exchangeTest.QueryOrder(exchName, orderID, currency.Pair{}, assetType)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ func (w Wrapper) Pairs(exch string, _ bool, _ asset.Item) (*currency.Pairs, erro
|
||||
}
|
||||
|
||||
// QueryOrder validator for test execution/scripts
|
||||
func (w Wrapper) QueryOrder(exch, _ string) (*order.Detail, error) {
|
||||
func (w Wrapper) QueryOrder(exch, _ string, _ currency.Pair, _ asset.Item) (*order.Detail, error) {
|
||||
if exch == exchError.String() {
|
||||
return nil, errTestFailed
|
||||
}
|
||||
|
||||
@@ -137,12 +137,12 @@ func TestWrapper_Pairs(t *testing.T) {
|
||||
func TestWrapper_QueryOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
_, err := testWrapper.QueryOrder(exchName, orderID)
|
||||
_, err := testWrapper.QueryOrder(exchName, orderID, currency.Pair{}, assetType)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = testWrapper.QueryOrder(exchError.String(), "")
|
||||
_, err = testWrapper.QueryOrder(exchError.String(), "", currency.Pair{}, assetType)
|
||||
if err == nil {
|
||||
t.Fatal("expected QueryOrder to return error on invalid name")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user