重试函数,用于接口调用的容错处理。
回调函数执行后的返回值。 除假值和空值以外的所有平台支持类型(any)。
_C(pfn) _C(pfn, …args)
参数pfn
为函数引用,是一个回调函数。
pfn
true
function
回调函数的参数,参数arg
可以有多个。参数arg
的类型和数量取决于回调函数的参数定义。
arg
false
string / number / bool / object / array / function / any (系统支持的所有类型)
”`javascript function main(){ // 鉴于测试代码,不使用商品期货策略的通用架构,此处仅判断exchange.IO(“status”)函数,在确认连接期货公司前置机成功后立即执行测试代码。股票证券无需使用exchange.IO(“status”)判断连接状态 while(!exchange.IO(“status”)) { Sleep(1000) }
// 测试代码部分
// 设置合约为rb888(螺纹钢主力连续合约),或设置股票代码
exchange.SetContractType("rb888")
var ticker = _C(exchange.GetTicker)
// 调整_C()函数的重试时间间隔为2秒
_CDelay(2000)
var depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)
}
python
def main():
while not exchange.IO(“status”):
Sleep(1000)
exchange.SetContractType("rb888")
ticker = _C(exchange.GetTicker)
_CDelay(2000)
depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)```
”`cpp void main() { while(exchange.IO(“status”) == 0) { Sleep(1000); }
exchange.SetContractType("rb888");
auto ticker = _C(exchange.GetTicker);
_CDelay(2000);
auto depth = _C(exchange.GetDepth);
Log(ticker);
Log(depth);
}
对于无参数函数的容错处理:
javascript
function main(){
// 鉴于测试代码,不使用商品期货策略的通用架构,此处仅判断exchange.IO(“status”)函数,在确认连接期货公司前置机成功后立即执行测试代码。股票证券无需使用exchange.IO(“status”)判断连接状态
while(!exchange.IO(“status”)) {
Sleep(1000)
}
// 测试代码部分
// 设置合约为rb888(螺纹钢主力连续合约),或设置股票代码
exchange.SetContractType("rb888")
var records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)
}
python
def main():
while not exchange.IO(“status”):
Sleep(1000)
exchange.SetContractType("rb888")
records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)```
”`cpp void main() { while(exchange.IO(“status”) == 0) { Sleep(1000); }
exchange.SetContractType("rb888");
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(“符合条件!”, “#FF0000”)
return true
}
Log(“重试!”, “#FF0000”)
return false
}
function main(){
// 不使用接口获取数据的测试,无需使用exchange.IO(“status”)函数判断连接状态,也不必设置合约代码,因为此处仅用于测试自定义函数
var ret = _C(test, 1, 5)
Log(ret)
}
python
import time
def test(a, b):
ts = time.time()
if ts % b == 3:
Log(“符合条件!”, “#FF0000”)
return True
Log(“重试!”, “#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())
。