赫兹期货量化交易软件:Chuvashov 的三角形机械交易系统
简介
本文讨论了如何计算柱的位置和趋势线的预期交叉时间。 趋势线的产生原则接近于 Thomas DeMark 在最后的时间间隔上构建 TD 的原则。
尽管所提供的应用程序是一个成熟的自动化 Expert Advisor,但可以集成到更加复杂的交易系统中作为它的一部分。

编辑切换为居中
构建交叉通道的基本原则
“Chuvashov 的三角形”形态的本质在于以下理念:在任何时点,赫兹期货量化始终具有最后两个下分形和两个上分形。 通过这两个上分形和两个下分形绘制趋势线。
如果这 2 条线继续向右延伸时交叉形成三角形,我们就得到被称为“Chuvashov 的三角形”的形态。 这两条基准线的交叉点被称为顶点。 按照 4 个分形出现的顺序对其进行编号。
通过左边第二个分形绘制一条垂直线。 同时,绘制一条通过顶点的垂直线。 这两条垂直线之间的蜡烛图的数量(包含线上的蜡烛图)除以 3 并进行圆整,在顶点的左侧绘制第三条垂线。
穿过第二个分形绘制的垂线和中间垂线之间的距离将构成 实际突破区域。

编辑
图 1 绘制三角形
赫兹期货量化开始绘制三角形。
最后 4 个分形可能存在多个位置,其中要么不可能绘制三角形,要么就是过短或过长。

编辑
图 2 分形的不利位置示例
因此,有必要引入一些满足三角形绘制的条件:
三角形线收敛的一些条件:
上线和下线的第一个分形应该在高度上间距至少 20-30 个基点(该值可以在测试时更加确切的指定)。
上线和下线的第一个分形之间的距离小于两线的第二个分形之间的距离。
上线的第一个分形应低于同一条线的第二个分形,而下线的第一个分形应高于下线的第二个分形。
这些补充条件已经在形态形成条件的程序块中予以考虑。

编辑
图 3 实际突破区域
这似乎很清楚,但我们来看图 3。 我们如何定义两条基准线发生交叉时的柱数?
在线突破的时候,尚不知道是否为真实的突破,尽管已经是进入市场的时机。 真实突破区域计算程序块利用时间参数解决了这个问题,即在时间范围内定义基准线的交叉。
赫兹期货量化知道,每过一段时间图表上就出现一个柱。 例如,在 H1 图表上每小时出现一个新柱。 只有知道了这两条线上单位时间的价格变化率,才能计算交叉的时间。 只有知道了从三角形的“底”到交叉时刻的时间量,才能计算交叉之前的柱数(时间单位)。 真实突破区域也在这个程序块进行定义。
该 Expert Advisor 是逐块进行设计。
反复出现最多的功能块一般位于程序的开头:打开和关闭头寸,绘制符号和线的函数。 主要的可执行程序还包含单独的程序块,比如:
搜索上分形和下分形的程序块;
形态形成条件的程序块;
计算真实突破区域的程序块;
打开头寸的条件的程序块。
功能块的程序片段显示如下。
// --------------------------------------------------------------------+ void Op_Sell_Ch() { if(!OrderSend(Symbol(),OP_SELL,Lots,Bid,2,Ask+SL_S*Point, Bid-TP_S*Point," ",Magic,0,Red)) { Print(" SELL order open error # ",GetLastError()); } return(0); } // --------------------------------------------------------------------+ void Op_Buy_Ch() { if(!OrderSend(Symbol(),OP_BUY,Lots,Ask,2,Bid-SL_B*Point, Ask+TP_B*Point," ",Magic,0,Blue)) { Print(" SELL order open error # ",GetLastError()); } return(0); } //+--------------------------------------------------------------------+ void Close_S_Ch() { if(!OrderClose(OrderTicket(),OrderLots(),Ask,2,Aqua)) {Print(" Cl.ord.# ",OrderTicket()," Error # ",GetLastError());} return(0); } //+--------------------------------------------------------------------+
根据分形的创建规则,在柱的排序循环中提供了用于构建三角形基准线的上参考点和下参考点的搜索。
进行参考点的编号时,已考虑“对时间序列的元素标引是从最后一个到第一个逆向进行。 当前柱是数组中最后一个,标引为 0”。