前两天把用了好几年的MT4 EA往MT5上搬,结果直接懵了。系统是Win11 23H2,MT4 build 1420,MT5 build 4260,同一个EA源码在MT4里编译正常,换到MT5的MetaEditor里一编译就炸。
最典型的是OrderSend那套参数,MT4里七个参数写得顺顺的,MT5里结构完全变了,提示'OrderSend' - wrong parameters count,还有一堆关于MqlTradeRequest的报错。我试过改后缀、复制粘贴、甚至把MT4的.ex4文件直接丢进MT5的Experts目录,结果MT5根本不认,加载列表里都看不到。
后来查了下好像MT4用的是MQL4,MT5是MQL5,语法虽然像但底层交易函数和订单模型不是一回事,MT4那套OrderClose、OrderModify在MT5里得换成OrderSend加trade request结构体。我现在卡在持仓遍历这块,MT4的OrderSelect循环逻辑搬到MT5里老是取不到单子,PositionGetTicket返回0,不知道是不是magic number过滤写错了。
有没有从MT4迁到MT5踩过同样坑的朋友?你们当时是重写还是用兼容库过渡的?求指点一下思路🙏
最典型的是OrderSend那套参数,MT4里七个参数写得顺顺的,MT5里结构完全变了,提示'OrderSend' - wrong parameters count,还有一堆关于MqlTradeRequest的报错。我试过改后缀、复制粘贴、甚至把MT4的.ex4文件直接丢进MT5的Experts目录,结果MT5根本不认,加载列表里都看不到。
后来查了下好像MT4用的是MQL4,MT5是MQL5,语法虽然像但底层交易函数和订单模型不是一回事,MT4那套OrderClose、OrderModify在MT5里得换成OrderSend加trade request结构体。我现在卡在持仓遍历这块,MT4的OrderSelect循环逻辑搬到MT5里老是取不到单子,PositionGetTicket返回0,不知道是不是magic number过滤写错了。
有没有从MT4迁到MT5踩过同样坑的朋友?你们当时是重写还是用兼容库过渡的?求指点一下思路🙏
