文章 "通用EA交易:与MetaTrader的标准信号模块集成 (第7部分)"

 

新文章 通用EA交易:与MetaTrader的标准信号模块集成 (第7部分)已发布:

这部分文章描述了使用CStrategy引擎与MetaTrader中标准库的信号模块做集成。本文描述了如何操作信号,以及如何基于它们创建自定义的策略。

以下的图表显示了在策略的自动生成过程中,类的垂直继承一般架构。

 

图 1. 策略生成器中标准类的继承

作者:Vasiliy Sokolov

 

瓦西里,一如既往的有趣。首先,从编程的角度来看...但在 MQL 论坛....,您还能期待什么呢?

一个小建议 :-)))

继承通常是自下而上的。大约是这样的



 
我在 mql4 中用一个文件写了类似的东西,而且没有使用第三方库,这样用户就可以为十个自定义指标的 70 个元素之间的关系自由构建一棵树来生成信号。
 
Dennis Kirichenko:

瓦西里,一如既往的有趣。首先,从编程的角度来看...但在 MQL 论坛....,您还能期待什么呢?

一个小建议 :-)))

继承通常是自下而上的。这就对了:

我不知道。我想我是左撇子,所以我把它弄反了:)
 
Aleksey Semenov:
我用 mql4 写了类似的东西,只需一个文件,无需使用第三方库,这样用户就可以为十个任意自定义指标在 70 个元素之间自由构建关系树来生成信号。
您能看看原型吗?
 
Aleksey Semenov:
我在 mql4 中用一个文件写了类似的东西,而且没有使用第三方库,这样用户就可以 为十个任意自定义指标的 70 个元素之间的关系自由构建一棵树 来生成信号,从这样一个花园中收集所建条件的结果是非常有趣的,但结果却是一些真正通用的东西。
是的,我倾向于在树的基础上编写通用策略生成器,但这项任务相当艰巨。
 
向公众提问: 有人使用 MetaTrader 信号系统吗?谁在自己的智能交易程序中使用信号类?
 
Vasiliy Sokolov:
向公众提问: 有人使用 MetaTrader 信号系统吗?谁在他们的 Expert Advisors 程序中使用了信号类?

Я.我总是这样做:

  • 写一个指标
  • 在指标的基础上制作信号模块
  • 创建 Expert Advisor 时,我连接必要的信号模块。
起初,我们可能会觉得这样做不太方便,但事实上,更改、修改指标信号或发明新信号都非常方便。

 
Karputov Vladimir:

Я.我一向如此:

  • 写一个指标
  • 根据指标制作信号模块
  • 在创建 Expert Advisor 时,我会连接必要的信号模块。
初看起来,这种方法似乎不太合适,但事实上,更改、修改指标信号或发明新信号都非常方便。

这真是一种彻底的方法。是的,它有自己的优势。

一般来说,许多开发人员已经编写了自己的信号模块。为什么不创建一个此类模块的集中基地呢?任何人都可以分享自己的模块并将其发布到数据库中。当然,这不是水到渠成 的事,但它的好处是显而易见的,我们不必重新发明轮子。

 

初始化指示器信号时:

//+------------------------------------------------------------------+
//| CSignalMacd 信号模块的初始化
//+------------------------------------------------------------------+
COnSignal_RSI_AC::COnSignal_RSI_AC(void)
{
   MqlSignalParams params;
   params.every_tick = false;
   params.magic = 32910;
   params.point = 10.0;
   params.symbol = Symbol();
   params.period = Period();
   params.usage_pattern = 2;
   params.signal_type = SIGNAL_AC;
   CSignalAC* ac = m_adapter_ac.CreateSignal(params);
   params.usage_pattern = 1;
   params.magic = 32911;
   params.signal_type = SIGNAL_RSI;
   CSignalRSI* rsi = m_adapter_rsi.CreateSignal(params);
   rsi.PeriodRSI(RSI_Period);
}
一个信号模块(适配器)传输一个 Magik (32910),第二个模块传输第二个 Magik (32911)。也就是说,一个 Magik 用于开仓,另一个用于平仓?还是我理解错了?
 
Гога:

初始化指示器信号时:

一个信号模块(适配器)传输一个 Magik (32910),第二个模块传输第二个 Magik (32911)。也就是说,一个 Magik 用于开仓,另一个用于平仓?还是我误解了什么?
在这种情况下,Magiks 是 CExpert 的初级成员,信号本身就是从它们那里继承的。信号不需要它,至少在 CStrategy 中不需要,因为它不会下挂单。不过,为了以防万一,还是指定了一些 Magik。