exchange.CreateConditionOrder()函数用于创建条件单。条件单是一种在满足特定触发条件时自动执行的订单类型。
创建条件单成功时返回条件单Id,创建失败时返回空值。条件单Id格式与普通订单Id类似,由交易所品种代码和交易所原始条件单Id组成,以英文逗号间隔。 string / 空值
exchange.CreateConditionOrder(symbol, side, amount, condition) exchange.CreateConditionOrder(symbol, side, amount, condition, …args)
参数symbol用于指定条件单的具体交易对或合约代码。
当调用exchange.CreateConditionOrder(symbol, side, amount, condition)函数下条件单时,若exchange为现货交易所对象,且订单计价币种为USDT、交易币种为BTC,则参数symbol为:"BTC_USDT",格式为FMZ平台定义的交易对格式。
当调用exchange.CreateConditionOrder(symbol, side, amount, condition)函数下条件单时,若exchange为期货交易所对象,且订单为BTC的U本位永续合约订单,则参数symbol为:"BTC_USDT.swap",格式为FMZ平台定义的交易对与合约代码的组合,以字符”.“间隔。
当调用exchange.CreateConditionOrder(symbol, side, amount, condition)函数下条件单时,若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\",\"activatePrice\":\"300\"}"或"buy;type=TRAILING_STOP_MARKET&activatePrice=300"。
附加参数用于传递交易所特定的参数(如订单类型、生效规则等),具体支持的参数取决于交易所API。
side
true
string
参数amount用于设置条件单的下单数量。需要注意,当订单为现货市价买单时,下单数量为买入金额;个别现货交易所的市价买单下单数量为交易币数量,具体请查看「用户指南」中的交易所特殊说明。对于期货交易所对象,下单数量参数amount均为合约张数。
amount
true
number
参数condition是一个对象,用于设置条件单的触发条件和执行价格。该对象的结构参考{@struct/Condition Condition}结构,包含以下属性:
ConditionType(number):条件类型,参考{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_OCO ORDER_CONDITION_TYPE_OCO}、{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_TP ORDER_CONDITION_TYPE_TP}、{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_SL ORDER_CONDITION_TYPE_SL}、{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_GENERIC ORDER_CONDITION_TYPE_GENERIC}。
TpTriggerPrice(number):止盈触发价格。
TpOrderPrice(number):止盈执行价格,-1表示市价单。
SlTriggerPrice(number):止损触发价格。
SlOrderPrice(number):止损执行价格,-1表示市价单。
condition
true
object
扩展参数,可以输出附带信息到该条件单的日志中,arg参数可以传递多个。
arg
false
string / number / bool / object / array / any (平台支持的任意类型)
function main() {
// 创建止盈单:当BTC_USDT价格涨到65000时,以65000价格卖出0.01个BTC
var condition = {
ConditionType: ORDER_CONDITION_TYPE_TP, // 止盈单
TpTriggerPrice: 65000, // 触发价格
TpOrderPrice: 65000 // 执行价格,也可以设置为-1表示市价单
}
var id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition)
Log("TP order Id:", id)
}
def main():
# 创建止盈单:当BTC_USDT价格涨到65000时,以65000价格卖出0.01个BTC
condition = {
"ConditionType": ORDER_CONDITION_TYPE_TP, # 止盈单
"TpTriggerPrice": 65000, # 触发价格
"TpOrderPrice": 65000 # 执行价格,也可以设置为-1表示市价单
}
id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition)
Log("TP order Id:", id)
void main() {
// 创建止盈单:当BTC_USDT价格涨到65000时,以65000价格卖出0.01个BTC
json condition = R"({
"ConditionType": ORDER_CONDITION_TYPE_TP,
"TpTriggerPrice": 65000,
"TpOrderPrice": 65000
})"_json;
auto id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition);
Log("TP order Id:", id);
}
创建止盈单(TP):当价格上涨至目标价位时自动卖出。
function main() {
// 创建止损单:当BTC_USDT价格跌到58000时,以市价卖出0.01个BTC
var condition = {
ConditionType: ORDER_CONDITION_TYPE_SL, // 止损单
SlTriggerPrice: 58000, // 触发价格
SlOrderPrice: -1 // -1表示市价单
}
var id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition)
Log("SL order Id:", id)
}
def main():
# 创建止损单:当BTC_USDT价格跌到58000时,以市价卖出0.01个BTC
condition = {
"ConditionType": ORDER_CONDITION_TYPE_SL, # 止损单
"SlTriggerPrice": 58000, # 触发价格
"SlOrderPrice": -1 # -1表示市价单
}
id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition)
Log("SL order Id:", id)
void main() {
// 创建止损单:当BTC_USDT价格跌到58000时,以市价卖出0.01个BTC
json condition = R"({
"ConditionType": ORDER_CONDITION_TYPE_SL,
"SlTriggerPrice": 58000,
"SlOrderPrice": -1
})"_json;
auto id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition);
Log("SL order Id:", id);
}
创建止损单(SL):当价格下跌至止损价位时自动卖出。
function main() {
// 创建OCO订单:止盈价65000,止损价58000
var condition = {
ConditionType: ORDER_CONDITION_TYPE_OCO, // OCO订单
TpTriggerPrice: 65000, // 止盈触发价格
TpOrderPrice: 65000, // 止盈执行价格
SlTriggerPrice: 58000, // 止损触发价格
SlOrderPrice: 58000 // 止损执行价格
}
var id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition)
Log("OCO order Id:", id)
}
def main():
# 创建OCO订单:止盈价65000,止损价58000
condition = {
"ConditionType": ORDER_CONDITION_TYPE_OCO, # OCO订单
"TpTriggerPrice": 65000, # 止盈触发价格
"TpOrderPrice": 65000, # 止盈执行价格
"SlTriggerPrice": 58000, # 止损触发价格
"SlOrderPrice": 58000 # 止损执行价格
}
id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition)
Log("OCO order Id:", id)
void main() {
// 创建OCO订单:止盈价65000,止损价58000
json condition = R"({
"ConditionType": ORDER_CONDITION_TYPE_OCO,
"TpTriggerPrice": 65000,
"TpOrderPrice": 65000,
"SlTriggerPrice": 58000,
"SlOrderPrice": 58000
})"_json;
auto id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition);
Log("OCO order Id:", id);
}
创建OCO订单:同时设置止盈和止损,当任意一个触发后另一个自动取消。
“`javascript
function main() {
// 使用JSON格式传递option参数
var option = {
“type”: “TRAILING_STOP_MARKET”,
“activatePrice”: “300”,
“callbackRate”: “0.1”
}
var sideWithOption = “buy;” + JSON.stringify(option)
var condition = {
ConditionType: ORDER_CONDITION_TYPE_TP,
TpTriggerPrice: 77,
TpOrderPrice: 71
}
var id = exchange.CreateConditionOrder(“SOL_USDT.swap”, sideWithOption, 1, condition)
Log(“Condition Order Id:”, id)
Sleep(2000)
Log(exchange.GetConditionOrder(id))
}
python
import json
def main(): # 使用JSON格式传递option参数 option = { “type”: “TRAILING_STOP_MARKET”, “activatePrice”: “300”, “callbackRate”: “0.1” } sideWithOption = “buy;” + json.dumps(option) condition = { “ConditionType”: ORDER_CONDITION_TYPE_TP, “TpTriggerPrice”: 77, “TpOrderPrice”: 71 } id = exchange.CreateConditionOrder(“SOL_USDT.swap”, sideWithOption, 1, condition) Log(“Condition Order Id:”, id)
Sleep(2000)
Log(exchange.GetConditionOrder(id))```
”`cpp void main() { // 使用JSON格式传递option参数 json option = R”({ “type”: “TRAILING_STOP_MARKET”, “activatePrice”: “300”, “callbackRate”: “0.1” })“_json; string sideWithOption = “buy;” + option.dump(); json condition = R”({ “ConditionType”: ORDER_CONDITION_TYPE_TP, “TpTriggerPrice”: 77, “TpOrderPrice”: 71 })“_json; auto id = exchange.CreateConditionOrder(“SOL_USDT.swap”, sideWithOption, 1, condition); Log(“Condition Order Id:”, id);
Sleep(2000);
Log(exchange.GetConditionOrder(id));
}“` 使用附加参数(option)创建条件单,传递交易所特定参数。
条件单功能的支持情况取决于具体交易所,部分交易所可能不支持条件单功能。
条件单在触发前不会占用账户资金,触发后才会实际下单并占用资金。
不同交易所对条件单的支持程度和具体参数可能存在差异,使用前请查阅对应交易所的 API 文档。
支持通过side参数传递附加参数(option),用于传递交易所特定的参数。附加参数需要与side参数合并传入,格式为"side;{JSON对象}"(推荐)或"side;key=value&key=value"(URL 编码格式)。例如:"buy;{\"type\":\"TRAILING_STOP_MARKET\"}"。
不同交易所支持的 option 参数不同,具体支持的参数取决于交易所 API 文档。常见的参数包括:订单类型(type)、生效规则(timeInForce)、触发价格(activatePrice)、回调比率(callbackRate)等。
使用 option 参数时,amount和condition参数仍然需要提供。如果交易所 API 中的某些参数已通过 option 传递,这些基础参数可能会被 option 中的对应参数覆盖,具体行为取决于交易所 API 的实现。
{@struct/Condition Condition}, {@fun/Trade/exchange.CancelConditionOrder exchange.CancelConditionOrder}, {@fun/Trade/exchange.GetConditionOrder exchange.GetConditionOrder}, {@fun/Trade/exchange.GetConditionOrders exchange.GetConditionOrders}, {@fun/Trade/exchange.ModifyConditionOrder exchange.ModifyConditionOrder}