2

如果价格触及对象,如何获得?可以说,该对象是手动绘制的干草叉或趋势线。我想,它应该以这种方式开始:

if(Bid==?)

4

1 回答 1

4

不错的猜测

让我们一步一步来讲述这个故事。

GUI 对象

一个价格: 。. . 哪一个 ?

{ Ask, Bid }- 虽然大多数技术分析都是从Bid基于角度的角度得出的,但必须经历过某些 XTO 事件与Ask价格水平相关。

为简单起见,让我们保留Bid唯一的价格,而框架可以扩展为具有完全的PriceDOMAIN对偶性。

一个时间框架:. . . 哪一个 ?

听起来很奇怪?好吧,这并不奇怪,MetaTrader 终端 4 图形不允许任意放置 GUI 对象。虽然这不需要从一开始就实现,但如果试图将 GUI 对象放置在精确的TimeDOMAIN坐标上,将会失败。PriceDOMAIN坐标不受限制,但如果 GUI 对象定义点之一落在遥远或不久的将来,则会出现额外的惊喜,但相应的市场会话在管理上关闭(FRI/MON 间隙,午夜间隙,DE . 30/DAX post-Market/pre-Market-gap 等)在实时到达“未来”时间点之前。如果没有完全跳出屏幕,这些对象就会变形。

除此之外,TimeFrames 的概念还引入了另一个问题——if(Bid....)我们只是要组装的条件——在D1H4、和H1中是否成立并产生完全相同的结果?虽然这似乎只是简单地决定(而且它不是在实践中,另一个糟糕的惊喜正在等待)但可以肯定的是,满足条件星座的坐标确实并且会有所不同,具体取决于时间帧,在哪个时间帧上GUI对象被放置并用算法挑战。M5M1PriceDOMAINTimeDOMAIN

简单地说,虽然 GUI 对象被绘制为“连续的”,但它们不是。它们在生态系统中的内部表示MQL4是离散的,因此我们宁愿忘记线性和二次对象的所有代数。

最好的方法是将 GUI 对象想象为一组有序的[x-TimeDOMAIN, y-PriceDOMAIN]坐标——是的,一组有序的点,其中x(无论是否令人惊讶)在视觉上最容易误导——条形表示的中间不是“中间” “时间的真实流动,但行政市场的挂钟——时间的开始Bar

如何处理所有这些故障并猜测值?

为了至少从 MQL4 方面获得一些帮助,有一些实用函数可以做到这一点:

int     ObjectGetShiftByValue( string   anObjectNAME,      // ...
                               double   aTargetPriceLEVEL  // a price to reach
                               )

double  ObjectGetValueByShift( string   anObjectNAME,      // guess what
                               int      aShiftInTimeDOMAIN // bar index 
                               )

这对方便的功能可以省去很多麻烦,但仍然必须小心处理周末/市场缺口(“现在”可见的条形空间,但会在附近“消失”未来并敢于拥有定义点“被遗忘”的GUI对象......)。


最后但并非最不重要的......危险==......不仅在if(Bid...)
(奥威尔式的“我们都是平等的,但我们中的一些人更平等......”)

猜猜每个花了一些时间构建自定义指标的人,也遇到了 IEEE-float numeric (im) precision的阴暗面。平滑和深度卷积计算迟早会引入这种现象,并且急救( double-precision float )并不能消除这些非整数值表示必须遭受的数值精度的主要损失。

==这就是说,人们应该故意使用不精确的数字并替换二进制严格相等测试(

#define EQUALITY_TOLERANCE  0.000005
  if (  EQUALITY_TOLERANCE > MathAbs( Bid - aTargetPRICE ) )
  {  // EQUAL

   }
  else
  {

   }

当然,同样的逻辑也适用于PriceDOMAIN交叉测试和其他衍生{ >= | > | < | <= | != }条件。

在此处输入图像描述

于 2016-01-25T10:57:02.187 回答