简单分析从wex.app获取的订单信息

Author: 韬奋量化, Created: 2020-12-30 16:20:27, Updated: 2020-12-30 16:22:03

一句话概括:在模拟盘网站wex.app查询订单成交均价时,可以使用order.Info.detail[0].price来取代常用的order.AvgPrice。写代码时,可以通过调试工具测试买入卖出,并在wex.app对照历史委托订单信息,来调整策略代码。

声明:写本文的目的仅是记录写代码过程中遇到的问题、学习的过程以及解决办法。感谢发明者平台提供了模拟盘wex.app,让我测试了很多策略。在交易方面,我还有很多不了解的内容,欢迎各位朋友指正。

本文使用发明者网站的调试工具,在模拟盘网站wex.app测试买入卖出的市价订单,并查询返回的订单信息。具体结果如下:

一、测试买入

(一)测试代码 function main(){ var account = exchange.GetAccount(); var preAccount = account;//记录买入前的账户状态 Log(preAccount); var id = exchange.Buy(-1, 50);//花费50个usdt,以市价买入btc Log(id); if(id!=null){ var order = exchange.GetOrder(id);
Log(order); account = exchange.GetAccount();//查询买入后的账户状态 Log(account);
} }

(二)返回信息 买入之前,preAccount账户信息: { “Info”: { (Info这部分信息很多,但不影响本文的分析,因此忽略) }, “Stocks”: 0.8150649, “FrozenStocks”: 0, “Balance”: 5759.396067057396, “FrozenBalance”: 204954.226021164 }

买入后,account账户信息: { “Info”: { (Info这部分信息忽略) }, “Stocks”: 0.81682151, “FrozenStocks”: 0, “Balance”: 5709.396268085276, “FrozenBalance”: 204954.226021164 }

我们对比买入前后的账户数据,可以发现: 1、账户余额(Balance)减少了50个usdt。 2、币数(Stocks)增加了0.00175661个btc。

order订单返回数据如下: { “Info”: { “account”: “exchange”, “side”: “bid”, “tx”: “49.9623272267”, “detail”: [{ “id”: 62138365, “price”: “28442.47”, “time”: 1609311663795, “amount”: “0.00175661”, “fee”: “0.037471745420025”, “fee_price”: “0.0”, “fee_replace”: “0.0” }], “fee_replace”: “0.0”, “time”: 1609311663795, “deal_amount”: “0.00175661”, “deleted”: 1609311663795, “remain”: “0.0”, “fee_symbol”: “EVE”, “id”: 201005081, “market”: “BTC_USDT”, “price”: “50.0”, “status”: “closed”, “amount”: “0.0”, “client”: “api”, “fee”: “0.037471745420025”, “type”: “market” }, “Id”: 201005081, “Amount”: 0, “Price”: 50, “DealAmount”: 0.00175661, “AvgPrice”: 0, “Status”: 1, “Type”: 0, “Offset”: 0, “ContractType”: “” }

根据wex.app返回的order订单信息,我们发现: 1、订单已经成交,status等于1。 2、成交币数是0.00175661,与账户前后的变化值一致。 3、对比wex.app网页版上的历史委托订单信息,发现: 交易总额是Info.tx=49.9623272267个usdt 成交均价是Info.detail[0].price=28442.47 交易总量是Info.detail[0].amount=0.00175661个btc 总手续费是Info.detail[0].fee=0.037471745420025个usdt

成交均价=交易总额/交易总量: 49.9623272267/0.00175661=28442.47 手续费率=总手续费/总交易量 0.037471745420025/49.9623272267=0.00075

有个问题是,如果用委托金额减去交易总额,差值比总手续费要大一点点: 50-49.9623272267=0.0376727733 0.0376727733-0.037471745420025=0.000201028 不知道这个差值去了哪里?可能与订单撮合的计算方法有关。一般情况下可以忽略这个误差。

二、测试卖出

(一)测试代码 function main(){ var account = exchange.GetAccount(); var preAccount = account;//记录卖出前的账户状态 Log(preAccount); var id = exchange.Sell(-1, 0.001);//以市价卖出0.001个btc Log(id); if(id!=null){ var order = exchange.GetOrder(id);
Log(order); account = exchange.GetAccount();//查询卖出后的账户状态 Log(account);
} }

(二)返回信息 买入之前,preAccount账户信息: { “Info”: { (Info这部分信息忽略) }, “Stocks”: 0.81682151, “FrozenStocks”: 0, “Balance”: 5752.887638167275, “FrozenBalance”: 204910.734651082 }

买入后,account账户信息: { “Info”: { (Info这部分信息忽略) }, “Stocks”: 0.81582151, “FrozenStocks”: 0, “Balance”: 5781.260102847275, “FrozenBalance”: 204910.734651082 }

我们对比买入前后的账户数据,可以发现: 1、账户余额(Balance)增加了28.37246468个usdt。 2、币数(Stocks)减少了0.001个btc。

order订单返回数据如下: { “Info”: { “account”: “exchange”, “price”: “0.0”, “client”: “api”, “deleted”: 1609313057270, “fee_symbol”: “EVE”, “status”: “closed”, “time”: 1609313057270, “tx”: “28.39376”, “type”: “market”, “amount”: “0.001”, “detail”: [{ “time”: 1609313057270, “amount”: “0.001”, “fee”: “0.02129532”, “fee_price”: “0.0”, “fee_replace”: “0.0”, “id”: 62140121, “price”: “28393.76” }], “fee_replace”: “0.0”, “id”: 201015506, “remain”: “0.0”, “deal_amount”: “0.001”, “fee”: “0.02129532”, “market”: “BTC_USDT”, “side”: “ask” }, “Id”: 201015506, “Amount”: 0.001, “Price”: 0, “DealAmount”: 0.001, “AvgPrice”: 0, “Status”: 1, “Type”: 1, “Offset”: 0, “ContractType”: “” }

根据wex.app返回的order订单信息,我们发现: 1、订单已经成交,status等于1。 2、成交币数是0.001,与账户前后的变化值一致。 3、对比wex.app网页版上的历史委托订单信息,发现: 交易总额是Info.tx=28.39376个usdt 成交均价是Info.detail[0].price=28393.76 交易总量是Info.detail[0].amount=0.001个btc 总手续费是Info.detail[0].fee=0.021295325个usdt

成交均价=交易总额/交易总量: 28.39376/0.0011=28393.76 手续费率=总手续费/总交易量 0.021295325/28.39376=0.00075

我们可以从另一个角度计算手续费,用账户余额(Balance)的变化值减去交易总额: 28.37246468-28.39376-=-0.02129532 有很小的误差,应该是截取了一定的小数位数导致的,可以忽略。


More