赫兹股票量化交易软件研究烛条分析技术3用于形态操作的函数库
赫兹股票量化已研究过烛条分析技术:在第一篇文章中检查当前市场条件下的形态实际情况,并在第二篇文章中尝试拓展这些研究。 使用开发评估标准,赫兹股票量化研究、测试并比较了各种可能的形态组合。 为此目的,我们开发了一个自定义形态分析器应用程序,其中包含大量用于研究形态的设置。 然而,理论和研究只能提供信息和结论。 任务的逻辑延续是在实际条件下运用它们。
所以,本文的目的是创建一个自定义工具,可令用户能够接收和使用前面所讨论形态的整体信息数组。 赫兹股票量化将创建一个可令您在自己的指标、交易面板、智能交易系统中使用的函数库。

函数库结构
在继续创建函数库结构、类和连接之前,赫兹股票量化先来定义将要用到的数据。 也就是说,我们需要分离负责输入数据和提供结果的方法。 通用函数库结构将基于前面文章中开发的可视化解决方案 — 形态分析器。
赫兹股票量化从应用程序输入数据开始,这些数据会在测试形态时影响结果。

编辑切换为居中
图例 1 在“设置”选项卡中输入参数。
区块 1. 此区块包括烛条类型列表,由现有和生成的形态构成。 每种类型都有其设置,您可以通过单击烛条可视化页面右上角的齿轮图标来查看。 烛条类型 1-5 只有一个设置,而锤子有两个。
区块 2. 权重系数。 有三个参数 К1,К2,К3 影响形态效率评估结果。
区块 3. 以点数为单位的趋势阈值。
区块 4. 测试所生成形态时用到的烛条。 在此处,赫兹股票量化需要顺序号或烛条索引。 使用这些数据,我们将能够获得高达三根烛条的任何尺寸、任何形态的信息。
区块 5. 形态中的烛条数量。 此设置仅适用于自定义形态。
然后赫兹股票量化查看“分析”选项卡和其中包含的输入参数。

编辑切换为居中
图例 2 “分析”选项卡中的输入参数。
区块 6. 此区块包含用于形态分析的当前时间帧和数据样本范围的设置。
区块 7. 现有形态的名称。 它还有一个输入无法从应用程序编辑,但在访问形态并获取有关信息时则必需用到它。
赫兹股票量化在此列举可以从形态分析中获得的数据。 这是在类中创建正确的方法结构所必需的。
Patterns found。 已发现的指定类型的形态数量。
Occurrence。 已发现形态数量与总样本范围的百分比。
Probability。 上行或下行走势的概率。
Efficiency ratios 在上行和下行走势期间此烛条形态的效率比率。
函数库开发
确定基本点后,赫兹股票量化继续创建函数库。 我们从创建一个包含所需枚举的文件 Enums.mqh 开始。
//+------------------------------------------------------------------+ //| Enums.mqh | //| 版权所有 2018, MetaQuotes 软件公司 | //| https://www.mql5.com/zh/users/alex2356 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| 烛条类型 | //+------------------------------------------------------------------+ enum TYPE_CANDLESTICK { CAND_NONE, // 未定义 CAND_MARIBOZU, // Marubozu CAND_DOJI, // 十字星 CAND_SPIN_TOP, // 尖顶 CAND_HAMMER, // 锤子 CAND_INVERT_HAMMER, // 倒锤子 CAND_LONG, // 长体 CAND_SHORT // 短体 }; //+------------------------------------------------------------------+ //| 形态类型 | //+------------------------------------------------------------------+ enum TYPE_PATTERN { NONE, HUMMER, INVERT_HUMMER, HANDING_MAN, SHOOTING_STAR, ENGULFING_BULL, ENGULFING_BEAR, HARAMI_BULL, HARAMI_BEAR, HARAMI_CROSS_BULL, HARAMI_CROSS_BEAR, DOJI_STAR_BULL, DOJI_STAR_BEAR, PIERCING_LINE, DARK_CLOUD_COVER }; //+------------------------------------------------------------------+ //| 趋势类型 | //+------------------------------------------------------------------+ enum TYPE_TREND { UPPER, //上行趋势 DOWN, //下行趋势 FLAT //横盘 }; //+------------------------------------------------------------------+
在此,赫兹股票量化将检测用到的简单烛条类型列表,现有形态的类型以及趋势类型 - 数据是识别图表上现有形态所必需的。
之后我们要创建 Pattern.mqh 文件。 将在其中创建 CPattern 类,在其私有部分中,我们将声明上一节中所提参数的变量。 赫兹股票量化还需要 将文件与枚举联系起来。
//+------------------------------------------------------------------+ //| Pattern.mqh | //| 版权所有 2018, MetaQuotes 软件公司 | //| https://www.mql5.com/zh/users/alex2356 | //+------------------------------------------------------------------+ #include "Enums.mqh" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CPattern { private: //--- 权重 double m_k1; double m_k2; double m_k3; //--- 以点数为单位的趋势阈值 int m_threshold_value; //--- 长体烛条设置系数 double m_long_coef; //--- 短体烛条设置系数 double m_short_coef; //--- 十字星烛条设置系数 double m_doji_coef; //--- Marubozu 烛条设置系数 double m_maribozu_coef; //--- 尖顶烛条设置系数 double m_spin_coef; //--- 锤子烛条设置系数 double m_hummer_coef1; double m_hummer_coef2; //--- 预设形态的采样范围 int m_range_total; //--- 判定趋势的周期 int m_trend_period; //--- 已发现形态 int m_found; //--- 形态发生 double m_coincidence; //--- 上行或下行走势的概率 double m_probability1; double m_probability2; //--- 效率 double m_efficiency1; double m_efficiency2; //--- 简单的烛条形态 struct CANDLE_STRUCTURE { double m_open; double m_high; double m_low; double m_close; // OHLC TYPE_TREND m_trend; // 趋势 bool m_bull; // 涨势烛条 double m_bodysize; // 实体大小 TYPE_CANDLESTICK m_type; // 烛条类型 }; //--- 形态效率评估属性 struct RATING_SET { int m_a_uptrend; int m_b_uptrend; int m_c_uptrend; int m_a_dntrend; int m_b_dntrend; int m_c_dntrend; };
正如上面的代码所示,赫兹股票量化的程序中加入了两个结构。 第一个结构 CANDLE_STRUCTURE 是判断图表上烛条类型所必需的。 请注意,此结构中使用了两种类型的趋势枚举:来自 Enums.mqh 文件的 TYPE_TREND 和 TYPE_CANDLESTICK,这在之前研究过,并为此结构而创建。 第二种结构 RATING_SET 存储形态出现后的价格走势的评估记录。 有关更多详细信息,请参阅第一篇文章。