Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
我已经决定了问题的措辞。
开盘做多:快速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。自上而下是指第一条杠的差值小于零,第二条杠的差值大于零。
你说可以通过创建两个具有打开和关闭信号的模块来解决这个问题。我可以用文章中的模块作为基础,创建一个带有关闭信号的模块吗?
...
十字 "是什么意思?快速MA从下往上穿过慢速MA是指第一个柱状图上的快速MA-慢速MA之间的差值大于零,第二个柱状图上的差值小于零。自上而下是指当第一个柱子小于零,第二个柱子大于零时。
...
这很好。当任务被指定时,它是非常好的。
...
你说过,可以通过创建两个具有打开和关闭信号的模块来解决这个问题。有信号关闭的模块可以作为上述文章中的模块的基础吗?
我的意思并不正确。交易信号模块产生 "是时候打开买入 "和 "是时候打开卖出 "的信号。那就是他们发出了一个开放的信号。而剩下的则由CExpert决定:关闭和扭转现有的头寸,还是建立头寸。
从文章中提取模块在6个步骤中创建一个交易机器人!- 你对它有什么意见?
因此,我想写一个模块,通过跨越两个带有时间过滤器的MAs发出开仓信号,并在以下情况下发生平仓:相反信号的到来;SL的到来;TP的到来。你可以按照文章内容编写一个模块(姑且称为Cross2MA),并生成一个 带有Cross2MA和SignalITF模块的专家顾问,但这不会起作用,因为SignalITF过滤器在关闭时也会被检查。
例如:我们有2MA,SignalITF只在周一有交易。周一收到一个买入信号;我们建立一个买入头寸,当时间在周二到期时,既没有达到Sl也没有达到TP,2MA的反向交叉发生了,买入头寸应该被关闭,但它没有被关闭,因为它已经是本周的另一天了。
应该是这样的:同样的条件,2MA,在周一进行交易:周一,有一个买入信号,我们建立一个买入头寸,在周二,我们得到一个卖出信号,但因为是周二,我们没有建立一个卖出头寸,我们只关闭一个买入头寸。
在LongCondition中似乎有两个命令:开盘买入和收盘卖出。我们需要以某种方式将它们分开)
PeretsCHILI:
因此,我想写一个模块,通过跨越两个MAs的时间过滤器打开信号,并在以下情况下关闭:相反信号的到来;SL的到来;TP的到来。
交易信号模块 可能只显示两种信号:"是时候打开买入 "和 "是时候打开卖出"。
我们不会控制止损和止盈--因为如果止损或止盈头寸被关闭,这只意味着一件事:头寸被关闭,是时候看看交易信号模块产生了什么(换句话说,当头寸数量为零时,我们开始一个循环:等待信号)。
此外:这是对模块操作的误解,因为不存在 "相反的信号"--它可以是如下情况。
LongCondition可以只开一个买入,不管任何条件都要持有,让它在止盈或手动关闭?
LongCondition类CExpertSignal 原则上不能 "持有 "任何东西。CExpertSignal只给出两个信号:"打开买入的时间 "和 "打开卖出的时间"。
你想让向导建立的专家顾问永不关闭吗?然后改变专家顾问的输入参数"//信号阈值收盘[0...100]"--设置天平条收盘为 "100"。
那么是什么关闭了它们?
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返回空值。
我想我已经想出了如何通过应用阈值来做到这一点。
让Cross2MA返回80,SignalITF返回40。
打开的阈值我们放50,关闭的阈值我们放30。
如果两个模块都提供信号,算术平均数将返回60,高于50的阈值,那么就可以开仓。
如果只有Cross2MA触发,算术平均值为40,大于30,当前仓位 被关闭;如果小于50,则不开新仓。
对吗?
除了SignalITF返回空值。
你的方向是正确的 :)所有打开和关闭阈值的控制都是通过MQL5向导生成的专家顾问的输入参数。