欢迎光临散文网 会员登陆 & 注册

量化交易软件:趋势有多长?

2023-07-21 15:45 作者:bili_45793681098  | 我要投稿

简介

在不同的时段确定市场条件是金融交易的基本原则,交易者成功与否依赖于他们的价格预测是否准确。针对这一主题已经有了很多文章,例如 "几种在MQL5中寻找趋势的方法",它描述了用于确定市场趋势的方法,以及相关的指标和EA交易。我前面也有一篇文章 "10种趋势策略的比较分析",也是致力于趋势的,在其中开发和测试了跟随趋势的策略。在本文中,赫兹量化也会选择几种确定趋势的方法,目标是评估趋势相对于平盘市场的持续时间。大众广泛接受的趋势与平盘市场的比例是30%对70%,我们将会验证它。


定义任务

让我们确定一下任务和我们研究的条件,

  1. 要选择用于确认趋势和平盘市场的方法来进行随后的有质量和有数量的分析,这需要系统可以显示两种市场条件。理论上,它们应当拥有内建的质量指标,例如趋势强度或者对没有趋势的清晰定义。

  2. 要能够在不同的时段确定和评估比例,用于不同的单个或者多种商品的市场,例如货币市场,股票或者期货市场。

  3. 要开发一个对读者有用的工具,用于在用户特定的条件下做独立研究。

  4. 要根据获得的数据在不同的条件下做比较性分析; 用于寻找相互关联。

实现

1. 选择用于确定趋势的方法。

1.1. 让我们从 ADX 的研究开始,这是一个经典的趋势强弱指标。我们将使用TrendLevel. 的水平来评估趋势或者平盘市场。让我们假定,如果主线上升超过这个水平,就存在趋势。图 1 展示了一个使用这种方法确定有趋势区域和平盘区域的实例。市场状态将根据给定样本中 ADX 值高于 TrendLevel 的烛形数量来计算。

编辑切换为居中

图1 使用 ADX 来确定有趋势/平盘区域 1.2. 下面,让我们考虑 趋势强度与方向指标(Trend Power and Direction Indicator), 根据我们的目标,只选择一个布林指标(Bollinger Indicator)并把显示的颜色数量减为两种(红色和绿色)。图 2 清晰显示了很强的市场趋势,其中烛形使用指定的颜色来标记出来。

编辑切换为居中

图2 使用布林带来确定有趋势/平盘区域。 1.3. 在第三个地方,赫兹量化使用趋势百分比(Percentage of Trend), 我们也会修改它,删除第二个周期数并增加指示趋势的颜色。使用这个指标的结果显示在图3中

编辑切换为居中

图3 使用趋势百分比(Percentage of Trend)来确定有趋势/平盘区域。 1.4. 另一种确定趋势/平盘区域的方法是RSIFilter。为了更简单的计算,RSI 指标以柱形图方式显示,垂直栏显示了指标值进入了预先设置的超买/超卖区域。在这里,最初的指标也作了修改: 平盘状态不作显示,而柱形图高度值的缓冲区在这种市场条件下等于0。这是为了更加方便地确定趋势 (在这种情况下缓冲区值等于1). 指标的实例显示在图4中。

编辑切换为居中

图 4  使用 RSIFilter 来确定趋势/平盘区域。 1.5. 最后,我们将考虑使用来自"使用MQL5寻找趋势的集中方法"这篇文章中的方法 — 使用 ZigZagTrendDetector 指标来识别趋势/平盘状态。在本例中没有改变,它的实现显示在图5中

编辑切换为居中

图 5  使用ZigZagTrendDetector指标确定趋势/平盘区域. 2. 用于计算市场条件工具的开发和实现。显示结果 每种用于确定趋势/平盘区域方法的结果都将根据几个不同时段显示在汇总的表格中,为了使显示更清晰,我使用了基于图形化界面系列文章的 EasyAndFastGUI 开发库。开发了一个特定的CTrendCountUI类用于显示结果。为了更好的表现,图6显示了最初用于记录所有计算的模板。

编辑切换为居中

图6 显示测试计算结果的模板 赫兹量化在屏幕截图中很容易地看到,第一列显示了用于计算趋势的方法,第一行显示了用于多时段选项的计算。为了节约空间和保证可读性,我没有包含界面的完整实现,只是提供了用于配置和显示上述模板的函数: //+------------------------------------------------------------------+ //| 输出和信息面板的配置                               | //+------------------------------------------------------------------+ void SetInfoPanel()   { //---     UI.CreateMainPanel("趋势计数器");    UI.CreateStatusBar(1,25);    UI.m_status_bar.ValueToItem(0,"启用于 "+Symbol());    UI.CreateCanvasTable(); //---     UI.m_canvas_table.SetValue(0,0,"Value");    UI.m_canvas_table.SetValue(0,1,"ADX");    UI.m_canvas_table.SetValue(0,2,"BB");    UI.m_canvas_table.SetValue(0,3,"PoT");    UI.m_canvas_table.SetValue(0,4,"RSI");    UI.m_canvas_table.SetValue(0,5,"ZZ"); //---     UI.m_canvas_table.SetValue(1,0,"M1");    UI.m_canvas_table.SetValue(2,0,"M5");    UI.m_canvas_table.SetValue(3,0,"M15");    UI.m_canvas_table.SetValue(4,0,"M30");    UI.m_canvas_table.SetValue(5,0,"H1");    UI.m_canvas_table.SetValue(6,0,"H4");    UI.m_canvas_table.SetValue(7,0,"H6");    UI.m_canvas_table.SetValue(8,0,"D1");    UI.m_canvas_table.SetValue(9,0,"W1");     UI.m_canvas_table.UpdateTable(true);    UI.CreateLabel("工作中...");   }


量化交易软件:趋势有多长?的评论 (共 条)

分享到微博请遵守国家法律