文章 "在 EA 交易代码中实现指标的计算" - 页 2

 

@Dmitriy Gizlyk 这篇文章写得很好。 我在我的 EA 中执行了您的代码,但发现该指标并没有绘制在图表上。 我如何才能将 EA 中创建的这个指标绘制在图表上?

谢谢。

 

若昂-路易斯-萨-马奇奥罗

我一直在找这样的东西。非常感谢。非常棒的文章。


你好,你实现了这个示例吗?我尝试并研究了各种方法,但都没有成功。有没有可能像上面的研究一样,在 EA 代码中绘制指标?

 
为账户充值的密码
 
wellingtondala:

@Dmitriy Gizlyk 这篇文章写得很好。 我在我的 EA 中执行了您的代码,但发现指标并没有绘制在图表上。 如何才能将 EA 中创建的指标绘制在图表上?

谢谢。

这篇文章介绍了一种将指标的数学部分转移到顾问中的方法。这种方法适用于加快计算速度和向用户隐藏指标。从 "智能交易系统 "中绘制指标与从指标中绘制指标是不可能的。要显示它,需要在图表上为每个运动创建图形对象。这一过程将耗费程序员的大量时间,使用时还会耗费计算资源。如果需要在图表上显示一个指标,将其代码转移到顾问中是没有意义的;使用指标本身会更方便。要将顾问与指标一起传输到文件中,可以使用资源的功能。

 

DMITRIY GIZLYK,感谢您的文章。

我对多线程问题很感兴趣,是否有可能在单独的处理器内核上并行运行类?您在文章末尾提到 "MetaTrader 5 的多线程架构可以提高优势"。

Dmitriy Gizlyk
Dmitriy Gizlyk
  • www.mql5.com
Опубликовал статью Нейросети - это просто Каждый раз, когда речь заходит об искусственном интеллекте, в голове всплывают какие-то фантастические образы и кажется, что это очень сложное и непостижимое. Но мы все чаще и чаще слышим об искусственном интеллекте в повседневной жизни. В новостных лентах все чаще пишут о каких-либо достижениях с...
 
Dmitriy Gizlyk:
是的,文章直接指出计算是基于封闭的蜡烛图。要计算每个刻度线,我们需要从代码中移除打开新条形图的检查,并从 "0 "条形图复制历史记录,而不是像现在这样从 "1 "条形图复制历史记录。

我的理解是正确的,要使用全套时间序列数据,除了这个数组外,还需要添加其他数组:

массив исходных данных для расчета (m_source_data);

也就是说,如果指标访问的是不同的柱状图数据 - time[]、最高价最低价 high[]、low[],则需要在 m_source_data 中 添加 3 个类似数组,并将数据复制到 CIndicator::LoadHistory 中

由于该函数是虚拟的,是否可以直接在指标中重写?

 

如果您设置了多个缓冲区,就会在此处出现错误

bool CIndicator::SetBufferSize(const int bars)
  {
   if(bars>0)
      m_data_len  =  bars;
   else
      m_data_len  =  Bars(m_Symbol,m_Timeframe);
//---
   if(m_data_len<=0)
     {
      for(int i=0;i<m_buffers;i++)
         ar_IndBuffers[i].Shutdown();
      return false;
     }
//---
   if(m_history_len<m_data_len)
      if(!SetHistoryLen(m_data_len))
         return false;
//---
   for(int i=0;i<m_buffers;i++)
     {
      ar_IndBuffers[i].Shutdown();
      if(!ar_IndBuffers[i].Resize(m_data_len))
         return false;
     }
//---
   return true;
  }

Indicator.mqh 中的数组超出范围(156,20)


更新:我在函数开头添加了一行,问题解决了。

ArrayResize(ar_IndBuffers,m_buffers,m_buffers);

 

再次感谢您的文章,一切都很成功!最有趣的是,这个版本的运行速度更快。我的箭头指标通过 CopyTicksRange 和 CopyTicks 函数请求刻度线,这造成了很多故障,经常导致数据不正确。通过类,一切都能正常运行。我认为这是因为指标中的 CopyTicksRange 和 CopyTicks 的工作方式有点不同,系统没有给它们同步的时间。



请注意,您需要编辑 Indicator.mqh 函数。

CIndicator::SetHistoryLen(const int bars)

CIndicator::LoadHistory(void)

в зоне protected 

此外,从指标缓冲区 ar_IndBuffers 中写入和接收数据的方法与箭头人不同。

 

大家好、

我有一个自己用 mql5 编写的指标,我想在我正在编写的 EA 中调用该指标缓冲区中的信息。你们能帮我怎么做吗?文章中的代码对我有帮助吗?

谢谢

 
Carlisson Correia :

工作人员、

我有一个自己用 mql5 编写的指标,我想在我正在编写的 EA 中调用该指标缓冲区中的信息。您能帮我实现这个目标吗?文章中的代码能帮我吗?

谢谢

晚上好

查看iCustom 功能