文章 "DoEasy 函数库中的时间序列(第三十五部分):柱线对象和品种时间序列列表"

 

新文章 DoEasy 函数库中的时间序列(第三十五部分):柱线对象和品种时间序列列表已发布:

本文开始 DoEasy 函数库的新系列,与创建相关,从而简化和快速进行程序开发。 在当前文章中,我们将为函数库实现访问和操控品种时间序列数据的功能。 我们计划创建柱线(Bar)对象,来存储时间序列的主要和扩展的柱线数据,并将柱线对象置于时间序列列表之中,从而便于对象的搜索和排序。

本文开始函数库说明的新篇章,从而方便开发 MetaTrader 5/4 终端程序。 第一个系列(共 34 篇文章)专门讨论函数库对象及其互连的概念。 此概念是用来开发操控帐户的功能 — 当前状态和历史记录。

目前,该函数库具有以下功能:

  • 搜索、排序和比较任何订单或仓位的数据,
  • 快捷访问所有订单和仓位属性,
  • 跟踪任何帐户事件,
  • 获取和比较帐户和品种数据,
  • 响应数据库(集合)中所有存在对象的属性变化,并将所发生事件发送通知至程序。

我们还可以告诉函数它应该响应哪些事件,并发送有关受监视事件的通知。

此外,我们已实现了操控终端交易功能的能力。 我们还开发出了新型的交易请求 — 延后交易请求,它令我们能够在各种交易条件下创建程序行为逻辑,并提供创建新型挂单的全套功能。
所有这一切,以及更多内容均已在函数库探讨的前一个系列中得以创建和阐述。

函数库说明的第二个系列会探讨操控价格数据、品种图表、市场深度、指标、等等更多方面。 通常,文章的新系列将致力于开发函数库功能,从而能够快速访问、搜索、比较和排序任何价格数据数组,以及它们的存储对象和来源。

作者:Artyom Trishkin

 

在 SB 中已经有一个同名的 CSeries 类时,再创建一个新的CSeries 类 有点不合规矩。

Документация по MQL5: Стандартная библиотека / Индикаторы / Базовые классы / CSeries
Документация по MQL5: Стандартная библиотека / Индикаторы / Базовые классы / CSeries
  • www.mql5.com
Класс CSeries обеспечивает всем своим потомкам (классам таймсерий и индикаторов) возможность упрощенного доступа к общим функциям API MQL5 в части работы с серийными данными.
 
Denis Kirichenko:

在 SB 中已经有一个同名的 CSeries 类时,再创建一个新的CSeries 类 有点不妥。

我同意。谢谢,我会解决的。

 

每个条形图的一个非常重要的参数是最高价的时间和最低价的时间,或者至少有一个标志显示两个最高价或最低价中哪个在时间上最先出现。可以通过分析较低时间框架的柱状图或直接从 M1 中获取此信息。请添加此功能。

 
Rosimir Mateev:

每个条形图的一个非常重要的参数是最高价的时间和最低价的时间,或者至少有一个标志显示两个最高价或最低价中哪个在时间上最先出现。可以通过分析较低时间框架的柱状图或直接从 M1 中获取此信息。请添加此功能。

这种功能可以自己完成--低时间框架上有所有数据,它们的条形图上也有所有数据。这不是最后一篇文章,在接下来的文章中将完整列出任何符号的所有时间框架,因此您不应在已有文章中添加不必要的功能。尤其是因为这会导致时间序列更新时间增加。因此,与其在不需要的地方进行此类分析,还不如根据要求从已有的工具中获取数据。

 

Hi Artyom --使用 DoEasy 而不是标准库, 创建一个用于检测不同蜡烛形态的类,类似于https://www.mql5.com/zh/code/316 中的 CCandlePattern 的最佳方法是什么

我这么问是为了避免做一些与你的这个库的未来方向完全相悖的事情......我的想法是:(1) 修改扩展 CBarCSeries 类以满足我的需要;或者(2) 或使用 DoEasy 事件检测我感兴趣的符号/周期上的新条形图,然后执行我的代码来检查我的蜡烛形态,并再次使用 DoEasy 来下单或开仓。也许方案 2 更简洁,风险更小,但如果您有其他建议,请告诉我。

蜡烛形态.mqh

class  CCandlePattern : public  CExpertSignal
  {
protected:

// ...

   //--- 用于检查蜡烛图形态形成的方法
   double            AvgBody(int ind);
   double            MA(int ind)                const { return(m_MA.Main(ind));             }
   double            Open(int ind)              const { return(m_open.GetData(ind));        }
   double            High(int ind)              const { return(m_high.GetData(ind));        }
   double            Low(int ind)               const { return(m_low.GetData(ind));         }
   double            Close(int ind)             const { return(m_close.GetData(ind));       }
   double            CloseAvg(int ind)          const { return(MA(ind));                    }
   double            MidPoint(int ind)          const { return(0.5*(High(ind)+Low(ind)));   }
   double            MidOpenClose(int ind)      const { return(0.5*(Open(ind)+Close(ind))); }
   //--- 检查蜡烛图形态的方法
   bool              CheckPatternThreeBlackCrows();
   bool              CheckPatternThreeWhiteSoldiers();
   bool              CheckPatternDarkCloudCover();
   bool              CheckPatternPiercingLine();
   bool              CheckPatternMorningDoji();
   bool              CheckPatternEveningDoji();
   bool              CheckPatternBearishEngulfing();
   bool              CheckPatternBullishEngulfing();
   bool              CheckPatternEveningStar();
   bool              CheckPatternMorningStar();
   bool              CheckPatternHammer();
   bool              CheckPatternHangingMan();

MQL5 Wizard - Trade Signals Based on Hammer/Hanging Man + MFI
MQL5 Wizard - Trade Signals Based on Hammer/Hanging Man + MFI
  • www.mql5.com
The generic idea is the following: the class of trading signals is derived from CExpertSignal, the next, it's necessary to override the LongCondition() and ShortCondition() virtual methods with your own methods. The best way is to create the separate class, derived from CExpertSignal for checking of formation of candlestick patterns. For...
 
ddiall :

你好,Artyom --使用 DoEasy 而不是标准库, 创建一个用于检测不同蜡烛形态的类的最佳方法是什么,类似于https://www.mql5.com/zh/code/316 中的 CCandlePattern 吗?

我这么问是为了避免做一些与你的这个库的未来方向完全相悖的事情......我的想法是:(1) 修改扩展 CBarCSeries 类以满足我的需要;或者(2) 或使用 DoEasy 事件检测我感兴趣的符号/周期上的新条形图,然后执行我的代码以检查我的蜡烛形态,并再次使用 DoEasy 来下单或开仓。也许方案 2 相对于您的未来发展更简洁、风险更小,但如果您有其他建议,请告诉我。

蜡烛形态.mqh

class   CCandlePattern :  public   CExpertSignal
  {
protected :

// ...

    //--- 用于检查蜡烛图形态形成的方法
    double             AvgBody( int  ind);
    double             MA( int  ind)                 const  {  return (m_MA.Main(ind));             }
    double             Open( int  ind)               const  {  return (m_open.GetData(ind));        }
    double             High( int  ind)               const  {  return (m_high.GetData(ind));        }
    double             Low( int  ind)                const  {  return (m_low.GetData(ind));         }
    double             Close( int  ind)              const  {  return (m_close.GetData(ind));       }
    double             CloseAvg( int  ind)           const  {  return ( MA(ind) );                    }
    double             MidPoint( int  ind)           const  {  return ( 0.5 *(High(ind)+Low(ind)) );   }
    double             MidOpenClose( int  ind)       const  {  return ( 0.5 *(Open(ind)+Close(ind)) ); }
    //--- 检查蜡烛图形态的方法
    bool               CheckPatternThreeBlackCrows();
    bool               CheckPatternThreeWhiteSoldiers();
    bool               CheckPatternDarkCloudCover();
    bool               CheckPatternPiercingLine();
    bool               CheckPatternMorningDoji();
    bool               CheckPatternEveningDoji();
    bool               CheckPatternBearishEngulfing();
    bool               CheckPatternBullishEngulfing();
    bool               CheckPatternEveningStar();
    bool               CheckPatternMorningStar();
    bool               CheckPatternHammer();
    bool               CheckPatternHangingMan();

该库将包含一个用于搜索 PriceAction 烛台形态和各种日本烛台形态的类。

我认为最稳妥的做法是在 CBar 对象类中添加一个新属性。相应地,时间序列集合将能够搜索所需的蜡烛图和形态。

因此,它将出现在库中。

目前,您可以在时间序列集合的列表中搜索所需的形态和蜡烛图--这里有所有的柱状图,您可以使用它们来确定形态。

 
Artyom Trishkin:

该库将包含一个用于搜索 PriceAction 烛台形态和各种日本烛台形态的类。

我认为最稳妥的做法是在 CBar 对象类中添加一个新属性。这样,时间序列集合就能搜索到所需的蜡烛图和形态。

因此,它将出现在库中。

目前,您可以在分时序列集合的列表中搜索所需的形态和蜡烛图 - 这里有所有的条形图,您可以使用它们来确定形态。

听起来不错!你们打算什么时候开始实现这些功能?您对任何代码贡献感兴趣吗?

 
Dima Diall :

听起来不错!你们打算什么时候开始实施这些好东西?您对任何代码贡献感兴趣吗?

随着时间的推移:)