MT4:如何在价格图表下绘制现有数据作为指标?

时间:2017-04-08 13:26:47

标签: plot indicator mql4 mt4

我想在主要价格窗口下绘制一些COT数据作为指标。 COT数据是外部数据,即与价格无关。所以不能把它写成从价格计算的传统指标。由于我拥有所需的所有数据,因此我无需进行任何计算。我只需要转换日期和时间,使其与价格图表保持一致。我会弄清楚以后怎么做。现在,如果我们忽略对齐,我想问的是如何在价格图表下绘制数据?谢谢!

2 个答案:

答案 0 :(得分:0)

备选方案A:

使用MT4-GUI工具并以编程方式将数据直接绘制到MT4.Graph中或使用GUI对象的屏幕布局平面,独立于基础实时 - [TimeDOMAIN,PriceDOMAIN] - 图形,两者都使用< strong>专家顾问 - 类型 MQL4 - 代码。我们最常使用这种方法来完成所有任务,通常作为自定义指标类型的MQL4 - 代码,作为 新建 - MQL4.56789 < / strong>代码执行引擎已将所有(是的,所有)自定义指标代码单元执行的可实现性能降低到单个,因此实时敏感和可能阻塞的线程。

使用这种替代方案,您可以保留代码设计的完全自由,并且可以从预计算和预处理中获益良多。在进入交易循环之前预先设置OnInit(){...}部分内的GUI对象。这也最大限度地减少了与OnTick(){...}事件循环内部更新GUI场景相关的延迟成本。

备选方案B:

也可以选择使用独立的脚本类型的MQL4 - 代码单元来执行类似的工作,因为COT数据是每周公布的,因此是静态的。 / p>

启动脚本是一个步骤,只要可行就可以发生,这个实现模型也可能享受一些事后修改工具,可以从另一个EA交易或另一个脚本MQL4 - 代码运行,为此对于一些事后现场GUI场景修改/维护。

备选C:

如果一个人确实坚持这样做,那么GUI组合可能会组装在一个相当特殊的实时计算的自定义指标类型的MQL4 - 代码中。

这种方法但必须小心地将GUI组合部署到自定义指标OnInit(){...}部分,并避免在OnCalculate(){...}的上述关键部分内阻止执行流程的任何风险。

缓冲映射,基于寄存器的自定义指标数据&amp;为了更高级的目的,图形工具相当严格,不严格遵循代码的硬连线逻辑,只响应MarketEvent-s流,它可能但不一定会立即发生,但是由一种小批量,以分段(因此阻塞性较小)的处理方式处理DataStore的整个深度。

在自定义指示器的OnInit()部分内构建GUI场景,如果要读取外部数据源和/或任何类似类型的平台间通信,可能仍然可以从分布式处理中受益(对于消息或信令目的)。

我的选择是 [A]

{ Date, Time } 映射到MQL4-datetime是微不足道的,MQL4自datetime开始int以来经常使用1970-01-01,00:00:00.000print(1...5) // Prints "1...5" debugPrint(1...5) // Prints "CountableClosedRange(1...5)" 这么简单,那么容易。

答案 1 :(得分:0)

声明指标缓冲区:

double ExtBufferCOT[];

分配缓冲区的索引

SetIndexStyle(  0, DRAW_LINE    );
SetIndexBuffer( 0, ExtBufferCOT );
OnCalculate()函数中的

- 确保是时候再次检查水平(我认为你不需要每次滴答都更新它们,对吗?也许每天一次或每周一次)然后阅读您拥有的文件(我们没有文件示例,因此无法描述如何执行此操作),使用 StrToTime() {{1}转换文件的元素} 最后一步 - 从文件中获取最后N行,并将它们映射到指标缓冲区:

StrToDouble()