-- 作者:赫斯德
-- 发布时间:2014/5/30 11:04:59
--
以下是插件的一个头文件
#ifndef __CHANLUNCORE_H_INCLUDE//(指示检测预CHANLUNCORE_H_INCLUDE处理器变量是否未定义) #define __CHANLUNCORE_H_INCLUDE//(如果未定义 ,那么后面所有的指示全被处理直到出现#endif) #include "StockFunc.h" #include <list>
using namespace std; // 自定义常量 // 方向(状态) enum //枚举常量 FX_STATE { FX_XBH2 = -3, // 前包含后 -3 FX_XBH, // 后包含前 -2 FX_DN, // 方向向下 -1 FX_0, // 0 (无方向) FX_UP, // 方向向上 1 FX_SBH, // 后包含前 2 FX_SBH2 // 前包含后 3 }; // 缺口(状态) QK_STATE { QK_N = 0, // 不存在缺口 QK_Y // 存在缺口1 }; //自定义基本数据 // 别批评偶不规范啊... 偶只是写着玩 -_-\\\\\\~~ // 缠论K线结构 处理过包含关系的K线 typedef struct tagCHANKX//定义一种新类型tagCHANKX类型变量名 并给这个变量名取个别名CHANKX { int m_nNo; // K线序号 从1开始 int m_nNobh; // 经包含处理后的K线序号 float m_fRealHigh; // 未包含处理的高值 float m_fRealLow; // 未包含处理的低值 float m_fHigh; //包含处理后的高值 float m_fLow; //包含处理后的低值 int m_nFlag; //1顶 -1底 0 非顶底 float m_fFxqj; // 分型区间 如果为顶底 记录区间边界 int m_nFx; //K线方向 1上 -1下 2 上包含 -2 下包含 int m_nBi; //笔 1上 -1下 2 上包含 -2 下包含 int m_nDuan; //段 1上 -1下 2 上包含 -2 下包含 int m_nQk; //缺口 0没有 1有 } CHANKX;//别名 // 笔 (特征序列) typedef struct tagCHANBI { int m_nNo; // 序号 int m_nNoh; // 高点K线编号 int m_nNol; // 低点K线编号 float m_fHigh; // 高点值 float m_fLow; // 低点值 int m_nFx; // 方向 方向 1上 -1下 2 上包含 -2 下包含 int m_nFlag; // 1顶 -1底 int m_nQk; // 特征1 2 之间是否存在缺口 } CHANBI;
//定义基本数据 END // 自定义类型BEGIN typedef std::list<CHANKX> KXDATA; typedef std::list<CHANBI> BIDATA; typedef KXDATA::iterator CKXIT;//iterator是C++标准库(STL)中的迭代器 typedef BIDATA::iterator BIIT; typedef KXDATA::const_iterator C_CKXIT;//迭代器 指向 常对象 的指针 typedef BIDATA::const_iterator C_BIIT;
// 自定义类型END //缠K线 分型 笔 算法接口 BEGIN // 缠K线 算法接口 class ChanlunKxIF { private://私有的 virtual void __DoInitKx(CALCINFO* pData, KXDATA &kxData) = 0; public://公有的 void InitKx(CALCINFO* pData, KXDATA &kxData); }; // 分型 算法接口 class ChanlunFxIF { private: virtual void __DoInitFx() = 0; public: void InitFx(); }; // 笔 算法接口 class ChanlunBiIF { private: virtual void __DoInitBi() = 0; public: void InitBi(); };
// 算法接口 END // 缠论核心类 class ChanlunCore { private: ChanlunCore(); // 构造函数 ~ChanlunCore(); // 析构函数
static ChanlunCore* ms_pInstance;
ChanlunKxIF* m_pChanlunKx; // 缠K线算法 ChanlunFxIF* m_pChanlunFx; // 顶底分型算法 ChanlunBiIF* m_pChanlunBi; // 笔算法
KXDATA m_kxData; // 根据缠论处理过包含关系的K线 BIDATA m_xbData; // 向下笔 (向上段的特征序列) BIDATA m_sbData; // 向上笔 (向下段的特征序列)
void __InitData(CALCINFO* pData); // 初始化数据 public: static ChanlunCore* GetInstance(); //获取 唯一实例 单例模式 void InitKx(CALCINFO* pData); // 初始化缠论K线 void InitFX(); // 初始化分型 void InitBi(); // 初始化笔
// Getter获得 const KXDATA GetCkxData(); const BIDATA GetXbData(); const BIDATA GetSbData();
}; // 缠论核心类END #endif // __CHANLUNTOOLS_H_INCLUDE
|