void f0_0 int cmd_0; RefreshRates; int order_total_4 = OrdersTotal; double Ld_8 = 0; double Ld_16 = 0; if order_total_4 0 for G_pos_320 = order_total_4 - 1; G_pos_320 = 0; G_pos
此程序是一段MQL4代码,是一个函数f0_0,主要作用是关闭所有的交易订单,并删除所有的未执行订单。
程序首先调用RefreshRates()函数,更新市场行情数据。然后获取当前所有订单的数量,存储在变量order_total_4中。
如果当前有订单,则进入第一个for循环,从最近的订单开始遍历。如果该订单是当前交易符号(AllSymbols为FALSE)或所有交易符号(AllSymbols为TRUE),并且是该EA的魔术数字(AllOrders为FALSE)或所有魔术数字(AllOrders为TRUE),则执行相应的操作。
如果该订单是买入订单(OP_BUY),并且趋势模式(TrendingMode)为TRUE,且止损价大于开盘价,则跳过该订单。否则,执行OrderClose()函数,平仓该订单,并将收益、佣金和交易费用加到变量Ld_8中。
如果该订单是卖出订单(OP_SELL),并且趋势模式(TrendingMode)为TRUE,且止损价大于开盘价,则跳过该订单。否则,执行OrderClose()函数,平仓该订单,并将收益、佣金和交易费用加到变量Ld_16中。
如果该订单不是买入或卖出订单,则执行相应的操作。
第二个for循环与第一个相似,但是只处理未执行订单(包括买入停止、买入限价、卖出停止和卖出限价订单)。如果订单满足条件,则执行OrderDelete()函数,删除该订单。
最后,程序检查是否有错误(Gi_488小于0),如果有,则输出错误信息,并等待一段时间后再次更新市场行情数据。
总之,此程序的主要目的是关闭所有订单,并删除所有未执行订单,以确保EA不会在下一次运行时遗留不必要的订单或订单
原文地址: https://www.cveoy.top/t/topic/f4Pm 著作权归作者所有。请勿转载和采集!