exchange.CreateConditionOrder

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参数的可选值为:buysell。其中buy表示买入,sell表示卖出。

对于期货交易所对象,side参数的可选值为:buyclosebuysellclosesell。其中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}