我想在主要价格窗口下绘制一些COT数据作为指标。 COT数据是外部数据,即与价格无关。所以不能把它写成从价格计算的传统指标。由于我拥有所需的所有数据,因此我无需进行任何计算。我只需要转换日期和时间,使其与价格图表保持一致。我会弄清楚以后怎么做。现在,如果我们忽略对齐,我想问的是如何在价格图表下绘制数据?谢谢!
答案 0 :(得分:0)
使用MT4-GUI工具并以编程方式将数据直接绘制到MT4.Graph中或使用GUI对象的屏幕布局平面,独立于基础实时 - [TimeDOMAIN,PriceDOMAIN]
- 图形,两者都使用< strong>专家顾问 - 类型 MQL4
- 代码。我们最常使用这种方法来完成所有任务,通常作为自定义指标类型的MQL4
- 代码,作为 新建 - MQL4.56789
< / strong>代码执行引擎已将所有(是的,所有)自定义指标代码单元执行的可实现性能降低到单个,因此实时敏感和可能阻塞的线程。
使用这种替代方案,您可以保留代码设计的完全自由,并且可以从预计算和预处理中获益良多。在进入交易循环之前预先设置OnInit(){...}
部分内的GUI对象。这也最大限度地减少了与OnTick(){...}
事件循环内部更新GUI场景相关的延迟成本。
也可以选择使用独立的脚本类型的MQL4
- 代码单元来执行类似的工作,因为COT数据是每周公布的,因此是静态的。 / p>
启动脚本是一个步骤,只要可行就可以发生,这个实现模型也可能享受一些事后修改工具,可以从另一个EA交易或另一个脚本MQL4
- 代码运行,为此对于一些事后现场GUI场景修改/维护。
如果一个人确实坚持这样做,那么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.000
秒print(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()