for (int ord=OrdersTotal()-1; ord>=0; ord--)
{
if (!OrderSelect(ord,SELECT_BY_POS)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
g_ticket = OrderTicket();
g_type = OrderType();
// Блок модификации ордеров if (i_sl != 0 || i_tp != 0)
{
if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
{
OrdersModifyer(g_ticket);
}
}
// Закрытие всех ордеров, если последний ордер закрытif (GetLastOrderState() != 0)
{
if (g_type > 1)
{
DeletePendingOrders(g_ticket);
}
else
{
CloseMarketOrders(g_ticket);
}
}
}
函数GetLastOrderState() 检查最后一个订单是否被关闭。
//+-------------------------------------------------------------------------------------+//| Получаем состояние последней позиции (Открыта или закрыта) |//+-------------------------------------------------------------------------------------+datetime GetLastOrderState()
{
datetime lastOrderCloseTime = -1, // Время закрытия последнего ордера
lastOrderOpenTime = -1; // Время открытия последнего ордераfor (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (lastOrderOpenTime < OrderOpenTime())
lastOrderOpenTime = OrderOpenTime();
}
Comment("Время открытия последнего открытого ордера = ", lastOrderOpenTime);
for (int h=OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(h, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderOpenPrice() == lastOrderOpenTime)
lastOrderCloseTime = OrderCloseTime();
}
// Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);return (lastOrderCloseTime);
}
大家好!问题就在这里。如何测量第一根、第二根、第三根蜡烛的高点和低点之间的距离,并规定每个蜡烛的这一距离不应小于,例如10点。预先感谢你。
以下是市场环境变量,以帮助你https://docs.mql4.com/ru/predefined/variables
机器人起义...:)
Aha ha ha.yosuf, Cyborg让你来的...)))))))
这里有一个测试该功能的EA。它包含函数本身和它的调用。在调用它之前,你必须准备一条信息,最多四行。如果我没记错的话,每一行的长度不应超过64个字符。这就是为什么我把一条信息分成几行。一条信息的每一行都可以用不同的颜色输出。这在代码中已经很清楚了--首先我们准备好信息行,然后我们调用函数。我没有在那里发表什么评论--我很久以前就一口气写完了。现在我已经忘记了那里是干什么的。如果我有任何问题,我会记得,但我现在只记得必要的事情。
还有一只火鸡。
这就是事实...我希望你能掌握其中的诀窍。
当然,我可以做一个底层,而不是把它输出到指标窗口的主图上,但我太懒了......:)
Artem,我看了你的代码,火鸡是个炸弹:))))。实质上,一切都很清楚的多,虽然我在执行中看到了几个点,与我要做的有点不同,但这只是一件小事。
有趣的事情是这样的。只有专家中的内容才会被印在火鸡上。但你如何利用它来发挥你的优势?
Artem,我看了你的代码,火鸡是个炸弹:))))。实质上,一切都很清楚,有了更多的东西,虽然我在实施中看到了几个点,与我要做的有点不同,但这只是小事。
以下是有趣的地方。只有专家顾问中的内容才会印在转盘上。但我如何利用它来发挥我的优势?
它是一个函数。那位专家只是为了显示该函数的作用。因此,使用该功能来显示你 的 EA的信息。
那位专家只展示了如何使用它。
它是一个函数。那位专家只是为了显示该函数的作用。因此,使用该功能来显示你 的 EA的信息。
那位专家只展示了如何使用它。
虽然是...这是一个功能...我在摸索的过程中错过了最重要的事情:(
有一个新的头痛问题。以下是实现这一目标所需的条件。
1.市场上有许多订单,即市场上一直有市场订单和挂单。
2.在某一时刻,当迄今为止开出的最后一个订单被TP关闭时,我们需要关闭所有已开出的订单,并删除所有待定的订单。
我是这样做的(我把它放在start() 函数中)。
函数GetLastOrderState() 检查最后一个订单是否被关闭。
再有就是删除挂单和平仓的市场订单的功能。我看到它在某种程度上没有正常工作。我的功能可以吗?
我理解,职能部门是按理念来排序的。但这里的逻辑并不好。你对这个问题有什么想法吗?事实证明,在任何情况下,即使没有一个EA的订单被TP关闭,所有的订单在被信号打开后,一眨眼就被关闭了。
Aha ha ha.yosuf, Cyborg让你来的...)))))))
仍然是一个好的、有同情心的亲戚。仿佛所有的问题都是他的,因为这个命运会奖励,毫无疑问,或者,遇到圣杯。
但没有具体内容,因此也没有问题。我不知道该怎么回答....你必须尽量清楚地解释情况,以获得答案。
有一个新的头痛问题。以下是实现这一目标所需的条件。
1.市场上有许多订单,即市场上一直有市场订单和挂单。
2.在某一时刻,当迄今为止开出的最后一个订单被TP关闭时,我们需要关闭所有已开出的订单,并删除所有待定的订单。
我是这样做的(我把它放在函数start() 中)。
函数GetLastOrderState() 检查最后一个订单是否被关闭。
再有就是删除挂单和平仓的市场订单的功能。我看到它在某种程度上没有正常工作。我的功能可以吗?
我理解,职能部门是按理念来排序的。但这里的逻辑是不行的。你对这个问题有什么想法吗?事实证明,在任何情况下,即使EA的订单没有一个在TP点平仓,但在被信号打开后,所有的订单都会在瞬间平仓...。
维克多,采取久经考验的金的功能,检查一个位置是否被TP关闭。
isCloseLastPosByTake - 返回一个关闭最后一个位置的标志。 只查找有用的功能
然后关闭一切。