-
Notifications
You must be signed in to change notification settings - Fork 18
/
ctastrategybase.h
57 lines (44 loc) · 1.64 KB
/
ctastrategybase.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef CTASTRATEGYBASE_H
#define CTASTRATEGYBASE_H
#include "ctabase.h" //持仓结构体
#include "techindicator.h" //计算技术指标
//前置声明
class CtaEngine;
// 所有策略类型的基类,提取公共接口和方法,所有的交易策略均需要继承它
class StrategyBase
{
public:
// 构造函数
StrategyBase(CtaEngine* ce, std::string name, std::string symbol);
// 基本功能
int convert_time_str2int(const char* update_time);
// 策略相关,委托下单
std::string buy(double price, int volume, bool stop = false);
std::string sell(double price, int volume, bool stop = false);
std::string short_(double price, int volume, bool stop = false);
std::string cover(double price, int volume, bool stop = false);
// 撤单
void cancelOrder(std::string orderID);
public:
virtual void onInit() = 0;
virtual void onStart() = 0;
virtual void onStop() = 0;
virtual void onTick(QuoteInfo& quote) = 0;
virtual void onBar(CtaBarData& trade) = 0;
virtual void onOrder(OrderInfo& order) = 0;
virtual void onTrade(TradeInfo& trade) = 0;
private:
std::string sendOrder(char order_type, double price, int volume, bool stop = false);
public:
// 落地数据库
// ..
// 策略基本参数
std::string name; // 策略实例名称
std::string vtSymbol; // 交易合约,暂定只交易一种合约
// 策略的基本变量,由引擎管理
bool inited{ false }; // 是否进行了初始化
bool trading{ false }; // 是否启动交易
int pos{ 0 }; // 持仓情况
CtaEngine* ce{ nullptr };
};
#endif // CTASTRATEGYBASE_H