新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 882

 
阿尔乔姆-特里什金。
检查代码

谢谢你的快速答复。我无意冒犯,但这很接近,但不完全正确。我的案例使用DRAW_COLOR_HISTOGRAM2

它有三个缓冲区,两个用于存储蜡烛的开始和结束值,第三个用于存储这个蜡烛的颜色。

上面的例子使用了DRAW_COLOR_HISTOGRAM ,它有两个缓冲区(烛台大小和颜色),并且只从 "0 "开始建立条形。这样的直方图不能从水平(如50)开始绘制。

我们应该从指标数组的数值范围 中减去50,将数值从-50移到50,而不是像原始资料中的0到100。而不是50级,将是0级。 而且

为了安排高于和低于0的直方图,我将不得不使用两个直方图,一个是 "负的",低于0,另一个是 "正的",高于0。 我想:-))

当然,这也是一种选择,而且现在对我来说可能更容易实现,但我想了解它并找到ERROR。


我做错了什么?数值计算正确(我在测试器中一步步检查),颜色指数变化正确,但指标本身没有影响,颜色没有变化,颜色指数之间没有联系。

SetIndexBuffer(6,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX); 

和显示。还是谢谢你。

 

做了修改,增加了版画,可以看到每个勾的变化。

可以看出,该指数等于绿色值 "32768",它必须是,因为

ExtMainBuffer[i]>50

即,随机指数高于50。但直方图的条形图仍为红色。

我已经添加了带有打印结果的文件。

附加的文件:
 

我以MQL5参考文献中的例子作为自己的例子

MQL5 参考指南 / 自定义指标 / 示例中的指标样式 / DRAW_COLOR_HISTOGRAM2

仔细检查了一切,一切都像他们所做的那样,它不工作!!!!
谁知道呢,请告知错误在哪里,有什么问题?

 
Seric29:

我只是形象地称该程序为编译器,但在一般情况下,在什么情况下会更好?

使用许多小函数而不是一个 "大块 "的代码--正如@Ilyas 建议的那样

 
Sergey Voytsekhovsky:

我以MQL5参考文献中的例子作为自己的例子

MQL5 参考指南 / 自定义指标 / 示例中的指标样式 / DRAW_COLOR_HISTOGRAM2

仔细检查了一切,一切都像他们所做的那样,它不工作!!!!
谁知道呢,请告知错误在哪里,有什么问题?

我给了你一个链接,让你学习如何使用颜色缓冲器,而不是直方图。从直方图中抽离出来,把重点放在如何处理颜色上。

 
Sergey Voytsekhovsky:

晚上好。试了很久,都是徒劳。直方图画得很正确,但不同颜色的着色(高于和低于50级)并没有赢。请告诉我,我哪里搞砸了。下面的文字,该文件是链接


吸引我注意的第一件事是缓冲器的顺序。

//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ColorHistogram_2Buffer1,INDICATOR_DATA);
   SetIndexBuffer(3,ColorHistogram_2Buffer2,INDICATOR_DATA);
   SetIndexBuffer(4,ExtHighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,ExtLowesBuffer,INDICATOR_CALCULATIONS);
   SetIn dexBuffer(6,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX);

缓冲区应该始终是连续的。例如,如果数据缓冲区是2号和3号,那么颜色缓冲区 就必须是4号。

如果这不是唯一的错误,那么我们将进一步调查。

 

我无法思考。

我摸索了半个小时,也没能弄明白。

请告诉我如何知道1点价格的卢布价值,如果在工具规格中刻度线的大小和它的价格是不同的。

例如,如果我有一个数值为10的变量

很显然,对于Uber来说,它是10卢布。

130卢布的rts

石油60卢布

在代码中是怎样的? 我很困惑,简单的点是可以的,但rts的油是不同的。

 
Konstantin Seredkin:

我无法思考。

我摸索了半个小时,也没能弄明白。

请告诉我如何知道1点价格的卢布价值,如果在工具规格中刻度线的大小和它的价格是不同的。

例如,如果我有一个数值为10的变量

很显然,对于Uber来说,它是10卢布。

130卢布的rts

石油60卢布

在代码中是怎样的? 我很困惑,简单的点是可以的,但rts的油是不同的。

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE) * volume

MQL4

 
Alexandr Sokolov:

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE) * volume

MQL4

需要MQL5

在MT4中不能进行期货交易


这是你需要的


 
Konstantin Seredkin:

需要MQL5

在MT4中不能进行期货交易


这是你需要的


所以在mql5中是一样的。甚至还延长了一点。这不正是我们所需要的吗?

符号_交易_刻度线_值

SYMBOL_TRADE_TICK_VALUE_PROFIT

符号_交易_点值_利润

计算出的获利头寸的tick值

符号_交易_点值_损失

亏损头寸的计算值为一个刻度

符号_交易_刻度线大小

最低价格变化

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...
原因: