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

Plot MT4:如何在价格图表下绘制现有数据作为指标?,plot,indicator,mql4,mt4,Plot,Indicator,Mql4,Mt4,我想在主价格窗口下绘制一些COT数据作为指标。COT数据是外部数据,即独立于价格。因此,人们不能像传统的根据价格计算的指标那样来写它。因为我有所有需要的数据,我不需要做任何计算。我只需要转换日期和时间,使其与价格表一致。我以后会想办法的。现在,如果我们忽略对齐,我想问的是如何在价格图表下绘制数据?谢谢 备选案文A: 使用MT4-GUI工具,以编程方式将数据直接绘制到MT4.Graph中,或使用GUI对象的屏幕布局平面,独立于底层的live-[时域,价格域]-图形,均使用专家顾问-类型的MQL4-

我想在主价格窗口下绘制一些COT数据作为指标。COT数据是外部数据,即独立于价格。因此,人们不能像传统的根据价格计算的指标那样来写它。因为我有所有需要的数据,我不需要做任何计算。我只需要转换日期和时间,使其与价格表一致。我以后会想办法的。现在,如果我们忽略对齐,我想问的是如何在价格图表下绘制数据?谢谢

备选案文A: 使用MT4-GUI工具,以编程方式将数据直接绘制到MT4.Graph中,或使用GUI对象的屏幕布局平面,独立于底层的live-
[时域,价格域]
-图形,均使用专家顾问-类型的
MQL4
-代码。我们最常在所有任务中使用这种方法,这些任务通常作为
MQL4
-code的自定义指示符类型着陆,因为New-
MQL4.56789
代码执行引擎将所有(是的,所有)自定义指示符代码单元执行的可实现性能降低为单个,因此,实时敏感和潜在的阻塞,线程

使用此替代方案,您可以保留代码设计的全部自由,并且在进入交易循环之前,可以在
OnInit(){…}
部分中预计算和预设置GUI对象,从而受益匪浅。这还最大限度地减少了从
OnTick(){…}
事件循环内部更新GUI场景所需的延迟成本


备选案文B: 还可以选择使用独立的脚本类型的
MQL4
-代码单元执行类似的工作,因为COT数据每周公布,因此本身是静态的

启动脚本是一个步骤,只要可行,就可以进行,并且该实现模型还可以使用一些事后修改工具,可以从另一个专家顾问或另一个脚本
MQL4
-code运行,以便进行一些事后实时GUI场景修改/维护


备选案文C: 如果确实有人坚持这样做,GUI组合可能会被组装在一个相当特殊的、实时计算的自定义指示符类型的
MQL4
-code中

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

缓冲区映射、基于寄存器的自定义指示器数据和图形工具对于更高级的用途来说相当严格,它们不严格遵循代码的硬接线逻辑,只响应MarketEvent-s流,这些事件可能(但不必)立即发生,但通过一种小批量进行安排,以分段(从而减少阻塞)处理方法处理数据存储的整个深度

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


我的选择是[A]

{Date,Time}
映射到
MQL4 datetime
是一件小事,MQL4从一开始就使用
datetime
作为
int
1970-01-01,00:00.000
以来经过的秒数,非常简单,非常容易。

备选方案a: 使用MT4-GUI工具,以编程方式将数据直接绘制到MT4.Graph中,或使用GUI对象的屏幕布局平面,独立于底层的live-
[时域,价格域]
-图形,均使用专家顾问-类型的
MQL4
-代码。我们最常在所有任务中使用这种方法,这些任务通常作为
MQL4
-code的自定义指示符类型着陆,因为New-
MQL4.56789
代码执行引擎将所有(是的,所有)自定义指示符代码单元执行的可实现性能降低为单个,因此,实时敏感和潜在的阻塞,线程

使用此替代方案,您可以保留代码设计的全部自由,并且在进入交易循环之前,可以在
OnInit(){…}
部分中预计算和预设置GUI对象,从而受益匪浅。这还最大限度地减少了从
OnTick(){…}
事件循环内部更新GUI场景所需的延迟成本


备选案文B: 还可以选择使用独立的脚本类型的
MQL4
-代码单元执行类似的工作,因为COT数据每周公布,因此本身是静态的

启动脚本是一个步骤,只要可行,就可以进行,并且该实现模型还可以使用一些事后修改工具,可以从另一个专家顾问或另一个脚本
MQL4
-code运行,以便进行一些事后实时GUI场景修改/维护


备选案文C: 如果确实有人坚持这样做,GUI组合可能会被组装在一个相当特殊的、实时计算的自定义指示符类型的
MQL4
-code中

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

缓冲区映射、基于寄存器的自定义指示器数据和图形工具对于更高级的目的来说相当严格,它们不严格遵循代码的硬接线逻辑,只响应MarketEvent-s流,这可能,但不需要
double ExtBufferCOT[];
SetIndexStyle(  0, DRAW_LINE    );
SetIndexBuffer( 0, ExtBufferCOT );
double       value;
datetime     time;                      // - your values from file are here

int          shift  = iBarShift( _Symbol, 0, time );
ExtBufferCOT[shift] = value;            /* probably need to fill buffer
                                           of next candles too
                                           if your chart timeframe
                                           is smaller then frequency
                                           of observations in the file
                                           */