下面是我用的测试大吗,非常简单,每个小时以市价购入10个ETH,初试价格是10000,但是在模拟回测的时候发现每次都显示交易成功,但是交易的量都不是10.
function onTick() {
var id = exchange.Buy(-1, 10);
Log("Order Id:", id);
Log(exchange.GetOrder(id));
Log(exchange.GetTrades());
Log(exchange.GetAccount());
}
function main() {
Log(exchange.GetAccount());
while (true) {
onTick();
Sleep(3600 * 1000);
}
}
这次其中一次交易的Log
2018-03-05 06:00:25 信息 {"Balance":9699.61809,"Stocks":0.33250049999999987,"FrozenBalance":0,"FrozenStocks":0}
2018-03-05 06:00:24 信息 [{"Id":31,"Time":1520200824800,"Price":900,"Amount":1,"Type":1}]
2018-03-05 06:00:24 信息 {"Id":31,"Price":-1,"Amount":10,"DealAmount":10,"Type":0,"Status":1,"AvgPrice":900.01}
2018-03-05 06:00:24 信息 Order Id: 31
2018-03-05 06:00:24 OKCoin_EN 买入 市价 10
大家知道是什么原因吗?
dyhhu 如果我兜里有100元钱,要赶紧买币,你让我在临时算算能买多少币,我还真没时间。
mlnotes 厉害,你说对了!不过我觉得这样很容易让人混淆,如果设置了价格,第二个参数就是ETH的数量,如果市价,第二个参数就是美金,这个API设计得不好。
发明者量化-小小梦 这里用 市价单 传入的 10 ,指的不是 10个 ETH 币, 而是 10美元, 您把这个 var id = exchange.Buy(-1, 10); 数量 10 改成 900 试下 ,看买入后 Stocks 会不会多 将近1个 ETH 。
发明者量化-小小梦 这样设计 也是为了 对接交易所的 API 设计, 比如 OKEX 的市价单, OKEX 的API 接口 设计的就是 如果是市价买入, 不接收 下单量,只要下单价格(即 计价币 代表的 金额,根据这个金额买入,不确定操作币量多少), 卖出 只要求传入 下单量(操作币个数) ,不要求 价格。 所以 BotVS 的市价单 模式 要和交易所统一(大部分交易所市价单都是这个模式)。