实际交易数量与exchange.Buy设置的数量不符。

Autora:Notas, Criado: 2018-03-05 18:18:47, Atualizado: 2018-03-05 18:19:29

下面是我用的测试大吗,非常简单,每个小时以市价购入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);
    }
}

O log de uma dessas transações

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

E vocês sabem qual é a razão?


Mais.

- O quê?Se eu tiver 100 yuan no bolso e quiser comprar rapidamente, você me deixa calcular o quanto posso comprar, porque eu não tenho tempo.

NotasÉ ótimo, você está certo! Mas eu acho que é fácil de confundir, se você definir o preço, o segundo parâmetro é o número de ETH, se o preço do mercado, o segundo parâmetro é o dólar, a API é mal projetada.

Sonhos pequenosAqui, com o preço de mercado, o 10 não significa 10 ETH, mas 10 dólares, você coloca este var id = exchange.Buy ((-1, 10); o número 10 é de 900.

Sonhos pequenosA interface da API do OKEX foi projetada para que, se o preço do mercado for comprado, não receba o volume do pedido, basta que o preço do pedido seja o mesmo (ou seja, o valor representado pelo valor é comprado com base nesse valor, não se sabe quanto é o volume de moedas operadas), e venda apenas pedindo o ingresso do volume do pedido (o número de moedas operadas), não pedindo o preço.