例えば,ある取引所では頻繁に制御不能なエラーが発生し,ロボットが停止する.したがって,FMZプラットフォームのexitまたはonerror関数を使用してエラー報告を監視し,拡張APIを使用して自動的に再起動することを試みました.
1 JSのTry catch方法,しかし,catchは,いくつかのインターフェースのエラー報告などには届かない.
2 管理者の掃尾関数 exit が実行可能だが,再起動できない時に main 関数へ進出する.
3 ,js関数。 onerror,圧根は反応していない。
では,APIを監視して,その操作を継続する,より適切な方法はないでしょうか?
function GetTicker() {//获取行情信息并储存
Sleep(200);
var ticker;
for(var j=0;j<3;j++){
var goGetTicker = exchanges[e].Go("GetTicker");//异步去买
if(!goGetTicker)return 0;//网络不行
ticker = goGetTicker.wait(2500);//异步等待结果,1秒超时。Interval=1000
if(typeof(ticker) === "undefined") ticker = goGetTicker.wait(IntervalDB);//超时再等2秒
if(ticker){
HuoCenKline(ticker);
return ticker;//正确出口orders=[];与orders=null;前者orders.length=0;后者orders.length将出错!
}
else Sleep(Math.pow(DB,j)IntervalDB);//休息DB=2的j+1次方秒14+4.53=27.52秒最大等待时间
}
return 0;//接口不行
}//设了超时
谢谢大神。我是小白哈,管理机器人的API我也会这写这段代码。关键是我是一键租用托管者,不太会后端,那段管理机器人的代码是怎么放在服务器呢?是另外新建一个机器人【管理机器人代码】,去管理另一个机器人【策略代码】吗?
收到,多谢,请教下哈,就是比如bitmex的经常过载,导致机器人出现错误停止,针对这类接口报错,怎么容错呢?我用try catch都捕捉不到相应的错误,所以头大
是的,其实初级教程有看过,但其实没解决我的问题。关键是:1.重试函数只适用于FMZ包装后的getticker等函数,我用的多为IO,无法重试。2、try catch,比如setorder,根本catch不到错误,catch里的语句就没执行。3、关于null的判断,前面比如Setorder出错了,机器人直接就停止了,压根就到不了null与否的判断。
- 1

