MQL4如果价格击中对象怎么得到?

时间:2016-01-24 14:34:18

标签: trading algorithmic-trading quantitative-finance mql4 forex

如果价格达到某个对象,该怎么办?可以说,该对象是手动绘制的干草叉或趋势线。我猜,它应该以这种方式开始:

public String getNextId(Patient patient) { String query = "SELECT idpatient FROM virtualclinic.patient ORDER BY idpatient DESC LIMIT 1"; Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try{ con = dataSource.getConnection(); ps = con.prepareStatement(query); rs = ps.executeQuery(); while (rs.next()){ int PID; PID = Integer.parseInt(rs.getString(1)); int nextPID = PID + 1; patient.setId(String.valueOf(nextPID)); } return patient.getId(); }catch(SQLException e){ e.printStackTrace(); }

1 个答案:

答案 0 :(得分:4)

猜不错

让我们一步一步地讲述故事。

GUI-objects

价格:。 。 。哪一个?

{ Ask, Bid } - 虽然大多数技术分析都来自基于 Bid 的观点,但必须经历过某些XTO事件与 Ask 价格水平相关。

为了简单起见,让我们将Bid作为唯一的价格,而框架可以扩展为具有完整的PriceDOMAIN二元性。< / p>

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

听起来很奇怪?好吧,不是那么令人惊讶,MetaTrader Terminal 4图形允许任意放置GUI对象。虽然这不需要从一开始就实现,但如果尝试将GUI对象放在精确的TimeDOMAIN坐标上,则会失败。 PriceDOMAIN坐标不受限制,但如果其中一个GUI对象定义点落入远期或近期,但相应的市场会话在行政上关闭(FRI / MON-gap,午夜),则会出现其他意外情况。 -gap,DE.30 / DAX post-Market / pre-Market-gap etc.)在实时到达&#34; future&#34;之前时间点。如果没有完全跳出屏幕,这些物体会变形。

除此之外,TimeFrames的概念引入了另一个问题 - 我们刚刚组装的条件 if(Bid....) - 保持并在D1中产生相同的结果,H4H1M5M1?虽然这似乎只是在PriceDOMAIN中决定(并且它实际上并没有,另一个令人惊讶的是等待在幕后),但很确定,TimeDOMAIN坐标满足条件星座,并且会有所不同,具体取决于TimeFrame,GUI对象放置在该TimeFrame上并使用算法进行挑战。

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

最好的方法是将GUI对象想象为[x-TimeDOMAIN, y-PriceDOMAIN]坐标的有序集合 - 是,有序的点集,其中 {{1} (令人惊讶与否)在视觉上是最具误导性的 - 酒吧表示的中间不是&#34;中间&#34;实时流动,但行政市场挂钟 - x开始的时间。

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

要获得MQL4方面的至少一些帮助,有一些实用功能:

Bar

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

这个方便的功能可以节省很多麻烦,但是仍然需要仔细处理周末/市场差距(现在是#34;现在&#34;可见,但是在不久的将来会消失,并且敢于拥有一个带有定义点的GUI对象&#34;忘记&#34;就在那里......)。

最后,但并非最不重要...... double ObjectGetValueByShift( string anObjectNAME, // guess what int aShiftInTimeDOMAIN // bar index ) 的危险......不仅在== 中(一个Orwellish&#34) ;我们都是平等的,但我们中的一些人更平等......&#34;)

猜猜那些花了一些时间使用自定义指标构建的人,也遇到了IEEE-float数字(im)精度的黑暗面。平滑和深度卷积计算很快就会引入这种现象,而急救if(Bid...)并没有消除数值精度的主要损失,这些非整数值的表示只是必须受到影响。

这就是说,人们应该故意使用不精确的数字并替换二进制严格的相等测试( ( double-precision float ) ),这些测试无法在嘈杂的不精确数字上得出公平的答案,并且而是使用这个故障:

==

当然,相同的逻辑适用于#define EQUALITY_TOLERANCE 0.000005 if ( EQUALITY_TOLERANCE > MathAbs( Bid - aTargetPRICE ) ) { // EQUAL } else { } 交叉测试和其他派生PriceDOMAIN条件。

enter image description here