输入/搜索内容
内置函数
Global
Log
Market
Trade
Account
Futures
Exchange
IO
Network
Storage
Threads
TA
Talib
OS
结构体
内置变量与常量
通用约定
交易所

下单。

exchange.CreateOrder(symbol, side, price, amount)
exchange.CreateOrder(symbol, side, price, amount, ...args)

示例

  • 现货交易所对象和期货交易所对象均可调用exchange.CreateOrder()函数下单。

    javascript
    function main() { var id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) // 现货交易所对象下单,交易对为BTC_USDT现货 // var id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) // 期货交易所对象下单,合约为BTC的U本位永续合约 Log("Order Id:", id) }
    python
    def main(): id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) # 现货交易所对象下单,交易对为BTC_USDT现货 # id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) # 期货交易所对象下单,合约为BTC的U本位永续合约 Log("Order Id:", id)
    rust
    fn main() { let id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01); // 现货交易所对象下单,交易对为BTC_USDT现货 // let id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01); // 期货交易所对象下单,合约为BTC的U本位永续合约 Log!("Order Id:", id); }
  • 将交易所特有的参数放入最后一个对象参数中下单(推荐写法)。

    javascript
    function main() { // selfTradePreventionMode不属于下单选项,会原样透传给交易所(币安期货的防自成交模式) var id = exchange.CreateOrder("SOL_USDT.swap", "buy", 150, 1, {selfTradePreventionMode: "EXPIRE_MAKER"}) Log("Order Id:", id) Sleep(2000) Log(exchange.GetOrder(id)) }
    python
    def main(): # selfTradePreventionMode不属于下单选项,会原样透传给交易所(币安期货的防自成交模式) id = exchange.CreateOrder("SOL_USDT.swap", "buy", 150, 1, {"selfTradePreventionMode": "EXPIRE_MAKER"}) Log("Order Id:", id) Sleep(2000) Log(exchange.GetOrder(id))
    rust
    fn main() { // Rust需使用带WithOptions后缀的函数传入对象参数 let opts = JSONParse(r#"{"selfTradePreventionMode": "EXPIRE_MAKER"}"#).unwrap(); let id = exchange.CreateOrderWithOptions("SOL_USDT.swap", "buy", 150, 1, &opts).unwrap(); Log!("Order Id:", id); Sleep(2000); Log!(exchange.GetOrder(&id)); }
  • 参数名与下单选项重名时(例如币安追踪止损单的type),只能将该参数附加在side参数之后传递(旧写法)。

    javascript
    function main() { // type与下单选项重名,只能附加在side参数之后传递 var option = { "type": "TRAILING_STOP_MARKET", "activationPrice": "2300", "callbackRate": "0.1" } var sideWithOption = "buy;" + JSON.stringify(option) var id = exchange.CreateOrder("SOL_USDT.swap", sideWithOption, -1, 1) Log("Order Id:", id) Sleep(2000) Log(exchange.GetOrder(id)) }
    python
    import json def main(): # type与下单选项重名,只能附加在side参数之后传递 option = { "type": "TRAILING_STOP_MARKET", "activationPrice": "2300", "callbackRate": "0.1" } sideWithOption = "buy;" + json.dumps(option) id = exchange.CreateOrder("SOL_USDT.swap", sideWithOption, -1, 1) Log("Order Id:", id) Sleep(2000) Log(exchange.GetOrder(id))
    rust
    fn main() { // type与下单选项重名,只能附加在side参数之后传递 let option = r#"{"type": "TRAILING_STOP_MARKET", "activationPrice": "2300", "callbackRate": "0.1"}"#; let sideWithOption = format!("buy;{}", option); let id = exchange.CreateOrder("SOL_USDT.swap", &sideWithOption, -1, 1).unwrap(); Log!("Order Id:", id); Sleep(2000); Log!(exchange.GetOrder(&id)); }

返回值

类型描述

string / 空值

下单成功返回订单Id,下单失败返回空值。FMZ平台订单Order结构的Id属性由交易所品种代码和交易所原始订单Id组成,以英文逗号分隔。例如,OKX交易所现货交易对ETH_USDT的订单,其Id属性格式为:ETH-USDT,1547130415509278720。
调用exchange.CreateOrder(symbol, side, price, amount)函数下单时,返回的订单Id与订单Order结构的Id属性一致。

参数

名称类型必填描述

symbol

string

是

订单的交易品种,例如现货交易所对象上的BTC_USDT、期货交易所对象上的BTC_USDT.swap;写法(含期权)见品种代码。

side

string

是

交易方向:现货为buy(买入)、sell(卖出);期货为buy(开多)、sell(开空)、closebuy(平多)、closesell(平空)。可附带交易所特定参数,见备注。

price

number

是

订单价格。价格为-1时表示市价单。

amount

number

是

订单的下单量。注意:订单为现货市价买单时,下单量为买入金额;个别现货交易所的市价买单下单量为交易币数量而非金额,详见各交易所页面的注意事项。对于期货交易所对象,使用CreateOrder()/Buy()/Sell()函数下单时,如无特殊说明,下单量参数amount均为合约张数。

arg

string / number / bool / object / array / any

否

扩展参数,arg参数可传入多个。字符串、数字等参数会输出到本次下单的日志中(多个参数以空格连接)。最后一个对象参数不输出到日志,而是作为下单选项,支持的键包括:type(仅可为market或limit,用于显式指定市价单或限价单)、tif、reduceOnly、postOnly;其余键作为交易所特定参数传给交易所,与在side参数中附带"side;{JSON对象}"等效(同名键以side中的为准),例如{"slippage":0.01}。

参考

备注

交易所特定的参数(option)建议放在最后一个对象参数中,例如exchange.CreateOrder(symbol, "buy", price, amount, {timeInForce: "GTX"}):其中type、tif、reduceOnly、postOnly是下单选项,其余键原样透传给交易所。Rust使用exchange.CreateOrderWithOptions()传入对象参数。

不同交易所支持的option参数各不相同,具体以交易所API文档为准。常见参数包括:订单类型(type)、生效规则(timeInForce)、触发价格(activationPrice)、回调比率(callbackRate)等。

使用option参数时,仍需提供price和amount参数。如果交易所API中的某些参数已通过option传入,这些基础参数可能会被option中的对应参数覆盖,具体行为取决于交易所API的实现。

链上兑换类交易所(例如Uniswap、Jupiter)下单即立即兑换,不会挂单等待:限价单的price为可接受的最差成交价,会写入链上交易强制执行;若当前报价已无法满足该价格,则直接报错,不发送交易。市价单(price为-1)按滑点设置进行保护,市价买入时amount为要花费的计价币数量。订单ID的格式、能否撤单以及支持的附加参数,请参见对应的交易所页面,例如Uniswap、Jupiter。

也可以将参数附加在side参数之后(旧写法):"side;{JSON对象}"或"side;key=value&key=value"(URL编码格式),例如'buy;{"type":"TRAILING_STOP_MARKET","activationPrice":"2300"}'。与下单选项同名的交易所参数(例如币安的type)只能使用这种写法;两种写法传入同名参数时,以side中的为准。具体支持的参数取决于交易所API。

不支持的交易所:Web3。调用时报错并返回空值,所有交易所的对照见能力矩阵。