double PriceOpenNearPos(string sy="", int op=-1, int mn=-1) {
double mi, oop=0, p;
int i, k=OrdersTotal(), pp=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) mi=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
p=MarketInfo(OrderSymbol(), MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
pp=MathAbs(OrderOpenPrice()-mi)/p;
oop=OrderOpenPrice();
//| Описание : Возвращает количество позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), kp=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) kp++;
}}}}}
return(kp);
}
int start()// или что у Вас там, как в обновлённом MQL4int BuyPos = NumberOfPositions(Symbol(),OP_BUY, Magic); //это вызов этой функции, чтобы знать, сколько у Вас баевint SellPos = NumberOfPositions(Symbol(),OP_SELL,Magic);//а это для селловComment("Buy ",BuyPos," Sell ",SellPos);
在函数https://forum.mql4.com/ru/38949/page5#434241,有一个错误。
它应该是这样的
} } } } } } return(oop);
}
请重新下载。
大家下午好!
在修复专家顾问系统时(由于MQL的更新),结果发现Igor Kim的许多功能不再起作用了。这包括最受欢迎的那些。比如说。
NumberOfPositions - 返回位置的数量。
ExistPositions - 返回职位存在的标志。
另一个函数,我昨天在主题中提到:函数NumberOfBarCloseLastPos()。
此函数返回关闭最后一个位置的条数。
当我在Strategy Tester图表上显示评论时,我看到尽管存在交易(当前和已关闭),但这些函数一直返回常量值(-1和/或0)。看起来EA在其代码中没有看到这些函数所定义的条件。
此外,所谓的 "可执行 "函数停止工作,例如,一组用于关闭位置的函数:ClosePosBySelect(该函数关闭一个初步选定的位置)和相关函数。
ClosePositions - 以市场价格关闭头寸,等等。
请告知这些函数中存在什么样的bug,有什么需要修复的,至少使用其中一个函数--NumberOfPositions--它返回的是位置的数量?
大家下午好!
在修复专家顾问系统时(由于MQL的更新),结果发现Igor Kim的许多功能不再起作用了。这包括最受欢迎的那些。比如说。
NumberOfPositions - 返回位置的数量。
ExistPositions - 返回职位存在的标志。
另一个函数,我昨天在分支中提到:函数NumberOfBarCloseLastPos()。
该函数返回关闭最后位置的条数。
当我在Strategy Tester图表上显示评论时,我看到尽管存在交易(当前和已关闭),但这些函数一直返回常量值(-1和/或0)。看起来EA在其代码中没有看到这些函数所定义的条件。
此外,所谓的 "可执行 "函数也停止工作,例如,一组用于关闭头寸的函数:ClosePosBySelect(它关闭了一个预先选定的头寸)和
ClosePositions - 以市场价格关闭头寸,等等。
请告知函数中出现了什么样的故障,哪些需要修复,至少以其中一个函数为例--NumberOfPositions--返回位置的数量?
NumberOfPositions()对我来说工作得很好!是的,我一直在用MQL4工作,没有任何优点如果你用一种最新的语言写作,那么我想一切都需要为它量身定做,或者去做自由职业者!现在一切都以可怕的力量被商业化了!我为你感到高兴!
如果你能以某种方式适应NumberOfPositions(),那么ExistPositions()就不需要了。你可以这样检查。
好运!
NumberOfPositions()对我来说工作得很好!是的,我一直在用MQL4工作,没有任何优点如果你在用一种更新的语言写作,那么一切可能都应该调整到它,或者去做自由职业者!现在,一切都在以可怕的力量被商业化。!
我不经常来这里,所以我不知道,"没有专业人员的MQL4 "是什么意思?
你认为那些能在这里回答的人不这样做,是为了迫使访客付费回答一个不复杂的自由职业问题 吗?
让我提醒你,Comment( NumberOfPositions(NULL, -1, Magic)); - 它不断返回-1,即使EA已经开仓。我不经常来这里,所以我不知道,"没有专业人员的MQL4 "是什么意思?
你认为那些能在这里回答的人不会这样做,以迫使访客付费来回答一个不复杂的自由职业问题 吗?
让我提醒你,Comment( NumberOfPositions(NULL, -1, Magic));将始终返回-1,即使EA已经开仓。NULL 作为一个函数参数意味着没有参数。
那会更好)Comment( NumberOfPositions(Symbol(), -1, Magic));
我不经常来这里,所以我不知道,"没有专业人员的MQL4 "是什么意思?
你认为那些能在这里回答的人不这样做,是为了迫使访客付费回答一个不复杂的自由职业问题 吗?
我想知道对于一个商业程序员来说,修复这样一个功能的成本会是多少。
让我提醒你,Comment( NumberOfPositions(NULL, -1, Magic));的输出显示,即使EA已经开仓,也总是返回-1。MQL4++更新了,他们在这里称它为MQL4++!
我的函数返回正确的 位置数!但你在Comment()中出现了错误!我相信这个功能是有效的!
像这样试试吧。
这样,你就可以在图表上准确地看到所有的东西,应用BuyPos和SellPos变量来检查条件看看我是如何掌握的。
好运!
谢谢你,borilunad和vadynik,谢谢你的提示。
的确,这个功能是有效的!在此对您的有益提示表示衷心的感谢:https://www.youtube.com/watch?v=SFJeHI2LVX4&feature=related!
现在,一切都在以可怕的力量被商业化。我为你感到高兴!
这里有一个备选方案。只有当订单数量 发生变化时,才会调用该函数。此外,如果订单类型发生了变化,它也可以被调用。
谢谢你,borilunad和vadynik,谢谢你的提示。
的确,这个功能是有效的!在此对您的有益提示表示衷心的感谢:https://www.youtube.com/watch?v=SFJeHI2LVX4&feature=related!