_C

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

回调函数执行时的返回值。 除假值空值以外的所有平台支持类型(any)。

_C(pfn) _C(pfn, …args)

参数pfn为函数引用,是一个回调函数。 pfn true function 回调函数的参数,参数arg可能有多个。参数arg的类型与个数取决于回调函数的参数定义。 arg false string / number / bool / object / array / function / any (平台支持的任意类型)


function main(){
    var ticker = _C(exchange.GetTicker)
    // 调整_C()函数重试时间间隔为2秒
    _CDelay(2000)
    var depth = _C(exchange.GetDepth)
    Log(ticker)
    Log(depth)
}

def main():
    ticker = _C(exchange.GetTicker)
    _CDelay(2000)
    depth = _C(exchange.GetDepth)
    Log(ticker)
    Log(depth)

void main() {
    auto ticker = _C(exchange.GetTicker);
    _CDelay(2000);
    auto depth = _C(exchange.GetDepth);
    Log(ticker);
    Log(depth);
}
对于无参数的函数容错:

function main(){
    var records = _C(exchange.GetRecords, PERIOD_D1)
    Log(records)
}

def main():
    records = _C(exchange.GetRecords, PERIOD_D1)
    Log(records)

void main() {
    auto records = _C(exchange.GetRecords, PERIOD_D1);
    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) cpp // C++ 不支持这种方式对于自定义函数容错”` 也可以用于自定义函数的容错处理:

_C()函数会持续调用指定函数直到成功返回(当参数pfn引用的函数返回空值假值时会重试调用pfn)。

例如_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())