EA在正常运行过程中,万一程序某个BUG或极端数据导致EA奔溃了,但还有持仓,这种情况发生了其实非常严重,因为没有监控报警,更不可能一直在电脑前盯着,所以也不知道EA什么时候就挂了,会导致不可预估的风险。如何让EA在崩溃后能够快速自动重新加载到图表继续工作?或者有没有一种机制,像守护进程一样,一个实例挂了立即启动新的实例,确保EA一直在运行?求大神或官方能提供解决方案?非常重要!!!
补充1: 官方提供了移除EA的函数,不支持加载EA的函数
ExpertRemove
函数停止 EA交易 并从图表中卸载。
补充2:官方提供了一个叫服务的东东,其实到今天我也没搞懂这个服务怎么玩,官方明确指出服务中禁止的函数 ExpertRemove ,我想如果有加载的函数,服务也无法实现和解决守护问题
以下是官方文档提供对服务的介绍, 官网提供的这个示例,也完全看不懂,服务做了什么?
加载和卸载服务
如果服务在程序端关闭时启动,那么在启动程序端后立即加载这些服务。服务在完成工作后被立即卸载。
服务有一个OnStart()处理程序,在此程序中,您可以实现无休止的数据接收和处理循环,例如使用网络函数创建和更新自定义交易品种。
与EA交易、指标和脚本不同,服务并不绑定特定的图表,因此为其启动提供一个单独的机制。使用“添加服务”命令,在导航中创建一个新服务实例。可以使用对应的实例菜单启动、停止和移除服务实例。要管理所有实例,请使用服务菜单。
为了更好地理解EA交易的操作,我们推荐如下的EA交易编译代码,并执行装载/卸载,模板转变,样本转变,事件表转变等等:
示例:
可以通过加载模板的函数加载EA。
谢谢,这是一个解决方案
EA在正常运行过程中,万一程序某个BUG或极端数据导致EA奔溃了,但还有持仓,这种情况发生了其实非常严重,因为没有监控报警,更不可能一直在电脑前盯着,所以也不知道EA什么时候就挂了,会导致不可预估的风险。如何让EA在崩溃后能够快速自动重新加载到图表继续工作?或者有没有一种机制,像守护进程一样,一个实例挂了立即启动新的实例,确保EA一直在运行?求大神或官方能提供解决方案?非常重要!!!
补充1: 官方提供了移除EA的函数,不支持加载EA的函数
ExpertRemove
函数停止 EA交易 并从图表中卸载。
补充2:官方提供了一个叫服务的东东,其实到今天我也没搞懂这个服务怎么玩,官方明确指出服务中禁止的函数 ExpertRemove ,我想如果有加载的函数,服务也无法实现和解决守护问题
以下是官方文档提供对服务的介绍, 官网提供的这个示例,也完全看不懂,服务做了什么?
加载和卸载服务
如果服务在程序端关闭时启动,那么在启动程序端后立即加载这些服务。服务在完成工作后被立即卸载。
服务有一个OnStart()处理程序,在此程序中,您可以实现无休止的数据接收和处理循环,例如使用网络函数创建和更新自定义交易品种。
与EA交易、指标和脚本不同,服务并不绑定特定的图表,因此为其启动提供一个单独的机制。使用“添加服务”命令,在导航中创建一个新服务实例。可以使用对应的实例菜单启动、停止和移除服务实例。要管理所有实例,请使用服务菜单。
为了更好地理解EA交易的操作,我们推荐如下的EA交易编译代码,并执行装载/卸载,模板转变,样本转变,事件表转变等等:
示例:
如果你的EA设计缜密,通过了回测测试,并且测试日志没有错误,理论上出现崩溃的概率为0,EA奔溃的原因一般都是逻辑错误,或特例情况没有考虑周全,但这并不是EA的错,是编程人员的错误,所以设计一个自动加载EA函数没有意义,可以通过其它间接方式解决
同意樓上的說法 如果邏輯上沒問題原則上是不會出現崩潰的
提供兩個我常犯的錯誤 在編譯或回測時通常沒問題 但是上了實盤或模擬就會出現崩潰
1/. 計算式除數為零
Ex. z=a+b/c;
X=y/z;
z為變量 沒考慮到計算後會成為零
2/. 暫存器超出範圍
Ex for(int i=OrdersTotal();i>=0;i--)
z=Close[i-1];
z超出了計算範圍
看你的意思你所谓的崩溃就是“EA自己从图表卸载了”,这种情况除非是你的程序有问题,否则不会发生。
EA如果出现了运行时的严重错误,比如数组越界,做除法时分母是0,还有就是堆上new出来的对象没有释放导致内存泄漏,将会导致EA从图表自动卸载。
我的EA挂了大半年,没有出现任何问题, 只要注意这几点,就不会发生崩溃。
我的程序 占用内存一直在涨 有没有好的办法
有没单位时间重新载入EA的函数
稀奇,EA还能崩溃。
肯定是EA里哪段代码有问题,不具严谨性。
EA在正常运行过程中,万一程序某个BUG或极端数据导致EA奔溃了,但还有持仓,这种情况发生了其实非常严重,因为没有监控报警,更不可能一直在电脑前盯着,所以也不知道EA什么时候就挂了,会导致不可预估的风险。如何让EA在崩溃后能够快速自动重新加载到图表继续工作?或者有没有一种机制,像守护进程一样,一个实例挂了立即启动新的实例,确保EA一直在运行?求大神或官方能提供解决方案?非常重要!!!
补充1: 官方提供了移除EA的函数,不支持加载EA的函数
ExpertRemove
函数停止 EA交易 并从图表中卸载。
补充2:官方提供了一个叫服务的东东,其实到今天我也没搞懂这个服务怎么玩,官方明确指出服务中禁止的函数 ExpertRemove ,我想如果有加载的函数,服务也无法实现和解决守护问题
以下是官方文档提供对服务的介绍, 官网提供的这个示例,也完全看不懂,服务做了什么?
加载和卸载服务
如果服务在程序端关闭时启动,那么在启动程序端后立即加载这些服务。服务在完成工作后被立即卸载。
服务有一个OnStart()处理程序,在此程序中,您可以实现无休止的数据接收和处理循环,例如使用网络函数创建和更新自定义交易品种。
与EA交易、指标和脚本不同,服务并不绑定特定的图表,因此为其启动提供一个单独的机制。使用“添加服务”命令,在导航中创建一个新服务实例。可以使用对应的实例菜单启动、停止和移除服务实例。要管理所有实例,请使用服务菜单。
为了更好地理解EA交易的操作,我们推荐如下的EA交易编译代码,并执行装载/卸载,模板转变,样本转变,事件表转变等等:
示例: