如题, 有的交易所经常出现不可控错误,导致机器人停止。因此想通过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(Interval*DB);//超时再等2秒 if(ticker){ HuoCenKline(ticker); return ticker;//正确出口orders=[];与orders=null;前者orders.length=0;后者orders.length将出错! } else Sleep(Math.pow(DB,j)*Interval*DB);//休息DB=2的j+1次方秒14+4.5*3=27.52秒最大等待时间 } return 0;//接口不行 }//设了超时
congcong009 你们都选择js么?我选的python,现在头大啊,各种库和参考都没js丰富,哭···
nxtplayer 需要额外独立写一个脚本运行,比如每隔10分钟扫描一下机器人是否还在运行。现在我的商品期货就是用脚本来实现休盘、周末关闭机器人,开盘了自动开机器人。
小草 做好容错就行了,接口报错也不影响策略运行 https://www.fmz.com/bbs-topic/4158
congcong009 没有哦,好多库,比如基本库、划线库、期权交易都是 js 为主呢,而且你说的对,参考里面也是 JS 多
nxtplayer 我是直接用python写,然后远程部署到服务器去的。
mingren1992 python库丰富一些吧?当然参考来说JS更强一些
mingren1992 谢谢大神。我是小白哈,管理机器人的API我也会这写这段代码。关键是我是一键租用托管者,不太会后端,那段管理机器人的代码是怎么放在服务器呢?是另外新建一个机器人【管理机器人代码】,去管理另一个机器人【策略代码】吗?
nxtplayer 平台有管理机器人的api,写一个放在服务器运行就好了。
mingren1992 多谢哈,这个脚本是在什么地方写和运行呢?我看FMZ只是有个main来写策略,这个脚本具体也在FMZ平台上运行?
小草 你是说GetOrder吗,出错了怎么可能会停止呢,返回null说明没有订单信息或网络出错,再处理就行了
mingren1992 刚刚好像解决了那个问题。onexit可以解决这个问题。
mingren1992 是的,其实初级教程有看过,但其实没解决我的问题。关键是:1.重试函数只适用于FMZ包装后的getticker等函数,我用的多为IO,无法重试。2、try catch,比如setorder,根本catch不到错误,catch里的语句就没执行。3、关于null的判断,前面比如Setorder出错了,机器人直接就停止了,压根就到不了null与否的判断。
小草 出错正常,做好容错就行了,初级教程里有例子
mingren1992 收到,多谢,请教下哈,就是比如bitmex的经常过载,导致机器人出现错误停止,针对这类接口报错,怎么容错呢?我用try catch都捕捉不到相应的错误,所以头大
mingren1992 收到,多谢,请教下哈,就是比如bitmex的经常过载,导致机器人出现错误停止,针对这类接口报错,怎么容错呢?我用try catch都捕捉不到相应的错误啊