遇到订单参数错误怎么调试?

Author: bamsmen, Created: 2020-04-23 11:09:20, Updated: 2020-04-28 17:03:34

我在开发数字货币合约策略的回测时,发现只有第一次的下单成交了,之后的无论buy,sell,closebuy,closesell都是失败

错误信息只有:“订单参数错误”

没有其他信息,自己仔细检查了一番,没发现有什么问题,求助

该怎么调试啊啊啊

【更新】 测试后发现时下单价格太小了,这个问题已解决,希望平台能给出更详细报错信息,现在不管文档还是调试都有不足的地方

【更新】 1.回测时不能设置Balance余额,只能设置stock余币,这里是不是应该可以设置余额才对呀?

2.反复测试后发现,假如第一次开单100张合约后亏损,之后再开单100张合约就会报错账户资金不足,我检查了一下,100张合约只占了账户总资金的50%左右,亏损-11%,一开始有3个币,亏损后还有2.87个,为什么会造成资金不足呢?

【n天后再次更新】

1.我在回测时使用bitmex交易所,余币设为3,然后用下单时用exchange.Sell(10000, 100) 测试了无数次,都是用户资金不足

后来终于发现把下单数量改为exchange.Sell(10000, 2),通过! 但是显示资金利用量为0,也就是约等于0

困惑的地方在这里: 文档是这样写的:exchange.Buy(10000, 2) 代表下单量是2张合约,bitmex一张合约是1美元。那回测时这里的余币到底代表合约张数?还是btc数量?应该是btc数量才对吧?

这里是否有问题?

2.bitmex合约回测,假如余币设为3时。exchange.Sell(10000, 3)会提示资金不足,但是exchange.Buy(10000, 3)却是可以的,也就是说exchange.Sell必须比剩余资金小一些才能成功下单,这是为什么?

--------------发现提示资金不足和下单价格有关,如果exchange.Sell时价格太低,就会提示资金不足,下单失败,搞不懂。。。


More

小草 下单和bitmex实盘一致,参数是张,一张一美元,我测试了,也不会报资金不足的错误 ``` /*backtest start: 2020-01-29 00:00:00 end: 2020-04-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_BitMEX","currency":"XBT_USD"}] */ function main() { exchange.SetContractType("XBTUSD") exchange.SetDirection('sell') exchange.Sell(10000,40) exchange.Buy(10000,400) } ```

bamsmen 可用保证金是通过exchange.GetAccount() 返回对象的stocks属性获取么,已经用getOrders检查了没有未成交订单

小草 1.期货有的是币作为保证金,USDT的余额无意义 2.看可用保证金,和资金没关系。有资金也不意味着你可以无限开仓。另外还要检查有没有未成交订单

bamsmen 下单资金不足的问题我也找到了,如果exchange.Sell时价格太低, 比如此时市价6000,你以500的价格卖出开空 ,就会提示资金不足,下单失败,当然为什么会和价格有关我还没明白

小草 回测时余币代表BTC,只是下单参数是张,和bitmex网站一致

bamsmen 感谢,如果回测时余币实际代表的是合约张数,那资金利用率那里是否有问题?那个资金利用率可能是按btc数计算的,我每次下单都是满仓,但资金利用率一直小于0.01%

bamsmen 回测时这里的余币到底代表合约张数?还是btc数量?应该是btc数量才对吧?