double GetLot(string sy="", int op=-1, int mn=-1) {// возвращает сувокупный размер поз.
double l=-1;
int i, k=OrdersTotal();
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) {
I = ------ ???????????
------ ????????????
}
}
}
}
}
}
return(l);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает сумму лотов открытых позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
double l=0;
int i, k=OrdersTotal();
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) {
l+=OrderLots();
}
}
}
}
}
}
return(l);
}
如果您的订单打开了,请检查是否有一个订单打开,如果打开了,您可以用检查打开第二个订单...
我写了两个函数,根据不同的情况打开,我将在每个函数的最后检查(我想它们将是一个单独的函数),什么和多少订单是开放的,什么订单将被错过,将被重新打开。
如果你是外汇 方面的EA定位领域的专家,你可能有兴趣了解更多关于它的信息,并在你的交易机器人中使用它。我想重申我的感谢(对不起,我没有详细说明)。
上午好。
出现了一个问题。我找不到返回给定工具的 "总 "头寸大小的函数!我搜索了整个论坛,包括I.KIM的分会,https://www.mql5.com/ru/forum/131859- 有-很多不同的功能,除了我需要的那个!
例如,如果在欧元上有几个开放的 "买入 "交易,你能建议如何确定其总金额吗?
GetLot(EURUSD, OP_BUY, magic)
问题解决了!已经发现了一个功能。
这怎么会错呢?那么这个函数会返回什么?
"返回大量开放职位 的总和"--这不正是它所说的吗?
https://www.mql5.com/ru/code/9394
"返回开放职位的手数之和"--不是这样写的吗?
我不需要把锁扣考虑在内。或者说,这里是如何做到的。
我需要的是这个。如果有几个未平仓的卖出和买入头寸,我需要删除反面(补偿)头寸,所以--只保留一个方向。
我想首先计算所有 "海湾 "的总和,然后计算所有 "卖出 "的总和。之后,找出差异(即谁的总大小更大)。而这种 "差异 "应该被留在市场上,--而所有相反的都被清除掉!
那么,这个函数GetAmountLotFromOpenPos 在这里将不起作用?例如,如果我设置
GetAmLotFromOpenPos(EURUSD,OP_SELL, -1)
-不是会返回所有卖出头寸的总手数吗?
-她不会把所有卖出头寸的手数之和还给我吗?
我不需要把锁扣考虑在内。或者说,这里是如何做到的。
我需要的是这个。如果有几个未平仓的卖出和买入头寸,我需要删除反面(补偿)头寸,所以--只保留一个方向。
我想首先计算所有 "海湾 "的总和,然后计算所有 "卖出 "的总和。之后,找出差异(即谁的总大小更大)。而这种 "差异 "应该被留在市场上,--而所有相反的都被清除掉!
那么,这个函数GetAmountLotFromOpenPos 在这里将不起作用?例如,如果我设置
GetAmLotFromOpenPos(EURUSD,OP_SELL, -1)
-难道不会返回所有卖出头寸的总手数吗?
在一般情况下。
SummLot = GetAmLotFromOpenPos("0", OP_BUY, MagicNumber)- GetAmLotFromOpenPos("0", OP_SELL, MagicNumber)。