函数 ObjectGetValue_ByCurrent .....Delta_ByCurrent .....Delta_ByTimeShift .....Delta_PerBar - MetaTrader 4程序库
- 显示:
- 2146
- 等级:
- 已发布:
- 2016.03.29 12:59
- 已更新:
- 2016.11.22 07:33
- 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
此处提供的函数返回位于任意图表窗口内图形对象随时间线性变化的价格。
函数位于测试脚本之内, 可直观展示一根柱线是如何形成的。
概念。
标准函数 ObjectGetValueByShift() 返回柱线开盘时间对应的点数, 即, 离散地时间帧步长。
这是通过将图表 X-坐标上的柱线号码作为 (int) 数值传递来确定的。
在柱线形成的时间帧内调用标准函数 ObjectGetValueByShift(), 我们将获得同样数值。
标准函数 ObjectGetValueByShift() 在整个柱线形成周期内不能计算 Y-坐标的变化。
当创建 ATS 来响应任意图形对象的交叉时, 名为 趋势线, 也许会积累数十点的 "错误"。
相应地, 我们将需要一些函数来返回每笔分时的真实数值。
ObjectGetDelta_PerBar(string "ObjectName") ObjectGetDelta_ByCurrent (string "ObjectName") ObjectGetValue_ByCurrent(string "ObjectName", int BarNumber) ObjectGetDelta_ByTimeShift(string "ObjectName", double TimeShift )
函数 ObjectGetDelta_PerBar(string "ObjectName") 返回一根柱线与图形对象的倾角来计算对象坐标, 即, 它返回 delta = 1-柱线增量。 计算特征。标准函数 iBarShift() 在所有时间内返回零号柱线右侧为零。不过, 一个图形对象也许位于零号柱线右侧。这就是为什么以柱线为单位计算的图形对象长度, 与按时间计算的对象坐标不同, 结果按照时间帧划分。这允许我们在操作对象时可以越过零号柱线的位置。
函数 ObjectGetDelta_ByCurrent (string "ObjectName") 根据柱线自开始到消散的时间计算一根柱线内的当前值。
函数 ObjectGetValue_ByCurrent(string "ObjectName", int BarNumber ) 当前线性递增值的合计 ObjectGetDelta_ByCurrent () 以及指定柱线号码的值, 如果其值不等于零。
对于零号柱线将会返回 true。不过, 在所有其它柱线上, 这将是取自零号柱线形成时间的偏移值。即, 如果您使用非零柱线号码调用它, 它将显示一个取自形成的零柱线的平滑偏移时间比例。在我们的想法里, 这个功能对于 ATS 很便利。
获取的图形对象的价格零值 超出了其范围。在此情况下, 函数将返回零。程序员必须检查非等于零的返回值。
ObjectGetDelta_ByTimeShift(string "ObjectName", double TimeShift )
如果构筑一款 ATS, 若有一个函数能通过时间来推算出过去或未来 Y-坐标值的增量, 将会十分便利。
此脚本在演示/实盘的 М1 图表上测试展示:
1. 到来的分时不规律;
2. 柱线开盘/绘制事件的延迟是因为没有分时;
3. 柱线临时缺失, 并稍后再分配开盘时间给它们。
例如:
时间[0]=1208396460 线[0]=162.5545 当前柱线 0 内的值=162.5300 线 (- 1)=162.5273 增量 以 (1) 根柱线=-0.0273 增量 以 (2) 根柱线=-0.0545
柱线时间百分比=72% 价格调整线=-0.0195
时间[0]=1208396400 线[0]=162.5818 当前柱线 0 内的值=162.5400 线 (- 1)=162.5545 增量 以 (1) 根柱线=-0.0273 增量 以 (2) 根柱线=-0.0545
柱线时间百分比=152% 价格调整线=-0.0414
时间[0]=1208396400 线[0]=162.5818 当前柱线 0 内的值=162.5500 线 (- 1)=162.5545 增量 以 (1) 根柱线=-0.0273 增量 以 (2) 根柱线=-0.0545
柱线时间百分比=127% 价格调整线=-0.0345
建议:
解释: 在底部靠近 "日志"的 "智能交易系统" 里参看结果。
当从图表里移除脚本时, 可能会有点延迟, 因为 MT4 要花费一些时间来中断。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/8080
本脚本程序使用拖曳方法关闭任意仓位, 也就是使用鼠标把脚本拖到订单线上再放开就关闭订单.
Period_Converter_MN一个可以看到更"大"时段的指标(例如, 半年或者一年图).