Type/to search
8
Follow
1386
Followers
2.2 Đặt lệnh giới hạn
Tutorials
Created 2016-11-07 16:41:10  Updated 2019-08-01 09:26:27
 7
 6769

Đơn giá thấp


  • Buy (Price, Amount) hàm

Chuẩn bị nhỏ

Sử dụng chức năng giao dịch Buy ()**/**Sell (()) có một vài API mà bạn cần phải biết.

  • GetOrder ((orderId) lấy thông tin đơn đặt hàng dựa trên số đơn đặt hàng và trả về một cấu trúc Order.
  • GetOrders lấy tất cả các lệnh chưa hoàn thành và trả về một cấu trúc mảng Order.
  • CancelOrder ((orderId) Xóa đơn đặt hàng dựa trên số đơn đặt hàng, trả về true hoặc false.
    1. Trạng thái của đơn đặt hàng
[ ORDER_STATE_PENDING :未完成 ORDER_STATE_CLOSED :已关闭 ORDER_STATE_CANCELED :已取消 ]
  • 5 Order, cấu trúc lệnh được trả về bởi hàm GetOrder
{ Id :交易单唯一标识 Price :下单价格 Amount :下单数量 DealAmount :成交数量 Status :订单状态, 参考常量里的订单状态 Type :订单类型, 参考常量里的订单类型 }

Tài liệu 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个币
  • Đơn giá giới hạn

    Chúng ta hãy xem cách đơn giản để sử dụng bảng giá giới hạn, thực tế là bảng giá giới hạn có rất nhiều chi tiết cần phải xử lý, chúng ta hãy hiểu một cách đơn giản, bởi vì sau này chúng ta sẽ nói về các chi tiết khác nhau của bảng giá giới hạn.Chương 3.1Có một quá trình xử lý rất kỹ lưỡng để mọi người có thể học.

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()); // 对比初始账户信息 }

Kết quả là:
img
Bạn có thể thấy Status của lệnh được in là 1, nghĩa là: ORDER_STATE_CLOSED 。 trạng thái lệnh hiện tại đã được hoàn thành, nhìn thấy dealAmount là 0.1, cũng có thể xác nhận rằng lệnh đã hoàn thành giao dịch 。 số lượng giao dịch là dealAmount 。 các bạn học có thể quan sát kỹ sẽ thấy rằng lệnh được in nhiều hơn một AvgPrice ((giá trị giao dịch trung bình) so với tài liệu API, bởi vì thuộc tính này được mở rộng sau đó.

  • Chức năng Sell ((Price, Amount)

    Tài liệu API

Sell(Price, Amount) 跟Buy函数一样的调用方法和场景
  • Đơn giá giới hạn

    Buy () hàm ở trên chúng tôi dùng để kiểm tra hệ thống phản hồi, ở đây chúng tôi sử dụng đĩa analog để kiểm tra xem có đơn hàng nào chưa được giao ((hoặc bán một phần) [2].

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()); // 对比初始账户信息 }

Các nhà phát minh đã định lượng kết quả hoạt động của đĩa analog như sau:
img
Bạn có thể thấy rằng Status của order in là 0, nghĩa là chưa hoàn thành. DealAmount là 0, và 2 đồng được bán cũng bị đóng băng vì order đang chờ.

Vậy còn bài hát "Pending" thì sao?
Đây là hàm CancelOrder ((ID) mà chúng ta dùng để hủy lệnh đã có ID.

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); }

Kết quả chạy: Hiển thị đơn đặt hàng có số ID 634795459 Status là 2 trong thông tin in cuối cùng: ORDER_STATE_CANCELED: đã bị hủy
img

GetOrder ((ID) và GetOrders (()) trông rất giống nhau, khác biệt là GetOrder lấy thông tin đặt hàng của ID được chỉ định, còn GetOrders lấy tất cả未完成Lệnh của ((GetOrders (() trả về cấu trúc dữ liệu là mảng đối tượng, tức là mảng mà mỗi phần tử là cấu trúc order).

Related Recommendations
Comment
All comments (7)

    如果我不要买比特币,买其他的币,咋整?

    9 years ago

    参看这个 帖子的 第四个问题: https://www.botvs.com/bbs-topic/1427
    实盘的时候 可以使用自定义控件设置。

    9 years ago

    马克一下

    9 years ago

    能不能问一下,我根据
    exchange.Buy(ticker,0.1)来买一
    和
    exchange.Buy(depth,0.1)来买一
    的区别是什么,
    币的市场真实交易价到底如何获取哦

    9 years ago

    GetTicker 获取的就是 实时的 行情数据, GetDepth 获取的是深度 信息, 买一 、卖一 都是一样的。

    9 years ago

    python版本
    img
    img

    9 years ago

    感谢 分享!

    9 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)