如何基于订单备注返回MQL4中特定持仓订单的当前盈利
MQL4获取指定备注持仓订单的单个盈利
你的现有代码会累加所有备注为Testing的持仓订单盈利,因为循环里每找到一个符合条件的订单,就把盈利加到Profit变量中。如果要获取某一个符合条件的订单盈利,得调整逻辑,找到目标订单后停止遍历,直接取它的盈利即可。
修改后的代码示例:
double GetTestingOrderProfit() { double targetProfit = 0.0; // 遍历所有持仓订单,MODE_TRADES确保只处理当前持仓 for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { // 用StringCompare做字符串匹配,第三个参数false表示忽略大小写(按需调整) if(StringCompare(OrderComment(), "Testing", false) == 0) { // 计算该订单的实际盈利:盈利+隔夜利息+手续费 targetProfit = OrderProfit() + OrderSwap() + OrderCommission(); break; // 找到第一个符合条件的订单就退出循环 } } } return targetProfit; }
几个关键调整说明:
OrderSelect添加MODE_TRADES参数,避免误处理历史订单,确保只遍历当前持仓的订单- 用
StringCompare替代直接的==比较字符串,能灵活控制是否区分大小写,比直接相等判断更可靠 - 找到目标订单后用
break终止循环,只获取第一个符合条件的订单盈利;如果需要获取最后一个,就去掉break,循环结束后返回最后一次赋值的targetProfit
内容的提问来源于stack exchange,提问作者Dr.Prog
相关产品推荐
相关产品推荐

