在由MQL5向导生成的专家顾问中打开、关闭 - 页 2

 
PeretsCHILI:

我已经决定了问题的措辞。

开盘做多:快速MA从下往上穿过慢速MA,加上时间过滤器

收盘长:快速的МА与慢速的MA相交,从上往下。

开空:快速的МА与慢速的MA相交,从上面加上时间过滤器

贴身短裤:快速的МА与慢速的MA自下而上相交。

在前面提到的例子中,CheckOpenLong, CheckCloseLong, CheckOpenShort, CheckCloseShort分别被用于此。

如果你做两个模块,一个是开盘信号,一个是收盘信号,我理解第一个模块会使用LongCondition和ShortCondition,就像标准 模块 一样。在第二个模块中用什么来关闭?


而最重要的是在哪里?"......交叉...... "是什么意思?这就是它的魅力所在 :)

 

伙计,我只是更困惑了))。文章" 用6个步骤创建交易机器人!"刚刚介绍了第一个模块,通过穿越两个MAs来打开信号。

https://www.mql5.com/ru/articles/367

你说的 "交叉 "是什么意思?当第一根柱子上的快速MA-慢速MA之差大于零,第二根柱子上的快速MA-慢速MA之差小于零时,快速МА从下往上穿过慢速MA。自上而下是指第一条杠的差值小于零,第二条杠的差值大于零。

你说可以通过创建两个具有打开和关闭信号的模块来解决这个问题。我可以用文章中的模块作为基础,创建一个带有关闭信号的模块吗?

Создай торгового робота за 6 шагов!
Создай торгового робота за 6 шагов!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
 
PeretsCHILI:

...

十字 "是什么意思?快速MA从下往上穿过慢速MA是指第一个柱状图上的快速MA-慢速MA之间的差值大于零,第二个柱状图上的差值小于零。自上而下是指当第一个柱子小于零,第二个柱子大于零时。

...


这很好。当任务被指定时,它是非常好的。


PeretsCHILI:

...

你说过,可以通过创建两个具有打开和关闭信号的模块来解决这个问题。有信号关闭的模块可以作为上述文章中的模块的基础吗?

我的意思并不正确。交易信号模块产生 "是时候打开买入 "和 "是时候打开卖出 "的信号。那就是他们发出了一个开放的信号。而剩下的则由CExpert决定:关闭和扭转现有的头寸,还是建立头寸。



从文章中提取模块在6个步骤中创建一个交易机器人!- 你对它有什么意见?

 

因此,我想写一个模块,通过跨越两个带有时间过滤器的MAs发出开仓信号,并在以下情况下发生平仓:相反信号的到来;SL的到来;TP的到来。你可以按照文章内容编写一个模块(姑且称为Cross2MA),并生成一个 带有Cross2MA和SignalITF模块的专家顾问,但这不会起作用,因为SignalITF过滤器在关闭时也会被检查。

例如:我们有2MA,SignalITF只在周一有交易。周一收到一个买入信号;我们建立一个买入头寸,当时间在周二到期时,既没有达到Sl也没有达到TP,2MA的反向交叉发生了,买入头寸应该被关闭,但它没有被关闭,因为它已经是本周的另一天了。

应该是这样的:同样的条件,2MA,在周一进行交易:周一,有一个买入信号,我们建立一个买入头寸,在周二,我们得到一个卖出信号,但因为是周二,我们没有建立一个卖出头寸,我们只关闭一个买入头寸。

在LongCondition中似乎有两个命令:开盘买入和收盘卖出。我们需要以某种方式将它们分开)

 

"苍蝇分开,肉片分开"。


PeretsCHILI:

因此,我想写一个模块,通过跨越两个MAs的时间过滤器打开信号,并在以下情况下关闭:相反信号的到来;SL的到来;TP的到来。

交易信号模块 可能只显示两种信号:"是时候打开买入 "和 "是时候打开卖出"。

我们不会控制止损和止盈--因为如果止损或止盈头寸被关闭,这只意味着一件事:头寸被关闭,是时候看看交易信号模块产生了什么(换句话说,当头寸数量为零时,我们开始一个循环:等待信号)。

此外:这是对模块操作的误解,因为不存在 "相反的信号"--它可以是如下情况。

  1. 我们有一个未平仓的 "买 "的头寸,我们得到一个"支付开仓卖出 " 的信号
  2. 或有一个开放的卖出头寸,并 出现"支付购买 "的 信号
在这两种情况下,当前位置将被关闭,并打开一个新的位置。


 
Andy:
LongCondition可以只开一个买入,不管任何条件都要持有,让它在止盈或手动关闭?

LongCondition类CExpertSignal 原则上不能 "持有 "任何东西。CExpertSignal只给出两个信号:"打开买入的时间 "和 "打开卖出的时间"


你想让向导建立的专家顾问永不关闭吗?然后改变专家顾问的输入参数"//信号阈值收盘[0...100]"--设置天平条收盘为 "100"。

 
Andy:
那么是什么关闭了它们?

CExpert类 对象--它对所有信号模块进行调查,评估它们的权重,并将所得分数相加:信号权重




 

我理解对模块的解释。所有这些舞蹈都是因为我将优化我的专家顾问,如下所示。1.两个MA的优化(周期、移位、平滑),以零为单位的停止和收回;2.3.尾部优化。

问题是这样的:如果我用 Cross2MA和SignalITF过滤器生成一个专家顾问,它的工作情况如下(同样的条件,零止损和收盘)。

周一,FastMA从下往上穿过SlowMA,打开买入仓位,仓位保持到下周一,在下周一可能有3种变体。

1.FastMA从上到下穿过SlowMA - 当前位置关闭,卖出位置打开。

2.没有观察到交叉现象--位置被保持。

3.FastMA从下往上与SlowMA相交--位置保持。

以此类推,直到下一个星期一。周一之间可能会发生很多事情,2个MAs可能会被交叉几次,价格会下降。

我们能不能实现以下几点(同样的条件):在星期二,FastMA从上往下穿过SlowMA,卖出头寸没有打开,因为是星期二而不是星期一,但当前头寸被关闭。

 

我想我已经想出了如何通过应用阈值来做到这一点。

让Cross2MA返回80,SignalITF返回40。

打开的阈值我们放50,关闭的阈值我们放30。

如果两个模块都提供信号,算术平均数将返回60,高于50的阈值,那么就可以开仓。

如果只有Cross2MA触发,算术平均值为40,大于30,当前仓位 被关闭;如果小于50,则不开新仓。

对吗?

除了SignalITF返回空值。

 
PeretsCHILI:

我想我已经想出了如何通过应用阈值来做到这一点。

让Cross2MA返回80,SignalITF返回40。

打开的阈值我们放50,关闭的阈值我们放30。

如果两个模块都提供信号,算术平均数将返回60,高于50的阈值,那么就可以开仓。

如果只有Cross2MA触发,算术平均值为40,大于30,当前仓位 被关闭;如果小于50,则不开新仓。

对吗?

除了SignalITF返回空值。


你的方向是正确的 :)所有打开和关闭阈值的控制都是通过MQL5向导生成的专家顾问的输入参数。