Попробуйте заново функцию допустимости ошибок интерфейса.
Возвратное значение функции обратного вызова при ее выполнении. Все типы поддерживаются системой, кромеЛогическое ложное значениеинулевое значение.
_C (((pfn) _C ((pfn,...args)
Параметрpfn
является функцией ссылки, которая являетсяфункция обратного вызова- Да.
пфн
неправда
Функция
Параметры дофункции обратного вызова, может быть более одного параметраarg
. Тип и количество параметровarg
зависит от параметровфункция обратного вызова- Да.
арг
ложное
строка, число, bool, объект, массив, функция, все типы поддерживаются системой, такие как нулевые значения
function main(){
var ticker = _C(exchange.GetTicker)
// Adjust _C() function retry interval to 2 seconds
_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);
}
Для функций с параметрами, которые допускают ошибки:
var test = function(a, b){
var time = new Date().getTime() / 1000
if(time % b == 3){
Log("Eligible!", "#FF0000")
return true
}
Log("Retry!", "#FF0000")
return false
}
function main(){
var ret = _C(test, 1, 5)
Log(ret)
}
import time
def test(a, b):
ts = time.time()
if ts % b == 3:
Log("Eligible!", "#FF0000")
return True
Log("Retry!", "#FF0000")
return False
def main():
ret = _C(test, 1, 5)
Log(ret)
// C++ does not support fault tolerance for custom functions in this way
Он также может быть использован для отказоустойчивости пользовательских функций:
В_C()
function будет продолжать вызвать указанную функцию, пока она не вернется успешно (функция, на которую ссылается параметр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())
.