DataDefine.h
source: wtcpp/folder98/folder08/folder1/file01.md
#pragma once
#include "../Includes/WTSStruct.h"
USING_NS_WTP;
#pragma pack(push, 1)
const char BLK_FLAG[] = "&^%$#@!\0";
const int FLAG_SIZE = 8;
// 数据块类型
typedef enum tagBlockType
{
BT_RT_Minute1 = 1, //实时1分钟线
BT_RT_Minute5 = 2, //实时5分钟线
BT_RT_Ticks = 3, //实时tick数据
BT_RT_Cache = 4, //实时缓存
BT_RT_Trnsctn = 5, //实时逐笔成交
BT_RT_OrdDetail = 6, //实时逐笔委托
BT_RT_OrdQueue = 7, //实时委托队列
BT_HIS_Minute1 = 21, //历史1分钟线
BT_HIS_Minute5 = 22, //历史5分钟线
BT_HIS_Day = 23, //历史日线
BT_HIS_Ticks = 24, //历史tick
BT_HIS_Trnsctn = 25, //历史逐笔成交
BT_HIS_OrdDetail = 26, //历史逐笔委托
BT_HIS_OrdQueue = 27 //历史委托队列
} BlockType;
#define BLOCK_VERSION_RAW 0x01 //老结构体未压缩
#define BLOCK_VERSION_CMP 0x02 //老结构体压缩
#define BLOCK_VERSION_RAW_V2 0x03 //新结构体未压缩
#define BLOCK_VERSION_CMP_V2 0x04 //新结构体压缩
// 旧版标准数据块父类
typedef struct _BlockHeader
{
char _blk_flag[FLAG_SIZE];
uint16_t _type;
uint16_t _version;
inline bool is_old_version() const {
return (_version == BLOCK_VERSION_CMP || _version == BLOCK_VERSION_RAW);
}
inline bool is_compressed() const {
return (_version == BLOCK_VERSION_CMP || _version == BLOCK_VERSION_CMP_V2);
}
} BlockHeader;
// 新版标准数据块父类
typedef struct _BlockHeaderV2
{
char _blk_flag[FLAG_SIZE];
uint16_t _type;
uint16_t _version;
uint64_t _size; //压缩后的数据大小
inline bool is_old_version() const {
return (_version == BLOCK_VERSION_CMP || _version == BLOCK_VERSION_RAW);
}
inline bool is_compressed() const {
return (_version == BLOCK_VERSION_CMP || _version == BLOCK_VERSION_CMP_V2);
}
} BlockHeaderV2;
#define BLOCK_HEADER_SIZE sizeof(BlockHeader)
#define BLOCK_HEADERV2_SIZE sizeof(BlockHeaderV2)
typedef struct _RTBlockHeader : BlockHeader
{
uint32_t _size;
uint32_t _capacity;
} RTBlockHeader;
//每日实时数据块头部
typedef struct _RTDayBlockHeader : RTBlockHeader
{
uint32_t _date;
} RTDayBlockHeader;
//实时K线数据块
typedef struct _RTKlineBlock : _RTDayBlockHeader
{
WTSBarStruct _bars[0];
} RTKlineBlock;
//tick数据数据块
//By Wesley @ 2021.12.30
//实时tick缓存,直接用新版本的tick结构
//切换程序一定要在盘后进行!!!
typedef struct _RTTickBlock : RTDayBlockHeader
{
WTSTickStruct _ticks[0];
} RTTickBlock;
//逐笔成交数据块
typedef struct _RTTransBlock : RTDayBlockHeader
{
WTSTransStruct _trans[0];
} RTTransBlock;
//逐笔委托数据块
typedef struct _RTOrdDtlBlock : RTDayBlockHeader
{
WTSOrdDtlStruct _details[0];
} RTOrdDtlBlock;
//委托队列数据块
typedef struct _RTOrdQueBlock : RTDayBlockHeader
{
WTSOrdQueStruct _queues[0];
} RTOrdQueBlock;
typedef struct _TickCacheItem
{
uint32_t _date;
WTSTickStruct _tick;
} TickCacheItem;
//实时tick缓存
typedef struct _RTTickCache : RTBlockHeader
{
TickCacheItem _ticks[0];
} RTTickCache;
//历史Tick数据
typedef struct _HisTickBlock : BlockHeader
{
WTSTickStruct _ticks[0];
} HisTickBlock;
//历史Tick数据V2
typedef struct _HisTickBlockV2 : BlockHeaderV2
{
char _data[0];
} HisTickBlockV2;
typedef struct _HisTransBlock : BlockHeader
{
WTSTransStruct _items[0];
} HisTransBlock;
typedef struct _HisTransBlockV2 : BlockHeaderV2
{
char _data[0];
} HisTransBlockV2;
typedef struct _HisOrdDtlBlock : BlockHeader
{
WTSOrdDtlStruct _items[0];
} HisOrdDtlBlock;
typedef struct _HisOrdDtlBlockV2 : BlockHeaderV2
{
char _data[0];
} HisOrdDtlBlockV2;
typedef struct _HisOrdQueBlock : BlockHeader
{
WTSOrdQueStruct _items[0];
} HisOrdQueBlock;
typedef struct _HisOrdQueBlockV2 : BlockHeaderV2
{
char _data[0];
} HisOrdQueBlockV2;
//历史K线数据
typedef struct _HisKlineBlock : BlockHeader
{
WTSBarStruct _bars[0];
} HisKlineBlock;
//历史K线数据V2
typedef struct _HisKlineBlockV2 : BlockHeaderV2
{
char _data[0];
} HisKlineBlockV2;
//历史K线数据
typedef struct _HisKlineBlockOld : BlockHeader
{
WTSBarStructOld _bars[0];
} HisKlineBlockOld;
#pragma pack(pop)