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

exchange.ModifyOrder(orderId, side, price, amount)

示例

  • 修改普通订单的价格和数量。

    javascript
    function main() { // 创建一个限价买单 var id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1) Log("Original Order ID:", id) Sleep(2000) // 查询原始订单信息 var order = exchange.GetOrder(id) Log("Original Order Info:", order) Sleep(1000) // 修改订单的价格和数量 var newId = exchange.ModifyOrder(id, "buy", 77, 2) Log("Modified Order ID:", newId) Sleep(2000) // 查询修改后的订单信息 var newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) // 取消订单 exchange.CancelOrder(newId) }
    python
    def main(): # 创建一个限价买单 id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1) Log("Original Order ID:", id) Sleep(2000) # 查询原始订单信息 order = exchange.GetOrder(id) Log("Original Order Info:", order) Sleep(1000) # 修改订单的价格和数量 newId = exchange.ModifyOrder(id, "buy", 77, 2) Log("Modified Order ID:", newId) Sleep(2000) # 查询修改后的订单信息 newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) # 取消订单 exchange.CancelOrder(newId)
    rust
    fn main() { // 创建一个限价买单 let id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1).unwrap(); Log!("Original Order ID:", id); Sleep(2000); // 查询原始订单信息 let order = exchange.GetOrder(&id).unwrap(); Log!("Original Order Info:", order); Sleep(1000); // 修改订单的价格和数量 let newId = exchange.ModifyOrder(&id, "buy", 77, 2).unwrap(); Log!("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 let newOrder = exchange.GetOrder(&newId).unwrap(); Log!("Modified Order Info:", newOrder); // 取消订单 let _ = exchange.CancelOrder(&newId); }
    c++
    void main() { // 创建一个限价买单 auto id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1); Log("Original Order ID:", id); Sleep(2000); // 查询原始订单信息 auto order = exchange.GetOrder(id); Log("Original Order Info:", order); Sleep(1000); // 修改订单的价格和数量 auto newId = exchange.ModifyOrder(id, "buy", 77, 2); Log("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 auto newOrder = exchange.GetOrder(newId); Log("Modified Order Info:", newOrder); // 取消订单 exchange.CancelOrder(newId); }
  • 使用附加参数(option)修改订单的价格匹配模式。

    javascript
    function main() { // 创建一个限价买单 var id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1) Log("Original Order ID:", id) Sleep(2000) // 修改订单,并将价格匹配模式设置为 QUEUE_20 // 通过 side 参数传递附加参数(JSON 格式) var option = {"priceMatch": "QUEUE_20"} var sideWithOption = "buy;" + JSON.stringify(option) var newId = exchange.ModifyOrder(id, sideWithOption, -1, 2) Log("Modified Order ID:", newId) Sleep(2000) // 查询修改后的订单信息 var newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) // 撤销订单 exchange.CancelOrder(newId) }
    python
    import json def main(): # 创建一个限价买单 id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1) Log("Original Order ID:", id) Sleep(2000) # 修改订单,并将价格匹配模式设置为 QUEUE_20 # 通过 side 参数传递附加参数(JSON 格式) option = {"priceMatch": "QUEUE_20"} sideWithOption = "buy;" + json.dumps(option) newId = exchange.ModifyOrder(id, sideWithOption, -1, 2) Log("Modified Order ID:", newId) Sleep(2000) # 查询修改后的订单信息 newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) # 撤销订单 exchange.CancelOrder(newId)
    rust
    fn main() { // 创建一个限价买单 let id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1).unwrap(); Log!("Original Order ID:", id); Sleep(2000); // 修改订单,并将价格匹配模式设置为 QUEUE_20 // 通过 side 参数传递附加参数(JSON 格式);Rust 不支持 JSON.stringify,因此直接使用原始字符串构造 JSON 文本 let option = r#"{"priceMatch": "QUEUE_20"}"#; let sideWithOption = format!("buy;{}", option); let newId = exchange.ModifyOrder(&id, &sideWithOption, -1, 2).unwrap(); Log!("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 let newOrder = exchange.GetOrder(&newId).unwrap(); Log!("Modified Order Info:", newOrder); // 撤销订单 let _ = exchange.CancelOrder(&newId); }
    c++
    void main() { // 创建一个限价买单 auto id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1); Log("Original Order ID:", id); Sleep(2000); // 修改订单,并将价格匹配模式设置为 QUEUE_20 // 通过 side 参数传递附加参数(JSON 格式) json option = R"({"priceMatch": "QUEUE_20"})"_json; string sideWithOption = "buy;" + option.dump(); auto newId = exchange.ModifyOrder(id, sideWithOption, -1, 2); Log("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 auto newOrder = exchange.GetOrder(newId); Log("Modified Order Info:", newOrder); // 撤销订单 exchange.CancelOrder(newId); }

返回值

类型描述

string / 空值

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

参数

名称类型必填描述

orderId

string

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

side

string

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

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

对于期货交易所对象,side参数的可选值为:buyclosebuysellclosesell。其中buy表示开多仓,closebuy表示平多仓,sell表示开空仓,closesell表示平空仓。

支持附加参数(option):可通过side参数传递附加参数,格式为"side;{JSON对象}""side;key=value&key=value"

例如:"buy;{\"priceMatch\":\"QUEUE_20\"}""buy;priceMatch=QUEUE_20"

附加参数用于修改订单的其它属性(如价格匹配模式等),具体支持的参数取决于交易所 API。

price

number

参数price用于设置订单的新价格。当价格为 -1 时表示不修改价格,或根据交易所 API 的实现,可能转为市价单。

amount

number

参数amount用于设置订单的新下单量。当数量为 -1 时表示不修改数量。需要注意的是,当订单为现货市价买单时,下单量表示买入金额;个别现货交易所的市价买单,其下单量为交易币的数量。

参考

备注

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

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

支持通过side参数传递附加参数(option),用于修改订单的其它属性。附加参数需与side参数合并后传入,格式为"side;{JSON对象}"(推荐)或"side;key=value"(URL 编码格式)。例如,修改价格匹配模式:"buy;{\"priceMatch\":\"QUEUE_20\"}"

对于普通订单的市价单修改,需具体查看交易所 API 是否支持。有些交易所不支持对市价单进行修改操作。

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

个别交易所 API 在未接收到价格参数时(price 为 -1 或 null),可能会将订单转为市价单。对于现货市价买单,需要注意其下单量单位可能是金额而非币数。

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