初学者的问题 MQL4 MT4 MetaTrader 4 - 页 122

 
Mickey Moose: 完成了我想要的东西,我可以把它送给你审查。这很好。但禁止在这里发布。

亲临现场...我喜欢泄密者...我是故意这样做的。当演示在一天内增加了15次存款,那么我就把它放回去。我希望明天能有可比较的结果。

 
STARIJ:
测试器中的Requotes? 这是我第一次听说......

这就是证据。开始了。


和结束。

和结束。




"因此,在EA中,如果是这样,就退出,在下一次打勾时继续"这是在代码中。

 
novichok2018:

这就是证据。开始。


和结束。

和结束。




"因此,在EA中,如果是这样,就退出,在下一次打勾时继续" - 这是在代码中。

好了,写下If(tester)if(January 25 or 26)返回

 
STARIJ:

好了,写下If(tester)if(January 25 or 26)返回

我不明白为什么。什么,这将有助于避免失败的重演?最主要的是,仓位确实关闭了,如果执行模糊命令的原因是测试器故障,那么一切都很好。为了确定其他的原因,可能要等待情况的重复,当用一个开放的Sell(BAY)将BAY(SEL)打开时,看看它们将如何关闭。

 
novichok2018:

这正是我所需要的,或者说是只用于买卖。对于我的简单策略来说,最重要的是未结头寸不干扰对方的平仓条件。也许我们可以不使用数组?我不理解它们:如何创造它们,如何解决它们--我在黑暗中。也许我的情况在截图上会让你看得更清楚。

代码中的一切似乎都很简单明了,但这是唯一的混乱情况。

如果我们需要对卖出和买入订单进行分割核算,我们将为它们分别声明两个数组和两个计数器。

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;
}

然后我们只需要在专家顾问中做以下工作,以确定是否有买入或卖出订单。

if (g_nBuyOrdersCnt > 0)
{
   // Есть ордера Buy
}
 
novichok2018:

我们终究可以不使用数组吗?

只有在每一种类型的订单在任何时候都不超过一个的情况下,才能免去阵列的使用。然后,该数组退化为一个OrderInfo结构类型的变量(或一个大小为1的数组)。

但正如我在上图中看到的,情况并非如此。你可以同时拥有每种类型的一个以上的订单。
 
novichok2018:

这就是证据。开始。

这表明,当一个订单被关闭时,它不是市场价格。例如,买入是以卖出价关闭,而卖出是以买入价关闭。如果你看一下你的代码,情况很可能是这样,因为在关闭操作之前没有检查订单类型

 

又是晚上好。问题的全部要点。

我在市场上投放了一个EA(正在运行)。 MT4平台。我可以显示一个单一的文件。专家顾问的一个文件。它应该通过有效性,但它不能,因为它是一个没有指标的EA。它们是在不同的文件中。专家顾问与四个指标一起工作。它们必须以某种方式连接到专家顾问。你必须指定路径,即在专家顾问中写入它们。请告知哪种形式和如何做。

据我所知,我们必须使用 "资源"。我不知道如何在专家顾问中正确注册。也许你知道一些其他的解决方案。

谢谢你.

以下是未能通过验证时的说法

2016.04.01 00:00:00无法打开文件'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:00无法打开文件'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]01 00:00:00无法打开文件'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00无法打开文件'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00无法打开文件'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00无法打开文件'MQL4indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00无法打开文件'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:00无法打开文件'MQL4\indicators\TrendLord。ex4' [2] 2016.04.01 00:00:05 无法打开文件 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:05 无法打开文件 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:0504.01 00:00:05无法打开文件'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:05无法打开文件'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.0101 00:00:05无法打开文件'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05无法打开文件'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05无法打开文件'MQL4\indicators\TrendLord.ex4' [2] 2016.04.0101 00:00:05无法打开文件'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:10无法打开文件'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10无法打开文件'MQL4\indicators\Heiken_Ashi_Smoothed1lime。ex4' [2] 2016.04.01 00:00:10无法打开文件'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:10无法打开文件'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]

 
Ihor Herasko:


非常感谢你的全面和非常清晰的回答。

 
Ihor Herasko:

如果我们需要将订单的核算分成买入和卖出,我们为它们分别声明两个数组和两个计数器。

因此,数据收集周期将如下。

然后我们只需要在专家顾问中做以下工作,以确定是否有买入或卖出订单。

请解释一下你的这行代码:OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT]; 为什么OrderInfo 没有括号,也没有指定类型? 而且所有这些都是在全局级别声明的?

而确定订单的可用性是插入到平仓的 功能中?也许用数组平仓的功能应该看起来有些不同?这对我来说有点复杂。谢谢你。


我试图使用你的例子,但编译器对我说脏话......。

它也对教程中的例子说脏话。