输入/搜索内容
内置函数
Global
Log
Market
Trade
exchange.Buy
exchange.Sell
exchange.CreateOrder
exchange.CancelOrder
exchange.GetOrder
exchange.GetOrders
exchange.GetHistoryOrders
exchange.SetPrecision
exchange.SetRate
exchange.IO
exchange.Log
Account
Futures
Threads
TA
Talib
OS
结构体
内置变量

获取所有合约当前未完成的订单,并支持查询指定合约的未完成订单。

exchange.GetOrders()
exchange.GetOrders(symbol)

示例

  • 以较高的价格下单,然后查询未成交订单的信息。

    javascript
    function main(){ // 由于是测试代码,未采用商品期货策略的通用架构,这里仅通过exchange.IO("status")函数进行判断,在成功连接期货公司前置机后立即执行测试代码。股票证券无需使用exchange.IO("status")判断连接状态 while (!exchange.IO("status")) { Sleep(1000) } // 设置合约代码 exchange.SetContractType("rb888") // 设置下单方向 exchange.SetDirection("sell") // 此处的下单价格仅为示例,过高的价格不会成交,订单将处于订单簿中等待成交,实际测试时可自行调整价格 exchange.Sell(99999, 1) exchange.Sell(88888, 1) var orders = exchange.GetOrders() Log("未完成订单一的信息,ID:", orders[0].Id, "Price:", orders[0].Price, "Amount:", orders[0].Amount, "DealAmount:", orders[0].DealAmount, "Type:", orders[0].Type, "Symbol:", orders[0].Symbol) Log("未完成订单二的信息,ID:", orders[1].Id, "Price:", orders[1].Price, "Amount:", orders[1].Amount, "DealAmount:", orders[1].DealAmount, "Type:", orders[1].Type, "Symbol:", orders[1].Symbol) }
    python
    def main(): while not exchange.IO("status"): Sleep(1000) exchange.SetContractType("rb888") exchange.SetDirection("sell") exchange.Sell(99999, 1) exchange.Sell(88888, 1) orders = exchange.GetOrders() Log("未完成订单一的信息,ID:", orders[0]["Id"], "Price:", orders[0]["Price"], "Amount:", orders[0]["Amount"], "DealAmount:", orders[0]["DealAmount"], "Type:", orders[0]["Type"], "Symbol:", orders[0]["Symbol"]) Log("未完成订单二的信息,ID:", orders[1]["Id"], "Price:", orders[1]["Price"], "Amount:", orders[1]["Amount"], "DealAmount:", orders[1]["DealAmount"], "Type:", orders[1]["Type"], "Symbol:", orders[1]["Symbol"])
    rust
    fn main() { // 由于是测试代码,未采用商品期货策略的通用架构,这里仅通过exchange.IO("status")函数进行判断,在成功连接期货公司前置机后立即执行测试代码。股票证券无需使用exchange.IO("status")判断连接状态 while !exchange.IO("status").is_ok_and(|v| v.as_i64() == Some(1)) { Sleep(1000); } // 设置合约代码 let _ = exchange.SetContractType("rb888"); // 设置下单方向 let _ = exchange.SetDirection("sell"); // 此处的下单价格仅为示例,过高的价格不会成交,订单将处于订单簿中等待成交,实际测试时可自行调整价格 let _ = exchange.Sell(99999, 1); let _ = exchange.Sell(88888, 1); let orders = exchange.GetOrders(None).unwrap(); Log!("未完成订单一的信息,ID:", orders[0].Id, "Price:", orders[0].Price, "Amount:", orders[0].Amount, "DealAmount:", orders[0].DealAmount, "Type:", orders[0].Type, "Symbol:", orders[0].Symbol); Log!("未完成订单二的信息,ID:", orders[1].Id, "Price:", orders[1].Price, "Amount:", orders[1].Amount, "DealAmount:", orders[1].DealAmount, "Type:", orders[1].Type, "Symbol:", orders[1].Symbol); }
  • 在商品期货和股票证券中,exchange.GetOrders()函数获取的是所有未完成的订单。在商品期货中,exchange.GetOrders()函数获取的订单与当前设置的合约无关。可以使用以下示例进行回测、模拟盘和实盘测试。

    javascript
    /*backtest start: 2020-06-17 10:00:00 end: 2020-06-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}] */ function main() { var contractTypeList = ["MA009", "rb2010", "i2009"] while (true) { if (exchange.IO("status")) { for (var i = 0; i < contractTypeList.length; i++) { var ret = exchange.SetContractType(contractTypeList[i]) var ticker = exchange.GetTicker() exchange.SetDirection("sell") var id = exchange.Sell(ticker.Sell + 5, 1) Log(contractTypeList[i], "开空仓订单ID:", id) } var orders = exchange.GetOrders() for (var j = 0; j < orders.length; j++) { Log(orders[j]) } break } else { LogStatus(_D(), "未连接") Sleep(1000) } } }
    python
    '''backtest start: 2020-06-17 10:00:00 end: 2020-06-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}] ''' def main(): contractTypeList = ["MA009", "rb2010", "i2009"] while True: if exchange.IO("status"): for i in range(len(contractTypeList)): ret = exchange.SetContractType(contractTypeList[i]) ticker = exchange.GetTicker() exchange.SetDirection("sell") id = exchange.Sell(ticker["Sell"] + 5, 1) Log(contractTypeList[i], "开空仓订单ID:", id) orders = exchange.GetOrders() for i in range(len(orders)): Log(orders[i]) break else: LogStatus(_D(), "未连接") Sleep(1000)
    rust
    /*backtest start: 2020-06-17 10:00:00 end: 2020-06-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}] */ fn main() { let contractTypeList = ["MA009", "rb2010", "i2009"]; loop { if exchange.IO("status").is_ok_and(|v| v.as_i64() == Some(1)) { for i in 0..contractTypeList.len() { let ret = exchange.SetContractType(contractTypeList[i]); let ticker = exchange.GetTicker(None).unwrap(); let _ = exchange.SetDirection("sell"); let id = exchange.Sell(ticker.Sell + 5.0, 1); Log!(contractTypeList[i], "开空仓订单ID:", id); } let orders = exchange.GetOrders(None).unwrap(); for j in 0..orders.len() { Log!(orders[j]); } break; } else { LogStatus!(_D(None), "未连接"); Sleep(1000); } } }

返回值

类型描述

Order数组 / 空值

成功时返回Order结构数组;失败时返回空值。

参数

名称类型必填描述

symbol

string

否

要查询的订单所属的合约代码。若不传入该参数,则默认查询所有合约的当前未完成订单数据。

参考

备注

当交易所对象exchange所代表的账户没有挂单(即处于未成交状态的活动订单)时,调用exchange.GetOrders()函数将返回空数组,即:[]。

exchange.GetOrders()函数不依赖于当前的合约代码设置;当不传入symbol参数时,将获取所有合约的未完成订单。