IHftStraCtx.h
source: wtcpp/folder98/folder01/folder3/folder2/file05.md
/*!
* \file IHftStraCtx.h
* \project WonderTrader
*
* \author Wesley
* \date 2020/03/30
*
* \brief
*/
#pragma once
#include <stdint.h>
#include <string>
#include "ExecuteDefs.h"
#include "../Includes/WTSMarcos.h"
NS_WTP_BEGIN
class WTSCommodityInfo;
class WTSTickSlice;
class WTSKlineSlice;
class WTSTickData;
struct WTSBarStruct;
// HFT策略上下文管理器接口
class IHftStraCtx
{
public:
IHftStraCtx(const char* name) :_name(name) {}
virtual ~IHftStraCtx() {}
const char* name() const { return _name.c_str(); }
public:
virtual uint32_t id() = 0;
//回调函数
virtual void on_init() = 0;
virtual void on_tick(const char* stdCode, WTSTickData* newTick) = 0;
virtual void on_order_queue(const char* stdCode, WTSOrdQueData* newOrdQue) = 0;
virtual void on_order_detail(const char* stdCode, WTSOrdDtlData* newOrdDtl) = 0;
virtual void on_transaction(const char* stdCode, WTSTransData* newTrans) = 0;
virtual void on_bar(const char* stdCode, const char* period, uint32_t times, WTSBarStruct* newBar) {}
virtual void on_session_begin(uint32_t uTDate) {}
virtual void on_session_end(uint32_t uTDate) {}
/*
* 回测结束事件
* 只在回测下才会触发
*/
virtual void on_bactest_end() {};
virtual void on_tick_updated(const char* stdCode, WTSTickData* newTick) {}
virtual void on_ordque_updated(const char* stdCode, WTSOrdQueData* newOrdQue) {}
virtual void on_orddtl_updated(const char* stdCode, WTSOrdDtlData* newOrdDtl) {}
virtual void on_trans_updated(const char* stdCode, WTSTransData* newTrans) {}
//策略接口
virtual bool stra_cancel(uint32_t localid) = 0;
virtual OrderIDs stra_cancel(const char* stdCode, bool isBuy, double qty) = 0;
virtual OrderIDs stra_buy(const char* stdCode, double price, double qty, const char* userTag) = 0;
virtual OrderIDs stra_sell(const char* stdCode, double price, double qty, const char* userTag) = 0;
virtual uint32_t stra_enter_long(const char* stdCode, double price, double qty, const char* userTag) { return 0; }
virtual uint32_t stra_enter_short(const char* stdCode, double price, double qty, const char* userTag) { return 0; }
virtual uint32_t stra_exit_long(const char* stdCode, double price, double qty, const char* userTag, bool isToday = false) { return 0; }
virtual uint32_t stra_exit_short(const char* stdCode, double price, double qty, const char* userTag, bool isToday = false) { return 0; }
virtual WTSCommodityInfo* stra_get_comminfo(const char* stdCode) = 0;
virtual WTSKlineSlice* stra_get_bars(const char* stdCode, const char* period, uint32_t count) = 0;
virtual WTSTickSlice* stra_get_ticks(const char* stdCode, uint32_t count) = 0;
virtual WTSOrdDtlSlice* stra_get_order_detail(const char* stdCode, uint32_t count) = 0;
virtual WTSOrdQueSlice* stra_get_order_queue(const char* stdCode, uint32_t count) = 0;
virtual WTSTransSlice* stra_get_transaction(const char* stdCode, uint32_t count) = 0;
virtual WTSTickData* stra_get_last_tick(const char* stdCode) = 0;
virtual double stra_get_position(const char* stdCode, bool bOnlyValid = false) = 0;
virtual double stra_get_position_profit(const char* stdCode) = 0;
virtual double stra_get_price(const char* stdCode) = 0;
virtual double stra_get_undone(const char* stdCode) = 0;
virtual uint32_t stra_get_date() = 0;
virtual uint32_t stra_get_time() = 0;
virtual uint32_t stra_get_secs() = 0;
virtual void stra_sub_ticks(const char* stdCode) = 0;
virtual void stra_sub_order_queues(const char* stdCode) = 0;
virtual void stra_sub_order_details(const char* stdCode) = 0;
virtual void stra_sub_transactions(const char* stdCode) = 0;
virtual void stra_log_info(const char* message) = 0;
virtual void stra_log_debug(const char* message) = 0;
virtual void stra_log_error(const char* message) = 0;
virtual void stra_save_user_data(const char* key, const char* val) {}
virtual const char* stra_load_user_data(const char* key, const char* defVal = "") { return defVal; }
protected:
std::string _name;
};
NS_WTP_END