错误、漏洞、问题 - 页 758

 
是的,现在他们领先四秒。
 
为什么当趋势线 改变位置时,中点会消失?
 

你好!

我需要以图形的方式看到某个变量的值在视觉测试过程中的每一个条形图的变化,也就是说,我需要在一个子窗口中建立一个单独的图形。例如,我想在图表下面的一个单独窗口中看到每个条形图的股权变化图。

我应该怎么做?我是否应该写一个指标,将其附加到图表上,并通过终端的全局变量 将EA的变量值传递给它?或者有一个 "更好 "的方法?

预先感谢你。

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
Alex5757000:

你好!

我需要以图形的方式看到某个变量的值在视觉测试过程中的每一个条形图的变化,也就是说,我需要在一个子窗口中建立一个单独的图形。例如,我想在图表下面的一个单独窗口中看到每个条形图的股权变化图。

我应该怎么做?我是否应该写一个指标,把它附在图表上,通过终端的全局变量 把EA的变量值传给它?或者有一个 "更好 "的方法?

预先感谢你。

完全没有,你可以直接在指标中获得权益或余额值。

定义指标缓冲区的参数,绘制成柱状图。

并在适当的缓冲区中写入所有四个值。

在小节开场时打开,高点低点和动态(最后一个小节)。

它看起来像这样:在附件中

当然,你也可以使用绝对值(推荐选项),但我认为它不会显示小的初始增量,所以我认为初始值和当前值之间的差异更好。

ZS,但不是,比例尺是动态的,所以你可以做第二个选项,它是相当可读的。

附加的文件:
 
Urain:

完全没有,你可以直接在指标中获得权益或余额值。

设置参数,将 指标缓冲区绘制 成柱状图。

并将所有四个值写到相应的缓冲区。

在条形图上开盘,高点低点和收盘都是动态的(最后一条)。

权益和平衡值--是的,但如果我想看EA中计算的变量值怎么办?
 
Alex5757000:
权益和平衡值--是的,但如果我想看到在EA中计算的变量值怎么办?

你可以通过自定义事件 来做,只是别忘了在事件之后更新图表。

因为按照优先级的顺序,勾在事件处理之前。

但是可以用globals来做,但是有同样的问题--tick已经来了,而变量还在EA中被处理(它的变化正在准备中),当然,数据会被收到,但是在一个tick上会有延迟,在事件中还是比较正确的,有一个地方可以在事后把更新图表,当你已经确定变量有实际数据。

 

这段代码不能编译,错误是"'返回'--结构有对象,不能复制",因为"CTest getCopy(void) {CTest res;return res;}"停止。

这可以通过2种方式解决。

1)将"类"改为"结构"

2)用一个重载的赋值运算符 取消对stopka的注释。

所以应该是这样,复制构造函数的作用由重载赋值运算符来完成?那么为什么在参考书中没有提到它,除了一个矩阵类的例子(顺便说一下,对它的详细分析使我找到了我代码中的错误)?

class CTest
  {
public:
    CTest(void): cnt(0) {}
   ~CTest(void) {}
    CTest(const CTest& T) {cnt = T.cnt;} // copy constructor
    //------------------------
    CTest getCopy(void) {CTest res; return res;} 
    //------------------------
    //CTest* operator=(const CTest& T) {cnt = T.cnt; return GetPointer(this);}
private:
         int cnt;
  };
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
  • www.mql5.com
Основы языка / Операторы / Оператор-выражение - Документация по MQL5
 
WWer:

这段代码不能编译,错误是"'返回'--结构有对象,不能复制",因为"CTest getCopy(void) {CTest res;return res;}"停止。

当然,一个对象不能从函数中返回。(与结构不同。)它是有记录的。


这可以通过2种方式解决。

1)将"类"改为"结构"

见上文。

2)用一个重载的赋值运算符 取消对stopka的注释。

当然,重载运算符返回一个句柄指针,这很正常。现在不是从getCopy()函数返回的对象,而是指针(从该函数返回是一个隐式赋值),这使得代码正确。

// 只在语法上正确。

//从getCopy()函数返回一个未初始化的变量,我希望这只是为了证明语法问题,并不假装合理。

所以应该是这样,复制构造函数的作用由重载赋值运算符来完成?

嗯...角色与此有什么关系? 你可以以任何方式重载赋值运算符,并正确地编写复制构造函数。 你的错误在于其他地方。


为什么在参考书中没有提到,除了一个矩阵类的例子(顺便说一下,它的详细分析帮助我找到了我代码中的错误)?

因为在公元前2096785年2月11日,恐龙Vasya不小心踩到了蜥蜴Clava。 这引起了一长串的因果关系,导致了现在的局面。 你不能不这样做。

;)

 
MetaDriver://从getCopy()函数返回一个未初始化的变量,希望这只是为了证明语法问题,并不假装合理。

为什么要进行初始化?它是一个类的实例,这个类有一个构造函数,就是为了这个目的。

MetaDriver
嗯...你可以以任何方式重载赋值运算符,并正确地编写复制构造函数。 你的错误完全在另一个地方。

然后如何为此目的写一个正确的复制构造函数?