int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];
因此,数据收集周期将如下。
g_nBuyOrderCnt = 0;
g_nSellOrdersCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
if (!OrderSelect(i, SELECT_BY_POS))
continue;
if (OrderSymbol() != Symbol()) // Если нужны ордера только по текущему символу, к графику которого прикреплен советникcontinue;
if (OrderMagicNumber != i_nMagicNumber) // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советникаcontinue;
if (OrderType() == OP_BUY)
SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
if (OrderType() == OP_SELL)
SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}
void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
if (nOrderCnt >= MAX_ORDERS_CNT)
return;
arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket();
arrstOrderInfo[nOrdersCnt].nType = OrderType();
arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice();
arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss();
arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit();
++nOrdersCnt;
}
亲临现场...我喜欢泄密者...我是故意这样做的。当演示在一天内增加了15次存款,那么我就把它放回去。我希望明天能有可比较的结果。
测试器中的Requotes? 这是我第一次听说......
这就是证据。开始了。
和结束。
和结束。
"因此,在EA中,如果是这样,就退出,在下一次打勾时继续。"这是在代码中。
这就是证据。开始。
和结束。
和结束。
"因此,在EA中,如果是这样,就退出,在下一次打勾时继续。" - 这是在代码中。
好了,写下If(tester)if(January 25 or 26)返回
好了,写下If(tester)if(January 25 or 26)返回
我不明白为什么。什么,这将有助于避免失败的重演?最主要的是,仓位确实关闭了,如果执行模糊命令的原因是测试器故障,那么一切都很好。为了确定其他的原因,可能要等待情况的重复,当用一个开放的Sell(BAY)将BAY(SEL)打开时,看看它们将如何关闭。
这正是我所需要的,或者说是只用于买卖。对于我的简单策略来说,最重要的是未结头寸不干扰对方的平仓条件。也许我们可以不使用数组?我不理解它们:如何创造它们,如何解决它们--我在黑暗中。也许我的情况在截图上会让你看得更清楚。
代码中的一切似乎都很简单明了,但这是唯一的混乱情况。
如果我们需要对卖出和买入订单进行分割核算,我们将为它们分别声明两个数组和两个计数器。
int g_nBuyOrdersCnt, g_nSellOrdersCnt; OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];
因此,数据收集周期将如下。
然后我们只需要在专家顾问中做以下工作,以确定是否有买入或卖出订单。
我们终究可以不使用数组吗?
只有在每一种类型的订单在任何时候都不超过一个的情况下,才能免去阵列的使用。然后,该数组退化为一个OrderInfo结构类型的变量(或一个大小为1的数组)。
但正如我在上图中看到的,情况并非如此。你可以同时拥有每种类型的一个以上的订单。这就是证据。开始。
这表明,当一个订单被关闭时,它不是市场价格。例如,买入是以卖出价关闭,而卖出是以买入价关闭。如果你看一下你的代码,情况很可能是这样,因为在关闭操作之前没有检查订单类型。
又是晚上好。问题的全部要点。
我在市场上投放了一个EA(正在运行)。 MT4平台。我可以显示一个单一的文件。专家顾问的一个文件。它应该通过有效性,但它不能,因为它是一个没有指标的EA。它们是在不同的文件中。专家顾问与四个指标一起工作。它们必须以某种方式连接到专家顾问。你必须指定路径,即在专家顾问中写入它们。请告知哪种形式和如何做。
据我所知,我们必须使用 "资源"。我不知道如何在专家顾问中正确注册。也许你知道一些其他的解决方案。
谢谢你.
以下是未能通过验证时的说法
非常感谢你的全面和非常清晰的回答。
如果我们需要将订单的核算分成买入和卖出,我们为它们分别声明两个数组和两个计数器。
因此,数据收集周期将如下。
然后我们只需要在专家顾问中做以下工作,以确定是否有买入或卖出订单。
请解释一下你的这行代码:OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT]; 为什么OrderInfo 没有括号,也没有指定类型? 而且所有这些都是在全局级别声明的?
而确定订单的可用性是插入到平仓的 功能中?也许用数组平仓的功能应该看起来有些不同?这对我来说有点复杂。谢谢你。
我试图使用你的例子,但编译器对我说脏话......。
它也对教程中的例子说脏话。