exchange.CreateOrder()函数用于下单。
下单成功返回订单Id,下单失败返回空值。FMZ平台的订单{@struct/Order Order}结构的属性Id由交易所品种代码和交易所原始订单Id组成,以英文逗号分隔。例如OKX交易所现货交易对ETH_USDT订单的属性Id格式为:ETH-USDT,1547130415509278720。
调用exchange.CreateOrder(symbol, side, price, amount)函数下单时,返回值订单Id与订单{@struct/Order Order}结构的Id属性一致。
string / 空值
exchange.CreateOrder(symbol, side, price, amount) exchange.CreateOrder(symbol, side, price, amount, …args)
参数symbol用于指定订单的具体交易对或合约代码。
当调用exchange.CreateOrder(symbol, side, price, amount)函数下单时,若exchange为现货交易所对象,且订单计价币种为USDT、交易币种为BTC,则参数symbol为:"BTC_USDT",格式为FMZ平台定义的交易对格式。
当调用exchange.CreateOrder(symbol, side, price, amount)函数下单时,若exchange为期货交易所对象,且订单为BTC的U本位永续合约订单,则参数symbol为:"BTC_USDT.swap",格式为FMZ平台定义的交易对与合约代码的组合,以字符”.“分隔。
当调用exchange.CreateOrder(symbol, side, price, amount)函数下单时,若exchange为期货交易所对象,且订单为BTC的U本位期权合约订单,则参数symbol为:"BTC_USDT.BTC-240108-40000-C"(以币安期权BTC-240108-40000-C为例),格式为FMZ平台定义的交易对与交易所定义的具体期权合约代码的组合,以字符”.“分隔。
symbol
true
string
参数side用于指定订单的交易方向。
对于现货交易所对象,side参数的可选值为:buy、sell。buy表示买入,sell表示卖出。
对于期货交易所对象,side参数的可选值为:buy、closebuy、sell、closesell。buy表示开多仓,closebuy表示平多仓,sell表示开空仓,closesell表示平空仓。
支持附加参数(option):可以通过side参数传递附加参数,格式为:"side;{JSON对象}"或"side;key=value&key=value"。
例如:"buy;{\"type\":\"TRAILING_STOP_MARKET\",\"activationPrice\":\"2300\"}"或"buy;type=TRAILING_STOP_MARKET&activationPrice=2300"。
附加参数用于传递交易所特定的参数(如订单类型、生效规则等),具体支持的参数取决于交易所API。
side
true
string
参数price用于设置订单的价格。当价格为-1时,表示该订单为市价单。
price
true
number
参数amount用于设置订单的下单量。需要注意的是,当订单为现货市价买单时,下单量为买入金额;个别现货交易所的市价买单下单量为交易币数量,具体请参阅「用户指南」中的交易所特殊说明。对于期货交易所对象,使用CreateOrder()/Buy()/Sell()函数下单时,如无特殊说明,下单量参数amount均为合约张数。
amount
true
number
扩展参数,可以将附带信息输出到该下单日志中,arg参数可以传递多个。
arg
false
string / number / bool / object / array / any (平台支持的任意类型)
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)
}
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)
void main() {
auto id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01); // 现货交易所对象下单币币交易BTC_USDT交易对
// auto id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01); // 期货交易所对象下单BTC的U本位永续合约
Log("Order Id:", id);
}
现货交易所对象、期货交易所对象调用exchange.CreateOrder()函数下单。
“`javascript
function main() {
// 使用JSON格式传递option参数
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(): # 使用JSON格式传递option参数 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))```
”`cpp void main() { // 使用JSON格式传递option参数 json option = R”({ “type”: “TRAILING_STOP_MARKET”, “activationPrice”: “2300”, “callbackRate”: “0.1” })“_json; string sideWithOption = “buy;” + option.dump(); auto id = exchange.CreateOrder(“SOL_USDT.swap”, sideWithOption, -1, 1); Log(“Order Id:”, id);
Sleep(2000);
Log(exchange.GetOrder(id));
}“` 使用附加参数(option)下单,传递交易所特定参数。
支持通过side参数传递附加参数(option),用于传递交易所特定参数。附加参数需要与side参数合并传入,格式为"side;{JSON对象}"(推荐)或"side;key=value&key=value"(URL编码格式)。例如:"buy;{\"type\":\"TRAILING_STOP_MARKET\"}"。
不同交易所支持的option参数各不相同,具体支持的参数请参考交易所API文档。常见参数包括:订单类型(type)、生效规则(timeInForce)、触发价格(activationPrice)、回调比率(callbackRate)等。
使用option参数时,price和amount参数仍需提供。如果交易所API中的某些参数已通过option传递,这些基础参数可能会被option中的对应参数覆盖,具体行为取决于交易所API的实现。
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.ModifyOrder exchange.ModifyOrder}