MQL5源码解读:CObject类
来源:互联网 发布:风险概率影响矩阵图 编辑:程序博客网 时间:2024/06/03 17:01
MQL标准库文件 Include/Object.mqh
中有这么一个类 CObject,作为 MQL中的对象基类存在。
Source : Include/Object.mqh
//+------------------------------------------------------------------+//| Object.mqh |//| Copyright 2009-2013, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#include "StdLibErr.mqh"//+------------------------------------------------------------------+//| Class CObject. |//| Purpose: Base class for storing elements. |//+------------------------------------------------------------------+class CObject {private: CObject *m_prev; // previous item of list CObject *m_next; // next item of listpublic: CObject(void): m_prev(NULL),m_next(NULL) { } ~CObject(void) { } //--- methods to access protected data CObject *Prev(void) const { return(m_prev); } void Prev(CObject *node) { m_prev=node; } CObject *Next(void) const { return(m_next); } void Next(CObject *node) { m_next=node; } //--- methods for working with files virtual bool Save(const int file_handle) { return(true); } virtual bool Load(const int file_handle) { return(true); } //--- method of identifying the object virtual int Type(void) const { return(0); } //--- method of comparing the objects virtual int Compare(const CObject *node,const int mode=0) const { return(0); } };//+------------------------------------------------------------------+
类 CObject
这个类还是比较简单的。
对于每一个 CObject 对象,私有保存其前驱、后继的指针:m_prev
,m_next
。
公开如下方法:
file_handle
文件里,并返回是否成功 Load const int file_handle bool 从句柄为file_handle
的文件里读取数据,并返回是否成功 Type void int 对象类型标识 Compare const CObject *node,const int mode=0 int 与另一对象进行比较,默认使用模式0其实我觉得以上方法本身其实是没有太大用处的,因为这个只是一个基类,它定义了所有MQL对象的公有属性,不可避免地产生笼统的释义。
但是不管怎样,我们可以看到,在MQL中的对象所具有的一些特性:
- 双向链表结构,任意的对象都具有直接访问前驱后继的可能,因此在MQL中,逐一顺序访问前驱后继是非常简单的事,在列表的末尾添加一个新的对象也是一件非常方便的事。可以看出来MQL是针对交易系统作了优化的,时间序列 具有的特性就应该使用链表的结构来存储,因为它并对“访问一个特定的位置”这个操作并不敏感,更多的是“聚合(aggregate)从某一个位置往前若干项的数据”这样的操作。
- 文件读写,MQL可能是按对象(或其列表)这样的粒度来存储数据的。一般看来,一组时间序列可能是存放在一个文件内的。
- 异质性,MQL可能定义了一套MQL对象序列(类似BSON于JSON的做法),来规范可能存放的对象类型,并且,在MQL的底层列表中,元素之间的类型可能是不一致的(异质链表)
- 可比较性,MQL对象具有比较的可能,这从数学上就定义了一种对象之间的半序关系。
0 0
- MQL5源码解读:CObject类
- MQL5源码:智能交易脚本EA结构解读
- MQL5---类
- CObject 类
- CObject类
- CObject类
- CObject类
- CObject类
- CObject类
- CObject类
- CObject类
- “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
- 【vc】CObject类
- CObject类学习
- MFC学习--CObject类
- CObject类原型
- 第三讲 CObject类
- CObject类学习
- vimdiff 使用笔记
- 数组切割问题
- leetcode 每日一题 263. Ugly Number
- 2016年3月10日设计日志
- 用Qt实现一个桌面弹幕程序(八)-- -- 桌面客户端实现④
- MQL5源码解读:CObject类
- Quartz教程四:Trigger
- Error:Unable to load class ‘org.gradle.api.publication.maven.internal.DefaultMavenFactory’
- Java 数据类型转换
- Java 进阶 之 检查型异常与非检查型异常
- 【Struts2进阶】Struts2 多方法调用的两种方式
- Android播放视频——VDPlayerSDK的使用(一)
- JDBC常用类和接口及基本操作示例
- iOS开发之APP USER对象存储归档