inputint MaxOpenedPositions=1;
.
.
.
int Total=TotalPositions(-1);
if(Total<MaxOpenedPositions && другие условия для открытия) OpenBUY();//напримерif(Total<MaxOpenedPositions && другие условия для открытия) OpenSELL();//например//+------------------------------------------------------------------+//| Total Positions |//+------------------------------------------------------------------+int TotalPositions(int Type)
{
int cnt=0;
if(PositionsTotal()>0)
for(int i=PositionsTotal()-1;i>=0;i--)
if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetString(POSITION_SYMBOL)==_Symbol && PositionGetInteger(POSITION_MAGIC)==MagicNumber)
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) {cnt++;continue;}
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) {cnt++;}
}
return(cnt);
}
if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetString(POSITION_SYMBOL)==_Symbol &&
PositionGetInteger(POSITION_MAGIC)==MagicNumber) // вот эта строчка
循环运算符和循环体中的运算符。不完全是经典的俄罗斯人。
当然,一切都很好,但循环体中的迭代器i在哪里?而为了获得位置符号和它的神奇数字,必须先选择它。职位描述是一个结构(在MQL5中,所有的结构和订单和时间和交易),它是通过选择填写的,通过迭代器,它不是一个职位票,而是一个职位号码。 而且我们应该记住,在职位描述结构中,它总是最后的职位选择。
你好,瓦莱里!谢谢你的澄清。
这就是我的困惑所在,因为在没有for 循环操作符的情况下,一切都能正常工作,而在有for 循环操作符的情况下,由于某种原因却不能工作。我没有理解错吧,我应该先通过请求 进行所有必要的查询?
问候,弗拉基米尔。
你好,瓦莱里!谢谢你的澄清。
这就是我的困惑所在,因为在没有for 循环操作符的情况下,一切都能正常工作,但在有for 循环操作符的情况下,由于某种原因,却不能正常工作。我没有理解错,我需要首先通过请求 进行所有必要的查询?
问候,弗拉基米尔。
不,我不太了解MKL5。这是对执行的要求。而你需要通过数字选择位置,以进一步处理它。
位置选择
我想是的。
大家今天好,心情好
亲爱的 专业人士!请给我建议,但不要用语言, 否则我就永远学不会MQL5编程语言了。
问候,弗拉基米尔。你好!问题是你应用了开仓 的循环,你没有用 "如果 "来定义它,即for循环到底寻找什么,而且你还没有完成它,它必须返回什么...
打开的位置一直在计算,所以最好创建一个带有循环的区块,当你打开它时,你可以调用它,例如,这样做。
不,我不太了解MKL5。这是对执行的要求。而你需要通过数字选择一个位置,以便进一步处理它。
位置选择
我想是的。
尝试了所有的方法,包括PositionSelect。他们都没有帮助。
问候,弗拉基米尔。
你好!有话要说;问题是,当你应用开仓 循环时,你没有在 "如果 "条件中指定它,即for循环到底在尝试什么,你也没有以任何方式结束它,它应该返回一些...
开仓是一直在计算的,所以最好是创建一个带循环的区块,比如说在开仓时调用它。
你好!
谢谢你的提示。我将尝试分析和应用你的列举空缺职位的方法。
问候,弗拉基米尔。
你好!话说;重点是当你应用循环搜索空缺职位 时,你没有在 "if "中指定它,即for循环到底搜索什么,你也没有以任何方式结束它,它应该返回一些...
顺便说一下,MQL5参考文献中没有提到循环完成后必须返回一些东西的事实。也许,我误解了什么?或者,它指的是if 语句?
最好的问候,弗拉基米尔。
尝试了所有的方法,包括PositionSelect。没有任何帮助。
问候,弗拉基米尔。
只了解到,是的,在织网中按工具选择位置,而不是按数字选择。哦,他们搞砸了)。
它可以通过
刚刚意识到,是的,在净值化中的仓位选择是按工具,而不是按数字。哦,他们被搞得一团糟)。
它可以通过
所以,这段代码最初是在没有循环运算符的情况下写的,尽管我后来很好奇地想试试。
问候,弗拉基米尔。
顺便说一下,在MQL5参考文献中没有任何关于循环完成后应该返回的事实。也许,我又弄错了?
真诚的,弗拉基米尔。
这个措辞不太正确。 行动应该在循环体中执行,取决于迭代器。取决于迭代器的情况。而应该返回的正是在循环体中执行这些操作的结果。如果循环被通过,并且没有中断或应急操作符,这意味着我们将转到表达式3,然后转到表达式2,如果是True,我们将用新的迭代器将其返回到循环体。
因此,最初写的代码中没有循环运算符,尽管我当时很想试试如何应用它。
尊敬的弗拉基米尔。
你可以申请
按编号查看所有票据。并通过票据找出位置的符号,与我们的比较。获取位置magik并与我们的进行比较。
但只是为什么。