输入/搜索内容
内置函数
Global
Version
IsVirtual
GetOS
GetPid
GetMeta
Sleep
Unix
UnixNano
_D
GetCommand
GetLastError
SetErrorFilter
_N
_C
_Cross
JSON.parse
JSON.stringify
Encode
MD5
UUID
Log
Market
Trade
Account
Futures
Exchange
IO
Network
Storage
Threads
TA
Talib
OS
结构体
内置变量与常量
通用约定
交易所

重试函数,用于接口容错。

_C(pfn)
_C(pfn, ...args)

示例

  • 对于无参数的函数容错。

    javascript
    function main(){ var ticker = _C(exchange.GetTicker) // 调整_C()函数重试时间间隔为2秒 _CDelay(2000) var depth = _C(exchange.GetDepth) Log(ticker) Log(depth) }
    python
    def main(): ticker = _C(exchange.GetTicker) _CDelay(2000) depth = _C(exchange.GetDepth) Log(ticker) Log(depth)
    rust
    fn main() { let ticker = _C!(exchange.GetTicker(None)); // 调整_C!()宏重试时间间隔为2秒 _CDelay(2000); let depth = _C!(exchange.GetDepth(None)); Log!(ticker); Log!(depth); }
  • 对于有参数的函数容错。

    javascript
    function main(){ var records = _C(exchange.GetRecords, PERIOD_D1) Log(records) }
    python
    def main(): records = _C(exchange.GetRecords, PERIOD_D1) Log(records)
    rust
    fn main() { let records = _C!(exchange.GetRecords(None, PERIOD_D1, None)); Log!(records); }
  • 也可以用于自定义函数的容错处理。

    javascript
    var test = function(a, b){ var time = new Date().getTime() / 1000 if(time % b == 3){ Log("Condition met!", "#FF0000") return true } Log("Retrying!", "#FF0000") return false } function main(){ var ret = _C(test, 1, 5) Log(ret) }
    python
    import time def test(a, b): ts = time.time() if ts % b == 3: Log("Condition met!", "#FF0000") return True Log("Retrying!", "#FF0000") return False def main(): ret = _C(test, 1, 5) Log(ret)
    rust
    fn test(a: i64, b: i64) -> Result<bool> { let time = Unix(); if time % b == 3 { Log!("Condition met!", "#FF0000"); return Ok(true); } Log!("Retrying!", "#FF0000"); Err(Error::Api("retry".to_string())) } fn main() { // Rust 中自定义函数返回 Result 类型即可使用 _C! 宏容错,返回 Err 时会重试 let ret = _C!(test(1, 5)); Log!(ret); }

返回值

类型描述

any

回调函数执行时的返回值(不会是null、undefined、false)。

参数

名称类型必填描述

pfn

function

是

函数引用,是一个回调函数。

arg

string / number / bool / object / array / function / any

否

回调函数的参数,参数arg可能有多个。参数arg的类型与个数根据回调函数的参数而定。

参考

备注

_C()函数会一直调用指定函数直到成功返回(参数pfn引用的函数调用时返回null、undefined或false会重试调用pfn,Python中为None或False;返回0、空字符串等其它值不会重试,直接作为结果返回)。
例如_C(exchange.GetTicker)。默认重试间隔为3秒,可以调用_CDelay()函数来设置重试间隔。
例如_CDelay(1000),指改变_C()函数的重试间隔为1秒。

可以但不限于对以下函数做容错处理:

  • exchange.GetTicker()
  • exchange.GetDepth()
  • exchange.GetTrades()
  • exchange.GetRecords()
  • exchange.GetAccount()
  • exchange.GetOrders()
  • exchange.GetOrder()
  • exchange.GetPositions()

都可以通过_C()函数来调用进行容错。_C()函数不局限于以上列出的函数容错,参数pfn是函数引用并非函数调用,注意是_C(exchange.GetTicker)并不是_C(exchange.GetTicker())。