输入/搜索内容
内置函数
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.ModifyConditionOrder()函数用于修改现有的条件单,可修改条件单的下单量、触发条件和执行价格。支持通过附加参数修改条件单的其它属性(具体取决于交易所API的支持情况)。

exchange.ModifyConditionOrder(orderId, side, amount, condition)

示例

  • 修改条件单的数量和触发条件。

    javascript
    function main() { // 创建一个止盈条件单 var condition = { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 77, TpOrderPrice: 76 } var id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, condition) Log("Original Condition Order ID:", id) Sleep(2000) // 查询原始条件单信息 var order = exchange.GetConditionOrder(id) Log("Original Condition Order Info:", order) Sleep(1000) // 修改条件单的数量和触发条件 var newCondition = { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 75, TpOrderPrice: 71 } var newId = exchange.ModifyConditionOrder(id, "buy", 2, newCondition) Log("Modified Condition Order ID:", newId) Sleep(2000) // 查询修改后的条件单信息 var newOrder = exchange.GetConditionOrder(newId) Log("Modified Condition Order Info:", newOrder) // 取消条件单 exchange.CancelConditionOrder(newId) }
    python
    def main(): # 创建一个止盈条件单 condition = { "ConditionType": ORDER_CONDITION_TYPE_TP, "TpTriggerPrice": 77, "TpOrderPrice": 76 } id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, condition) Log("Original Condition Order ID:", id) Sleep(2000) # 查询原始条件单信息 order = exchange.GetConditionOrder(id) Log("Original Condition Order Info:", order) Sleep(1000) # 修改条件单的数量和触发条件 newCondition = { "ConditionType": ORDER_CONDITION_TYPE_TP, "TpTriggerPrice": 75, "TpOrderPrice": 71 } newId = exchange.ModifyConditionOrder(id, "buy", 2, newCondition) Log("Modified Condition Order ID:", newId) Sleep(2000) # 查询修改后的条件单信息 newOrder = exchange.GetConditionOrder(newId) Log("Modified Condition Order Info:", newOrder) # 取消条件单 exchange.CancelConditionOrder(newId)
    rust
    fn main() { // 创建一个止盈条件单 let condition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 77.0, TpOrderPrice: 76.0, ..Default::default() }; let id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, &condition).unwrap(); Log!("Original Condition Order ID:", id); Sleep(2000); // 查询原始条件单信息 let order = exchange.GetConditionOrder(&id); Log!("Original Condition Order Info:", order); Sleep(1000); // 修改条件单的数量和触发条件 let newCondition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 75.0, TpOrderPrice: 71.0, ..Default::default() }; let newId = exchange.ModifyConditionOrder(&id, "buy", 2, &newCondition).unwrap(); Log!("Modified Condition Order ID:", newId); Sleep(2000); // 查询修改后的条件单信息 let newOrder = exchange.GetConditionOrder(&newId); Log!("Modified Condition Order Info:", newOrder); // 取消条件单 let _ = exchange.CancelConditionOrder(&newId); }
    c++
    void main() { // 创建一个止盈条件单 OrderCondition condition = {.ConditionType = ORDER_CONDITION_TYPE_TP, .TpTriggerPrice = 77, .TpOrderPrice = 76}; auto id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, condition); Log("Original Condition Order ID:", id); Sleep(2000); // 查询原始条件单信息 auto order = exchange.GetConditionOrder(id); Log("Original Condition Order Info:", order); Sleep(1000); // 修改条件单的数量和触发条件 OrderCondition newCondition = {.ConditionType = ORDER_CONDITION_TYPE_TP, .TpTriggerPrice = 75, .TpOrderPrice = 71}; auto newId = exchange.ModifyConditionOrder(id, "buy", 2, newCondition); Log("Modified Condition Order ID:", newId); Sleep(2000); // 查询修改后的条件单信息 auto newOrder = exchange.GetConditionOrder(newId); Log("Modified Condition Order Info:", newOrder); // 取消条件单 exchange.CancelConditionOrder(newId); }
  • 使用附加参数(option)修改条件单的触发价格类型。

    javascript
    function main() { // 创建一个止盈条件单 var condition = { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 77, TpOrderPrice: 76 } var id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, condition) Log("Original Condition Order ID:", id) Sleep(2000) // 修改条件单,并将触发价格类型设置为指数价格(index) // 通过 side 参数传递附加参数(JSON 格式) var option = {"newTpTriggerPxType": "index"} var sideWithOption = "buy;" + JSON.stringify(option) var newCondition = { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 75, TpOrderPrice: 71 } var newId = exchange.ModifyConditionOrder(id, sideWithOption, 2, newCondition) Log("Modified Condition Order ID:", newId) Sleep(2000) // 查询修改后的条件单信息 var newOrder = exchange.GetConditionOrder(newId) Log("Modified Condition Order Info:", newOrder) // 取消条件单 exchange.CancelConditionOrder(newId) }
    python
    import json def main(): # 创建一个止盈条件单 condition = { "ConditionType": ORDER_CONDITION_TYPE_TP, "TpTriggerPrice": 77, "TpOrderPrice": 76 } id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, condition) Log("Original Condition Order ID:", id) Sleep(2000) # 修改条件单,并将触发价格类型设置为指数价格(index) # 通过 side 参数传递附加参数(JSON 格式) option = {"newTpTriggerPxType": "index"} sideWithOption = "buy;" + json.dumps(option) newCondition = { "ConditionType": ORDER_CONDITION_TYPE_TP, "TpTriggerPrice": 75, "TpOrderPrice": 71 } newId = exchange.ModifyConditionOrder(id, sideWithOption, 2, newCondition) Log("Modified Condition Order ID:", newId) Sleep(2000) # 查询修改后的条件单信息 newOrder = exchange.GetConditionOrder(newId) Log("Modified Condition Order Info:", newOrder) # 取消条件单 exchange.CancelConditionOrder(newId)
    rust
    fn main() { // 创建一个止盈条件单 let condition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 77.0, TpOrderPrice: 76.0, ..Default::default() }; let id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, &condition).unwrap(); Log!("Original Condition Order ID:", id); Sleep(2000); // 修改条件单,并将触发价格类型设置为指数价格(index) // 通过 side 参数传递附加参数(JSON 格式;Rust 无 JSON 序列化,故直接使用原始字符串构造) let sideWithOption = r#"buy;{"newTpTriggerPxType": "index"}"#; let newCondition = OrderCondition { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 75.0, TpOrderPrice: 71.0, ..Default::default() }; let newId = exchange.ModifyConditionOrder(&id, sideWithOption, 2, &newCondition).unwrap(); Log!("Modified Condition Order ID:", newId); Sleep(2000); // 查询修改后的条件单信息 let newOrder = exchange.GetConditionOrder(&newId); Log!("Modified Condition Order Info:", newOrder); // 取消条件单 let _ = exchange.CancelConditionOrder(&newId); }
    c++
    void main() { // 创建一个止盈条件单 OrderCondition condition = {.ConditionType = ORDER_CONDITION_TYPE_TP, .TpTriggerPrice = 77, .TpOrderPrice = 76}; auto id = exchange.CreateConditionOrder("SOL_USDT.swap", "buy", 1, condition); Log("Original Condition Order ID:", id); Sleep(2000); // 修改条件单,并将触发价格类型设置为指数价格(index) // 通过 side 参数传递附加参数(JSON 格式) json option = R"({"newTpTriggerPxType": "index"})"_json; string sideWithOption = "buy;" + option.dump(); OrderCondition newCondition = {.ConditionType = ORDER_CONDITION_TYPE_TP, .TpTriggerPrice = 75, .TpOrderPrice = 71}; auto newId = exchange.ModifyConditionOrder(id, sideWithOption, 2, newCondition); Log("Modified Condition Order ID:", newId); Sleep(2000); // 查询修改后的条件单信息 auto newOrder = exchange.GetConditionOrder(newId); Log("Modified Condition Order Info:", newOrder); // 取消条件单 exchange.CancelConditionOrder(newId); }

返回值

类型描述

string / 空值

修改条件单成功时返回条件单ID,修改失败时返回空值。返回的条件单ID可能与原条件单ID相同,也可能不同,这取决于交易所API的具体实现方式。某些交易所在修改条件单后会返回新的条件单ID,而有些交易所则保持条件单ID不变。

参数

名称类型必填描述

orderId

string

参数orderId用于指定待修改的原条件单ID。条件单ID的格式与exchange.CreateConditionOrder函数返回的条件单ID一致,由交易所品种代码和交易所原始条件单ID组成,两者以英文逗号分隔。例如:"SOL-USDT-SWAP,3196255845130256384"

side

string

参数side用于指定条件单的交易方向。
对于现货交易所对象,side参数的可选值为:buysellbuy表示买入,sell表示卖出。
对于期货交易所对象,side参数的可选值为:buyclosebuysellclosesellbuy表示开多仓,closebuy表示平多仓,sell表示开空仓,closesell表示平空仓。

支持附加参数(option):可以通过side参数传递附加参数,格式为:"side;{JSON对象}""side;key=value&key=value"
例如:"buy;{\"newTpTriggerPxType\":\"index\"}""buy;newTpTriggerPxType=index"
附加参数用于修改条件单的其它属性(如触发价格类型等),具体支持的参数取决于交易所API。

amount

number

参数amount用于设置条件单的新下单量。当数量为-1时表示不修改下单量。对于期货交易所对象,下单量参数amount均以合约张数为单位。

condition

object

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

参考

备注

exchange.ModifyConditionOrder()函数返回的条件单ID因交易所API实现的不同而可能表现出不同行为。有些交易所API返回的条件单ID会更新,有些则保持不变。建议使用返回的新条件单ID进行后续操作。

exchange.ModifyConditionOrder()函数不会依据交易所接口规则校验参数的有效性,而是将参数直接提交给交易所API。传入无效参数时(如数量为-1),该参数可能会被交易所忽略,条件单保持原有属性不变。

支持通过side参数传递附加参数(option),用于修改条件单的其它属性。附加参数需要与side参数合并传入,格式为"side;{JSON对象}"(推荐)或"side;key=value"(URL编码格式)。例如修改触发价格类型:"buy;{\"newTpTriggerPxType\":\"index\"}"

对于条件单的市价单修改,需要具体查看交易所API是否支持。将condition参数中的TpOrderPriceSlOrderPrice设置为-1表示市价单。

修改条件单时,条件单的其它属性(如条件类型、持仓模式、账户模式、杠杆等)通常会保留原条件单的设置。如需修改这些属性,可以通过附加参数(option)传入,前提是交易所API支持。

可以通过附加参数修改触发价格类型,例如将触发价格类型从最新价(last)修改为指数价格(index)或标记价格(mark)。具体的参数名称和支持情况取决于交易所API文档。

修改条件单功能的支持情况取决于具体交易所,部分交易所可能不支持修改条件单功能,或仅支持修改部分参数。使用前请查阅对应交易所的API文档。