在量化交易开发中,写程序时候,需要根据输入的整数返回订单类型的枚举值,这样方便我们在开发的时候,不用记住很长的枚举代码,也方便其他程序调用
从下面规律可以看出 Buy方向都是偶数,Sell方向都是奇数
Buy类型
0:ORDER_TYPE_BUY Buy方向订单类型
2:ORDER_TYPE_BUY_LIMIT Buy方向抄底挂单类型
3:ORDER_TYPE_BUY_STOP Buy方向追涨挂单类型
6:ORDER_TYPE_BUY_STOP_LIMIT Buy方向抄底和追涨挂单类型
Sell类型
1:ORDER_TYPE_SELL Sell方向订单类型
3:ORDER_TYPE_SELL_LIMIT Sell方向抄底挂单类型
5:ORDER_TYPE_SELL_STOP Sell方向追跌挂单类型
7:ORDER_TYPE_SELL_STOP_LIMIT Sell方向抄底和追跌挂单类型
扩展功能
用在需要用到两种方向的持仓单时,比如移动止损止盈,同时平Buy和Sell方向订单时
12 Buy和Sell方向订单类型
14 Buy和Sell方向挂单类型
-1 没有找到指定的类型和方向
实现代码
ENUM_ORDER_TYPE getType(const int type)
{
ENUM_ORDER_TYPE m_type;
switch(type)
{
case 0: m_type = ORDER_TYPE_BUY; break;
case 1: m_type = ORDER_TYPE_SELL; break;
case 2: m_type = ORDER_TYPE_BUY_LIMIT; break;
case 3: m_type = ORDER_TYPE_SELL_LIMIT; break;
case 4: m_type = ORDER_TYPE_BUY_STOP; break;
case 5: m_type = ORDER_TYPE_SELL_STOP; break;
case 6: m_type = ORDER_TYPE_BUY_STOP_LIMIT; break;
case 7: m_type = ORDER_TYPE_SELL_STOP_LIMIT; break;
case 12: m_type = (ENUM_ORDER_TYPE)12; break;
case 14: m_type = (ENUM_ORDER_TYPE)14; break;
default: m_type = -1;
}
return m_type;
}
调用方法
void OnStart()
{
// 查询系统默认的订单类型转换成整数的值
printf("Type buy: %d", ORDER_TYPE_BUY);
printf("Type buy limit: %d", ORDER_TYPE_BUY_LIMIT);
printf("Type buy stop: %d", ORDER_TYPE_BUY_STOP);
printf("Type buy stop limit: %d", ORDER_TYPE_BUY_STOP_LIMIT);
printf("Type sell: %d", ORDER_TYPE_SELL);
printf("Type sell limit: %d", ORDER_TYPE_SELL_LIMIT);
printf("Type sell stop: %d", ORDER_TYPE_SELL_STOP);
printf("Type sell stop limit: %d", ORDER_TYPE_SELL_STOP_LIMIT);
// 返回系统默认的枚举类型
printf("Type getType1: %s, %d", EnumToString(getType(0)), getType(0));
// 返回自定义的复合枚举类型
printf("Type getType2: %s, %d", EnumToString(getType(12)), getType(12));
// 没有指定类型时
printf("Type getType3: %s, %d", EnumToString(getType(18)), getType(18));
}
输出控制台结果
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type buy: 0
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type buy limit: 2
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type buy stop: 4
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type buy stop limit: 6
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type sell: 1
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type sell limit: 3
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type sell stop: 5
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type sell stop limit: 7
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type getType1: ORDER_TYPE_BUY, 0
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type getType2: ENUM_ORDER_TYPE::12, 12
2022.11.28 15:37:38.429 getType测试 (EURUSD,H1) Type getType3: ENUM_ORDER_TYPE::-1, -1