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表示平空仓。
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订单:同时设置止盈和止损,当其中一个订单触发后,另一个订单将自动取消。
条件单功能的支持情况取决于具体交易所,部分交易所可能不支持此功能。 条件单在触发前不会占用账户资金,只有在触发后才会实际下单并占用资金。 不同交易所对条件单的支持程度和具体参数可能存在差异,使用前请查阅相应交易所的API文档。
{@struct/Condition Condition}, {@fun/Trade/exchange.CancelConditionOrder exchange.CancelConditionOrder}, {@fun/Trade/exchange.GetConditionOrder exchange.GetConditionOrder}, {@fun/Trade/exchange.GetConditionOrders exchange.GetConditionOrders}