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

对于期货交易所对象,side参数的可选值为:buyclosebuysellclosesellbuy表示开多仓,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 参数时,amountcondition参数仍然需要提供。如果交易所 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}