关于MT5 Symbol()加入循环之后取得的结果失真 问题 新评论 dvarlife 2023.04.06 05:36 在函数中加入Symbol()后结果失真 下面是代码: 假设取一个多头总手数 int BuyLots() { int Lotsz=0; for(int i=0; i<PositionsTotal(); i++) if(PositionSelectByTicket(PositionGetTicket(i))) if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) if(PositionGetSymbol(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT) Lotsz+= PositionGetDouble(POSITION_VOLUME); return(Lotsz); } 如此写的话,计算出来的结果失真; 如果这样写 int BuyLots() { int Lotsz=0; for(int i=0; i<PositionsTotal(); i++) if(PositionSelectByTicket(PositionGetTicket(i))) if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) if(PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT) Lotsz+= PositionGetDouble(POSITION_VOLUME); return(Lotsz); } 结果又是正常的,哪怕如此写结果也是一样 int BuyLots() { int Lotsz=0; for(int i=0; i<PositionsTotal(); i++) if(PositionSelectByTicket(PositionGetTicket(i))) if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) if(PositionGetSymbol(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT) Lotsz= PositionGetDouble(POSITION_VOLUME) + Lotsz; return(Lotsz); } MT5 分方向平仓问题 求教大神,移动止盈怎么写,请大神帮忙 POSITION_TYPE使用问题 Lin Luo 2023.04.07 05:42 #1 第一眼看到这个初级错误…… Yang Wang 2023.04.07 17:36 #2 如图 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在函数中加入Symbol()后结果失真
下面是代码: 假设取一个多头总手数
int BuyLots()
{
int Lotsz=0;
for(int i=0; i<PositionsTotal(); i++)
if(PositionSelectByTicket(PositionGetTicket(i)))
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
if(PositionGetSymbol(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT)
Lotsz+= PositionGetDouble(POSITION_VOLUME);
return(Lotsz);
}
如此写的话,计算出来的结果失真;
如果这样写
int BuyLots()
{
int Lotsz=0;
for(int i=0; i<PositionsTotal(); i++)
if(PositionSelectByTicket(PositionGetTicket(i)))
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
if(PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT)
Lotsz+= PositionGetDouble(POSITION_VOLUME);
return(Lotsz);
}
结果又是正常的,哪怕如此写结果也是一样
int BuyLots()
{
int Lotsz=0;
for(int i=0; i<PositionsTotal(); i++)
if(PositionSelectByTicket(PositionGetTicket(i)))
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
if(PositionGetSymbol(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT)
Lotsz= PositionGetDouble(POSITION_VOLUME) + Lotsz;
return(Lotsz);
}