mql5语言的特点、微妙之处以及技巧 - 页 16

 
安德烈-迪克
你能否让 "回测 "选项卡中的"打开图表"命令在测试后自动将EA中使用的所有指标连同适当的参数添加到打开的图表中?

还没有。

现在你可以保存视觉测试的模板并在客户端应用它

 
斯拉瓦

还没有。

现在你可以保存一个视觉测试模板,并在客户端应用它

而如果你在EA的OnDeinit中做了以下工作

图表保存模板()。


命名为tester.tpl,然后用"Open Chart"命令打开图表,你会得到你需要的东西吗?

 
安德烈-迪克

而如果在专家顾问的OnDeinit中做

图表保存模板()。


名称为tester.tpl,在使用"Open Chart"命令打开图表后,你会得到你需要的东西?

不,ChartSaveTemplate将把模板保存在测试员的本地Files文件夹中。

我是指通过主菜单从渲染器中手动保存模板。

Tester.tpl只有一种工作方式--从客户终端到展示台。

 
斯拉瓦

不,ChartSaveTemplate将保存模板到测试员的本地Files文件夹中。

我的意思是通过主菜单从展示台手动保存模板。

Tester.tpl只有一种工作方式--从客户终端到展示台。

不,这太慢了,太费事了,而且为了保存模板而做每一次视觉测试 往往太昂贵了,特别是当你必须经常这样做的时候......

这意味着在用指标测试后应该可以打开图表。

SZY.在测试器中不工作。

//——————————————————————————————————————————————————————————————————————————————
void OnDeinit (const int reason)
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
    
  EventKillTimer ();
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
double OnTester ()
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
  return (-DBL_MAX);
}
//——————————————————————————————————————————————————————————————————————————————

结果。

2017.03.07 12:22:15.422 Core 1 2017.03.06 23:58:59 OnTester: Template NOT saved
2017.03.07 12:22:15.422 核心1最终余额1129.18美元
2017.03.07 12:22:15.422 Core 1 OnTester 结果 -1.797693134862316e+308
2017.03.07 12:22:15.422 核心 1 2017.03.06 23:58:59 OnDeinit: 未保存模板

 
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

指示器的颜色不能以这种方式设置。

那么,为什么有些人说 "这不是一个错误,是一个特点"?

然而,官方的答复已经让我完全满意。

我们将思考如何从MQL5程序中改变指标的颜色和风格。

同时,使用颜色类型的输入变量来设置指标颜色

 
罗费尔德
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

指示器的颜色不能以这种方式设置。

那么,为什么有些人说 "这不是一个错误,是一个特点"?

然而,官方的回答让我完全满意。

因为你不能通过指标句柄(计算部分)来设置显示(绘图部分)属性。BUG是指某样东西以一种方式写出来,却以另一种方式工作。

这里需要一种不同的方法。通过短名称访问指标,如ChartIndicatorXXX功能组。类似于ChartIndicatorSetInteger(chart_id,sub_window,indicator_name,PROP_COLOR,mod,value)。

我们已经想好了,但还没来得及做这件事。

 

为什么要通过手柄设置东西?颜色是通过PLOT_LINE_COLOR属性在指标本身 设置的。

indicator_colorN只设置通过PLOT_LINE_COLOR改变的原始颜色。

indicator_colorN在调用指标 后通过PLOT_LINE_COLOR设置时,与输入没有区别。

你根本不应该允许通过手柄来改变这种属性。

是时候允许动态地设置 indicator_buffers 了。

 
罗费尔德

为什么要通过手柄设置东西?颜色是通过PLOT_LINE_COLOR属性在指标本身 设置的。

indicator_colorN只设置通过PLOT_LINE_COLOR改变的原始颜色。

indicator_colorN在调用指标 后通过PLOT_LINE_COLOR设置时,与输入没有区别。

你根本不应该允许通过手柄来改变这种属性。

是时候允许动态地设置 indicator_buffers 了。

不要提手柄。我已经告诉自己,手柄不能用来设置绘图属性。我也解释了原因。

不要忘记,除了自定义指标外,还有内置指标,将其添加到图表后也必须改变颜色。

 

我只建议扩展指标调用的 功能。

iCustom(... inputs, PRICE_CLOSE,
         [color color1, int width1, int style1]... );

iAlligator(... params, PRICE_CLOSE,
         [color color1, int width1, int style1]... );
没有其他需要添加的东西。
 
罗费尔德

我只建议扩展指标调用的 功能。

呃,为什么在你看不到它的时候?