IDataFactory.h
source: wtcpp/folder98/folder01/folder3/folder1/file03.md
/*!
* \file IDataFactory.h
* \project WonderTrader
*
* \author Wesley
* \date 2020/03/30
*
* \brief 数据拼接工厂接口定义
*/
#pragma once
#include <stdint.h>
#include "../Includes/WTSTypes.h"
//USING_NS_WTP;
NS_WTP_BEGIN
class WTSKlineData;
class WTSHisTrendData;
class WTSTickData;
class WTSSessionInfo;
class WTSKlineSlice;
class WTSContractInfo;
struct WTSBarStruct;
struct WTSTickStruct;
class WTSTickSlice;
/*
* 数据工厂
* 主要用于各种数据的拼接
* 这里只定义一个接口
*/
class IDataFactory
{
public:
/*
* 利用tick数据更新K线
* @klineData K线数据
* @tick tick数据
* @sInfo 交易时间模板
*/
virtual WTSBarStruct* updateKlineData(WTSKlineData* klineData, WTSTickData* tick, WTSSessionInfo* sInfo) = 0;
/*
* 利用基础周期K线数据更新K线
* @klineData K线数据
* @newBasicBar 基础周期K线数据
* @sInfo 交易时间模板
*/
virtual WTSBarStruct* updateKlineData(WTSKlineData* klineData, WTSBarStruct* newBasicBar, WTSSessionInfo* sInfo) = 0;
/*
* 从基础周期K线数据提取非基础周期的K线数据
* @baseKline 基础周期K线
* @period 基础周期,m1/m5/day
* @times 周期倍数
* @sInfo 交易时间模板
* @bIncludeOpen 是否包含未闭合的K线
*/
virtual WTSKlineData* extractKlineData(WTSKlineSlice* baseKline, WTSKlinePeriod period, uint32_t times, WTSSessionInfo* sInfo, bool bIncludeOpen = true) = 0;
/*
* 从tick数据提取秒周期的K线数据
* @ayTicks tick数据
* @seconds 目标周期
* @sInfo 交易时间模板
* @bUnixTime tick时间戳是否是unixtime
*/
virtual WTSKlineData* extractKlineData(WTSTickSlice* ayTicks, uint32_t seconds, WTSSessionInfo* sInfo, bool bUnixTime = false) = 0;
/*
* 合并K线
* @klineData 目标K线
* @newKline 待合并的K线
*/
virtual bool mergeKlineData(WTSKlineData* klineData, WTSKlineData* newKline) = 0;
};
NS_WTP_END