//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| 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);
}
eh...为什么检查未结订单的条件不能这样写。
如果OrdersTotal()> 0
一切都很清楚和容易理解...这将是...
我已经想了一个小时,想知道如何写这个条件......
eh...为什么检查未结订单的条件不能这样写。
如果OrdersTotal()>0
一切都很清楚和容易理解...这将是...
我已经想了一个小时,想知道如何写这个条件......
为什么不呢? 你可以,但如果任何符号上有未平仓或挂单,就会被触发。
为什么不呢?你可以,但如果任何工具上有未平仓或挂单,它将被触发。
我希望它能发挥作用--我有一个位置和一个工具。
但这并不奏效!
它说代码里有一个错误。
对这个
---------------------------
int start()
{
//----
如果OrdersTotal()> 0
PlaySound("alert.wav")。
//----
return(0);
}
-----------------------------
送出8个错误!!!。
这个怎么样?
这个怎么样?
:)))))))))))))))))))
绚丽多彩!谢谢你
因此,当我从图表中删除一个机器人时,就会调用deinit--我无法以任何其他方式跟踪这个条件.....,也许写一个单独的脚本来删除所有剩余的待定机器人更容易,没有其他办法。
顺便说一下,关于这个问题的另一个想法。
我想我已经解决了删除未决订单的问题。我在一个单独的函数中确定 "必要的"(要删除的)订单的数量,调用这个函数,然后在while中设置条件(总量>0),然后循环删除for(int i=Total-1;i<=0l; i--),再次计算"必要的 "和删除尝试的计数器,当达到指定水平时退出while。这样一来,一切都被删除了。
如果其中一个订单在计数时刻后因任何原因消失,这里可能会出现无限循环。
为什么不能这样做?例如,在终端层面创建一个全局变量,为其赋值,并在关闭前通过service-->global variables检查启动和改变该变量的值。
因此?
我想问,他们这样做的目的是什么?
for(int i=0; i<OrdersTotal(); i++)
看起来他们正试图用暴力方法来计算未结头寸...
日安!!!。找不到一个漂亮的解决方法来解决这个问题。下面是一个典型的订单设置。但是,如果我给机器人的参数为零,即没有止损和止盈,就不会有任何效果。
我们也可以设置一个if,第二次输入带零的订单,但这有点麻烦。
请允许我问一下,他们在这里想做什么?
for(int i=0; i<OrdersTotal(); i++)
感觉它在试图计算未结头寸...
那么,它通过指定的参数来选择订单。
例如:https://www.mql5.com/ru/forum/131859/page3#434221
函数NumberOfPositions()。
该函数返回当前未结头寸的数量。 通过外部参数指定更精确的被计算头寸的选择。
我想问,他们想用这个做什么?
for(int i=0; i<OrdersTotal(); i++)
感觉他们在试图计算开放的职位...