Usando a função de transação Buy ((()/Sell (Sell) é uma das primeiras APIs com as quais você deve estar familiarizado.
[
ORDER_STATE_PENDING :未完成
ORDER_STATE_CLOSED :已关闭
ORDER_STATE_CANCELED :已取消
]
{
Id :交易单唯一标识
Price :下单价格
Amount :下单数量
DealAmount :成交数量
Status :订单状态, 参考常量里的订单状态
Type :订单类型, 参考常量里的订单类型
}
Documentação da API
Buy(Price, Amount) 下买单, Price为买单价格,Amount为数量, 返回一个订单ID
可以跟多余的参数做为附加消息显示到日志, 如exchange.Buy(1000,0.1, "OK", 123)
支持现货(火币/BitVC/OKCoin/OKCoin国际/OKCoin期货/BTCChina/BitYes)市价单, 市价单价格指定为-1
exchange.Buy(1000), 指买市价1000元的币, BTCChina例外exchange.Buy(0.3)指市价买0.3个币
Vamos ver como é simples usar uma lista de preços, mas a lista de preços tem muitos detalhes que precisam ser tratados.Capítulo 3.1A partir daí, o processo de processamento será muito detalhado para que todos possam aprender.
function main() {
// 方便用户看这些 宏的值 我们事先打印出来
// ORDER_STATE_PENDING :未完成
// ORDER_STATE_CLOSED :已关闭
// ORDER_STATE_CANCELED :已取消
Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, ", ORDER_STATE_CLOSED:",
ORDER_STATE_CLOSED, ", ORDER_STATE_CANCELED:", ORDER_STATE_CANCELED); // 这些都是订单状态的宏,打印这些值认识下,在本段代码不起任何作用,仅仅观察下这些 “状态” 的值。
var ticker = exchange.GetTicker(); // 上一章 已经讲述了怎么获取行情信息。
Log("初始账户信息:", exchange.GetAccount()); // 用于对比交易前后账户信息
var ID = exchange.Buy(ticker.Sell + 0.1, 0.1); // ticker.Sell 即 上一章中的 depth.Asks[0].Price 。
// 返回值是一个订单 ID ,参考上面 小准备。
// 限价单下单后 返回一个ID 可以用来查询这个订单的完成情况。我们暂停1秒 即: Sleep(1000) 。
Sleep(1000);
var order = exchange.GetOrder(ID); // 根据ID 获取 对应的 订单信息。
Log("order:", order);
Log("当前账户信息:", exchange.GetAccount()); // 对比初始账户信息
}
O resultado foi o seguinte:Pode-se ver que o valor do status da ordem impressa é 1, ou seja: ORDER_STATE_CLOSED. O estado da ordem atual é concluído, e ver que o dealAmount é 0.1, também pode confirmar que a ordem foi concluída. O valor da transação é dealAmount.
Documentação da API
Sell(Price, Amount) 跟Buy函数一样的调用方法和场景
A função Buy (), acima, foi testada pelo sistema de retrospecção que usamos, onde testamos com um disco analógico para ver se há pedidos pendentes (ou parcialmente realizados).
function main() {
// 方便用户看这些 宏的值 我们事先打印出来
// ORDER_STATE_PENDING :未完成
// ORDER_STATE_CLOSED :已关闭
// ORDER_STATE_CANCELED :已取消
Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, "
, ORDER_STATE_CLOSED:", ORDER_STATE_CLOSED, ", ORDER_STATE_CANCELED:", ORDER_STATE_CANCELED);
var ticker = exchange.GetTicker(); // 上一章 已经讲述了怎么获取行情信息。
Log("初始账户信息:", exchange.GetAccount()); // 用于对比交易前后账户信息
var ID = exchange.Sell(ticker.Sell + 0.3, 2); // 这里故意把卖出价格加了 0.3 ,并且使用的ticker.Sell,增加了未成交的几率。
// 返回值是一个订单 ID ,参考上面 小准备。
// 限价单下单后 返回一个ID 可以用来查询这个订单的完成情况。我们暂停1秒 即: Sleep(1000) 。
Sleep(1000);
var order = exchange.GetOrder(ID); // 根据ID 获取 对应的 订单信息。
Log("order:", order);
Log("当前账户信息:", exchange.GetAccount()); // 对比初始账户信息
}
Os resultados da quantificação do disquete foram os seguintes:Pode-se ver que o valor de Status da ordem impressa é 0, ou seja, não concluída. O valor de DealAmount é 0, e os 2 moedas vendidas também estão congelados porque a ordem está pendente.
O que fazer com o formulário pendente? Aqui usamos a função CancelOrder (ID), que usamos para cancelar uma ordem com o ID especificado.
function main() {
// 方便用户看这些 宏的值 我们事先打印出来
// ORDER_STATE_PENDING :未完成
// ORDER_STATE_CLOSED :已关闭
// ORDER_STATE_CANCELED :已取消
Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, ", ORDER_STATE_CLOSED:", ORDER_STATE_CLOSED,
", ORDER_STATE_CANCELED:", ORDER_STATE_CANCELED);
var ticker = exchange.GetTicker(); // 上一章 已经讲述了怎么获取行情信息。
Log("初始账户信息:", exchange.GetAccount()); // 用于对比交易前后账户信息
var ID = exchange.Sell(ticker.Sell + 50, 2); // ticker.Sell 即 上一章中的 depth.Asks[0].Price 。
// 返回值是一个订单 ID ,参考上面 小准备。
// 限价单下单后 返回一个ID 可以用来查询这个订单的完成情况。我们暂停1秒 即: Sleep(1000) 。
Sleep(1000);
var order = exchange.GetOrder(ID); // 根据ID 获取 对应的 订单信息。
Log("order:", order);
Log("当前账户信息:", exchange.GetAccount()); // 对比初始账户信息
Sleep(60 * 1000);
exchange.CancelOrder(ID); // 取消 这个ID 的订单
order = exchange.GetOrder(ID); // 读取这个ID的订单信息。
Log("order:", order);
}
Resultado de execução: mostra o pedido com o ID 634795459 O último texto impresso no status é 2: ORDER_STATE_CANCELED: cancelado
A função GetOrder ((ID) e a função GetOrders ((() são muito semelhantes, com a diferença de que a função GetOrder obtém informações de ordem do ID especificado e a função GetOrders () obtém todas as informações de ordem do ID especificado.未完成
A estrutura de dados devolvida pela ordem ((GetOrders)) é uma matriz de objetos, ou seja, uma matriz em que cada elemento é uma estrutura de ordem).
BijiasuoE se eu não comprar bitcoins, comprar outras moedas, curtir?
Bijiasuo- Não, não.
PenglihengEu não sei se você pode me perguntar, mas eu sou baseado em: exchange.Buy ((ticker, 0.1) para comprar um e exchange.Buy ((depth, 0.1) para comprar um O que é que a diferença é? O preço real do mercado de moeda é o que realmente é o óleo.
FangBeiA versão Python https://dn-filebox.qbox.me/a2802f5f41f416374d79c48aca05030ce2b2e8a8.png https://dn-filebox.qbox.me/d6d7d1af28993a2225ec33b092b4cf2e8c479edc.png
Inventor quantificado - sonho pequenoVeja a quarta pergunta deste post: https://www.botvs.com/bbs-topic/1427 No disco real, você pode usar configurações de controles personalizadas.
Inventor quantificado - sonho pequenoO GetTicker obtém dados de transações em tempo real, o GetDepth obtém informações de profundidade, compra e venda são iguais.
Inventor quantificado - sonho pequenoObrigado por compartilhar!