文章 "通用EA交易: CUnIndicator 和挂单的使用(第9部分)"

 

新文章 通用EA交易: CUnIndicator 和挂单的使用(第9部分)已发布:

本文讲述的是通过通用的 CUnIndicator 类来操作指标,另外,还探讨了操作挂单的新方法。请注意,从这一点开始,CStrategy 项目的结构开始发生本质改变,现在所有的文件都位于一个目录中以便用户方便使用。

下面的屏幕截图显示了在策略测试器中 CIpmulse 2.0 的测试片段,它显示了设置的挂单以及对它们的处理:


图 1. 在 Impulse 2.0 策略测试中对挂单的处理

作者:Vasiliy Sokolov

 

不错的文章。

CUnIndicator类中Create方法用于客户自定义指标时,那个代码有中有调用PushName(),这个函数有bug,

创建用户自己定义指标时,MqlParam  parameters_array[] 第一个元素必须放置自定义的指标名称。

所有的元素都必须向右移动一个位置,把0号元素位置腾出来放置自定义的指标名称

修改如下:

void CUnIndicator::PushName(string name)
{
   int old_size = ArraySize(m_params);
   int size = ArrayResize(m_params, ArraySize(m_params) + 1);
   //for(int i = 0; i < old_size; i++) m_params[i+1] = m_params[i];  // 这么写是错的
   for(int i=old_size-1;i>=0;i--) m_params[i+1] = m_params[i]; //这样才对
   m_params[0].type = TYPE_STRING;
   m_params[0].string_value = name; //自定义的指标名称
   m_params_count++;// 参数个数 加1 
}