exchange.CreateOrder
下单。
exchange.CreateOrder(symbol, side, price, amount)
exchange.CreateOrder(symbol, side, price, amount, ...args)示例
-
现货交易所对象和期货交易所对象均可调用
exchange.CreateOrder()函数下单。javascriptfunction 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) }pythondef 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)rustfn 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); } -
将交易所特有的参数放入最后一个对象参数中下单(推荐写法)。
javascriptfunction 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)) }pythondef main(): # selfTradePreventionMode不属于下单选项,会原样透传给交易所(币安期货的防自成交模式) id = exchange.CreateOrder("SOL_USDT.swap", "buy", 150, 1, {"selfTradePreventionMode": "EXPIRE_MAKER"}) Log("Order Id:", id) Sleep(2000) Log(exchange.GetOrder(id))rustfn 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参数之后传递(旧写法)。javascriptfunction 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)) }pythonimport 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))rustfn 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平台订单 |
参数
| 名称 | 类型 | 必填 | 描述 |
symbol | string | 是 | 订单的交易品种,例如现货交易所对象上的 |
side | string | 是 | 交易方向:现货为 |
price | number | 是 | 订单价格。价格为-1时表示市价单。 |
amount | number | 是 | 订单的下单量。注意:订单为现货市价买单时,下单量为买入金额;个别现货交易所的市价买单下单量为交易币数量而非金额,详见各交易所页面的注意事项。对于期货交易所对象,使用 |
arg | string / number / bool / object / array / any | 否 | 扩展参数, |
参考
备注
交易所特定的参数(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。