新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1803

 
Artyom Trishkin #:

在你的代码中,如果一个仓位打开了,另一个仓位就不会在相反的信号下打开。也就是说,首先,当信号传来时,你需要检查是否有对立的头寸,并关闭它。

但同样,这一切大大限制了改进策略的可能性。

我们应该避免对订单的存在/不存在进行约束(特别是在四个方面--挂单(这是正确的)和头寸(这是错误的))。

不,手头有按类型划分的订单和头寸数量是正确和必要的。但仅仅依靠没有任何命令的信号是不对的。

一般来说,正确的方法是有计算订单和头寸的函数(当改变订单和头寸的数量时,有一个函数可以填充结构),开仓/平仓的函数,设置订单的函数和报警函数。另外,能够将头寸数据(开仓或平仓)与任何数值进行比较。

任何战略都可以从这组数据中建立。

Artem,该策略在市场上有一个订单,直到它关闭在TP或SL。
 
MakarFX #:

您的代码

(一家酒吧开业,没有订单)

检查了信号 - 没有信号

...等待下一棒。

你重复了与上次相同的错误

P.S.

它是

必须在订单开启后进行

实际上我的代码是为别的东西设计的。对于一个只按开盘价交易的机器人来说。我只是把它从我这里拿出来,添加到一个守法的公民 用户的代码中,并根据评论进行修改。所有的细微差别都不可能一下子就考虑到。你只有在测试机器人的过程中才能看到它们。

但有一件事。你似乎也考虑到了一切。已收到一个信号,并且函数bSignalSell或bSignalBuy已发送指令开仓,并返回true(第一点)第二点是还没有打开订单(该命令在终端等待轮到它)。然后,当命令 队列出现时,它被发送到服务器(这仍然是时间)。在服务器上,它被执行。或者服务器由于一些可能的原因拒绝执行(详见文档)。或者它没有到达那里(干扰、连接不良和其他网络错误)。而你的机器人认为它已经打开了一个订单,并更新了酒吧的开放时间。这很好。但该订单没有出现在未结订单列表中。因此,想象一下,你在列表中有0个订单,机器人 "认为":"没关系,我已经进入市场。结果是,在一个不成功的进场后,在一整个柱形期间有一个信号,但专家顾问没有 "看到 "它,什么也没做。这种情况可能吗?这是有可能的!所以,你的代码不是很好。你最好想得更清楚。或者让守法的公民 思考。不幸的是,我现在做不到。我正在做一个非常有趣的项目。而创建一个适当的完全工作的EA,其所有的机制只有对一个好的、可盈利的交易系统才有意义。该机器人可以简单地在策略测试器中运行,看看它是我的另一个版本还是你开发的版本。这没有任何区别。

 
законопослушный гражданин #:

我也是刚刚才注意到。

bool bSignalBuy()
  {
   if(dMA > Open[1] && dMA < Close[1])  //Open[1] и Close[1]- цены открытия и закрытия каждого бара текущего графика.
      return(true);

   return(false);
  }
Open[1] и Close[1]

索引1。

dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0);

而你的MA的指数是0!也就是说,它在整个酒吧里行走,可以超越开和关。因此,最好将MA的指数设为1。

dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 1);

然后,所有的信号将在形成的条形上被例外地采取,机器人将与交易系统完全一致,在开盘价上有信号。因此,机器人只需跟踪柱状体的开口(我已经添加了这个代码),并在新形成的柱状体上进入。它将更加可靠。而且将不需要像马卡那样因为最初错误的进入算法而被扭曲。

 
Mihail Matkovskij #:

我也是刚刚才注意到。

索引1。

而你的MA的指数是0!也就是说,它在整个酒吧里行走,可以超越开和关。因此,最好将MA的指数设为1。

然后,所有的信号将在形成的条形上被例外地采取,机器人将与交易系统完全一致,在开盘价上有信号。

这是该信号的本质。

当前的MA进入前一根蜡烛的主体,根据哪根蜡烛(上升/下降)给出相同的信号。

 
MakarFX #:

这是该信号的本质。

当前的MA进入前一根蜡烛的主体,根据蜡烛的情况(上升/下降),它将是相同的信号。

在这种情况下,应该在较低的时间框架内用指数1画出MA。那么就不需要应用任何修改。在较高的时间框架的开盘和收盘时,在较低的时间框架上会有几个(或很多)条形。你知道为什么要发明时间框架,不是吗?如果没有,就从日本烛台的历史开始研究这个问题。简而言之,重点是简化技术分析。而随着数字时代的到来,它也简化了交易系统的离散化。

 
Mihail Matkovskij #:

在这种情况下,应该在较低的时间框架上用指数1来衡量MA。那么,就没有必要再去扭曲了。在较高的时间框架的开盘和收盘范围内,在较低的时间框架上会有几个(或许多)条。你知道为什么要发明时间框架,不是吗?如果没有,那就从日本烛台的历史开始研究这个问题。简而言之,重点是简化技术分析。而随着数字时代的到来,它也简化了交易系统的离散化。

我不明白你为什么对我生气。这个人按照他所看到的方式来写他的策略,而这个人不是我。

我只回答了他的问题,"如何避免在同一个酒吧里出现多个开口?"

我学什么我自己知道,如果我不知道,我就问。现在我还没有向任何人提出任何要求。

 
MakarFX #:

我不明白你为什么要把气撒在我身上。这个人按照他的看法写出了他的策略,这个人不是我。

我只回答了他的问题:"如何避免在同一个酒吧里多次开口?"

我学什么我自己知道,如果我不知道,我就问。现在我没有问任何人任何事情。

很奇怪。我正试图弄清一个问题的真相,而你却在谈论某种关系的澄清。我只就编程的问题进行交流。如果你被什么东西冒犯了,不要被冒犯。我已经写了15年的软件。你说我的代码 在你看来 不能正确工作。我不是在冒犯你,我只是想向你解释自动交易系统是如何运作的。这是个纯粹的技术性对话。而你对我 的是某种污辱......。:)

 
Mihail Matkovskij #:

这很奇怪。我正试图弄清一个问题的真相,而你却在谈论某种关系。我只就编程的问题进行交流。如果它冒犯了你,不要被冒犯。我已经写了15年的软件。你说我的代码 在你看来 不能正确工作。我不是在冒犯你,我是想向你解释自动交易系统在现实中是如何运作的。这是个纯粹的技术性对话。而你对我 的是某种污辱......。:)

所以我也向你解释了你的代码有什么问题(在这种情况下),而你说你需要重做EA)
 
Mihail Matkovskij #:

我已经写了15年的节目。

我有一个建议。私下给我你的电报。

 
MakarFX #:
所以我也向你解释了你的代码有什么问题(在这种情况下),而你说你需要重做EA)

在这种情况下,需要对其进行重新加工,以便不被扭曲。因为我添加的代码是为有开盘价信号的机器人设计的,正如我之前所说。我想:这很奇怪。然后我找到了原因。如果你从一开始就把它弄好,你将来就不会有任何问题。因此,你应该始终寻找原因,而不是对抗后果。

原因: