输入/搜索内容
内置函数
Global
Version
Sleep
IsVirtual
Mail
Mail_Go
SetErrorFilter
GetPid
GetLastError
GetCommand
GetMeta
Dial
HttpQuery
HttpQuery_Go
Encode
UnixNano
Unix
GetOS
MD5
DBExec
UUID
EventLoop
__Serve
_G
_D
_N
_C
_Cross
JSON.parse
JSON.stringify
SetChannelData
GetChannelData
Log
Market
Trade
Account
Futures
NetSettings
Threads
threading
Thread
getThread
mainThread
currentThread
Lock
Condition
Event
Dict
pending
Thread
ThreadLock
ThreadEvent
ThreadCondition
ThreadDict
Web3
TA
Talib
talib.CDL2CROWS
talib.CDL3BLACKCROWS
talib.CDL3INSIDE
talib.CDL3LINESTRIKE
talib.CDL3OUTSIDE
talib.CDL3STARSINSOUTH
talib.CDL3WHITESOLDIERS
talib.CDLABANDONEDBABY
talib.CDLADVANCEBLOCK
talib.CDLBELTHOLD
talib.CDLBREAKAWAY
talib.CDLCLOSINGMARUBOZU
talib.CDLCONCEALBABYSWALL
talib.CDLCOUNTERATTACK
talib.CDLDARKCLOUDCOVER
talib.CDLDOJI
talib.CDLDOJISTAR
talib.CDLDRAGONFLYDOJI
talib.CDLENGULFING
talib.CDLEVENINGDOJISTAR
talib.CDLEVENINGSTAR
talib.CDLGAPSIDESIDEWHITE
talib.CDLGRAVESTONEDOJI
talib.CDLHAMMER
talib.CDLHANGINGMAN
talib.CDLHARAMI
talib.CDLHARAMICROSS
talib.CDLHIGHWAVE
talib.CDLHIKKAKE
talib.CDLHIKKAKEMOD
talib.CDLHOMINGPIGEON
talib.CDLIDENTICAL3CROWS
talib.CDLINNECK
talib.CDLINVERTEDHAMMER
talib.CDLKICKING
talib.CDLKICKINGBYLENGTH
talib.CDLLADDERBOTTOM
talib.CDLLONGLEGGEDDOJI
talib.CDLLONGLINE
talib.CDLMARUBOZU
talib.CDLMATCHINGLOW
talib.CDLMATHOLD
talib.CDLMORNINGDOJISTAR
talib.CDLMORNINGSTAR
talib.CDLONNECK
talib.CDLPIERCING
talib.CDLRICKSHAWMAN
talib.CDLRISEFALL3METHODS
talib.CDLSEPARATINGLINES
talib.CDLSHOOTINGSTAR
talib.CDLSHORTLINE
talib.CDLSPINNINGTOP
talib.CDLSTALLEDPATTERN
talib.CDLSTICKSANDWICH
talib.CDLTAKURI
talib.CDLTASUKIGAP
talib.CDLTHRUSTING
talib.CDLTRISTAR
talib.CDLUNIQUE3RIVER
talib.CDLUPSIDEGAP2CROWS
talib.CDLXSIDEGAP3METHODS
talib.AD
talib.ADOSC
talib.OBV
talib.ACOS
talib.ASIN
talib.ATAN
talib.CEIL
talib.COS
talib.COSH
talib.EXP
talib.FLOOR
talib.LN
talib.LOG10
talib.SIN
talib.SINH
talib.SQRT
talib.TAN
talib.TANH
talib.MAX
talib.MAXINDEX
talib.MIN
talib.MININDEX
talib.MINMAX
talib.MINMAXINDEX
talib.SUM
talib.HT_DCPERIOD
talib.HT_DCPHASE
talib.HT_PHASOR
talib.HT_SINE
talib.HT_TRENDMODE
talib.ATR
talib.NATR
talib.TRANGE
talib.BBANDS
talib.DEMA
talib.EMA
talib.HT_TRENDLINE
talib.KAMA
talib.MA
talib.MAMA
talib.MIDPOINT
talib.MIDPRICE
talib.SAR
talib.SAREXT
talib.SMA
talib.T3
talib.TEMA
talib.TRIMA
talib.WMA
talib.LINEARREG
talib.LINEARREG_ANGLE
talib.LINEARREG_INTERCEPT
talib.LINEARREG_SLOPE
talib.STDDEV
talib.TSF
talib.VAR
talib.ADX
talib.ADXR
talib.APO
talib.AROON
talib.AROONOSC
talib.BOP
talib.CCI
talib.CMO
talib.DX
talib.MACD
talib.MACDEXT
talib.MACDFIX
talib.MFI
talib.MINUS_DI
talib.MINUS_DM
talib.MOM
talib.PLUS_DI
talib.PLUS_DM
talib.PPO
talib.ROC
talib.ROCP
talib.ROCR
talib.ROCR100
talib.RSI
talib.STOCH
talib.STOCHF
talib.STOCHRSI
talib.TRIX
talib.ULTOSC
talib.WILLR
talib.AVGPRICE
talib.MEDPRICE
talib.TYPPRICE
talib.WCLPRICE
OS
结构体
内置变量

exchange.CreateConditionOrder()函数用于创建条件单。条件单是一种在满足特定触发条件时自动执行的订单类型。

exchange.CreateConditionOrder(symbol, side, amount, condition)
exchange.CreateConditionOrder(symbol, side, amount, condition, ...args)

示例

  • 创建止盈单(TP):当价格上涨至目标价位时自动卖出。

    javascript
    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) }
    python
    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)
    rust
    fn main() { // 创建止盈单:当BTC_USDT价格上涨至65000时,以65000的价格卖出0.01个BTC let condition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_TP, // 止盈单 TpTriggerPrice: 65000.0, // 触发价格 TpOrderPrice: 65000.0, // 执行价格,也可设置为-1表示市价单 ..Default::default() }; let id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, &condition); Log!("TP order Id:", id); }
    c++
    void main() { // 创建止盈单:当BTC_USDT价格上涨至65000时,以65000的价格卖出0.01个BTC OrderCondition condition = {.ConditionType = ORDER_CONDITION_TYPE_TP, .TpTriggerPrice = 65000, .TpOrderPrice = 65000}; auto id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition); Log("TP order Id:", id); }
  • 创建止损单(SL):当价格下跌至止损触发价位时,自动以设定方式卖出。

    javascript
    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) }
    python
    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)
    rust
    fn main() { // 创建止损单:当BTC_USDT价格下跌至58000时,以市价卖出0.01个BTC let condition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_SL, // 止损单 SlTriggerPrice: 58000.0, // 触发价格 SlOrderPrice: -1.0, // -1表示市价单 ..Default::default() }; let id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, &condition); Log!("SL order Id:", id); }
    c++
    void main() { // 创建止损单:当BTC_USDT价格下跌至58000时,以市价卖出0.01个BTC OrderCondition condition = {.ConditionType = ORDER_CONDITION_TYPE_SL, .SlTriggerPrice = 58000, .SlOrderPrice = -1}; auto id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition); Log("SL order Id:", id); }
  • 创建 OCO 订单:同时设置止盈和止损,任意一个触发后,另一个将自动取消。

    javascript
    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) }
    python
    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)
    rust
    fn main() { // 创建 OCO 订单:止盈价 65000,止损价 58000 let condition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_OCO, // OCO 订单 TpTriggerPrice: 65000.0, // 止盈触发价格 TpOrderPrice: 65000.0, // 止盈执行价格 SlTriggerPrice: 58000.0, // 止损触发价格 SlOrderPrice: 58000.0 // 止损执行价格 }; let id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, &condition); Log!("OCO order Id:", id); }
    c++
    void main() { // 创建 OCO 订单:止盈价 65000,止损价 58000 OrderCondition condition = {.ConditionType = ORDER_CONDITION_TYPE_OCO, .TpTriggerPrice = 65000, .TpOrderPrice = 65000, .SlTriggerPrice = 58000, .SlOrderPrice = 58000}; auto id = exchange.CreateConditionOrder("BTC_USDT", "sell", 0.01, condition); Log("OCO order Id:", id); }
  • 使用附加参数(option)创建条件单,用于传递交易所特定的参数。

    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))
    rust
    fn main() { // 以 JSON 格式传递 option 参数(Rust 无 JSON 序列化功能,此处直接使用原始字符串构造) let option = r#"{"type": "TRAILING_STOP_MARKET", "activatePrice": "300", "callbackRate": "0.1"}"#; let sideWithOption = format!("buy;{}", option); let condition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 77.0, TpOrderPrice: 71.0, ..Default::default() }; let id = exchange.CreateConditionOrder("SOL_USDT.swap", &sideWithOption, 1, &condition).unwrap(); Log!("Condition Order Id:", id); Sleep(2000); Log!(exchange.GetConditionOrder(&id)); }
    c++
    void main() { // 以 JSON 格式传递 option 参数 json option = R"({ "type": "TRAILING_STOP_MARKET", "activatePrice": "300", "callbackRate": "0.1" })"_json; string sideWithOption = "buy;" + option.dump(); OrderCondition condition = {.ConditionType = ORDER_CONDITION_TYPE_TP, .TpTriggerPrice = 77, .TpOrderPrice = 71}; auto id = exchange.CreateConditionOrder("SOL_USDT.swap", sideWithOption, 1, condition); Log("Condition Order Id:", id); Sleep(2000); Log(exchange.GetConditionOrder(id)); }

返回值

类型描述

string / 空值

创建条件单成功时返回条件单Id,创建失败时返回空值。条件单Id的格式与普通订单Id类似,由交易所品种代码和交易所原始条件单Id组成,两者之间以英文逗号分隔。

参数

名称类型必填描述

symbol

string

参数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平台定义的交易对与交易所定义的具体期权合约代码的组合,两者之间以字符"."分隔。

side

string

参数side用于指定条件单的交易方向。

对于现货交易所对象,side参数的可选值为:buysellbuy表示买入,sell表示卖出。

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

amount

number

参数amount用于设置条件单的下单量。需要注意的是,当订单为现货市价买单时,下单量表示买入金额;个别现货交易所的市价买单下单量为交易币数量,具体请查看「用户指南」中的交易所特殊说明。对于期货交易所对象,下单量参数amount均以合约张数为单位。

condition

object

参数condition是一个对象,用于设置条件单的触发条件和执行价格。该对象的结构参考Condition结构,包含以下属性:

arg

string / number / bool / object / array / any (平台支持的任意类型)

扩展参数,用于将附带信息输出到该条条件单的日志中,arg参数可以传入多个。

参考

备注

条件单功能的支持情况取决于具体交易所,部分交易所可能不支持条件单功能。

条件单在触发前不会占用账户资金,仅在触发后才会实际下单并占用资金。

不同交易所对条件单的支持程度及具体参数可能有所差异,使用前请查阅对应交易所的 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 的实现。