控制日内交易时间的类模块

19 二月 2017, 02:41
Guojun Liu
0
162

在日内交易中,对于依据均线指标信号自动交易的EA,遇有市场价格调整,长短周期均线相互缠绕,自动EA频繁开关仓,这时需要控制在某些交易时间段内禁止EA交易。依据均线的EA,特别是短周期,在不活跃的时间段,开关仓频频,资金损失很大。因此,控制在日内非活跃时间段或者是风险点就十分有必要。 

下面是控制日内时间是交易的类模块,可在MT4或MT5使用。

 交易状态枚举:

enum ENUM_TRADE_STATE

{

TRADE_BUY_AND_SELL, // 允许买入和卖出操作

TRADE_BUY_ONLY, // 仅允许买入操作不允许卖出。

TRADE_SELL_ONLY, // 仅允许卖出操作不允许买入 TRADE_STOP

TRADE_WAIT,

}

 

封装类模块:

class CTradeDayState

{

private:

ENUM_TRADE_STATE m_state[60*24];

public:

......

ENUM_TRADE_STATE GetTradeState(void);

ENUM_TRADE_STATE GetTradeState(int t_hour,int t_min);

ENUM_TRADE_STATE GetTradeState(datetime time);

void SetTradeState(datetime b_time,datetime e_time,ENUM_TRADE_STATE state);

void SetTradeState(int t_hour,int t_min,int e_hour,int e_min,ENUM_TRADE_STATE state);

}; 

 

重载了GetTradeState函数和SetTradeState函数,可以接受日期型参数数据或者整型参数,这样方便调用。

测试结果:

定义类变量:CTradeDayState Daystate(TRADE_BUY_AND_SELL);

Daystate.SetTradeState(D'03:01',D'03:55',TRADE_BUY_ONLY);

Print(EnumToString(Daystate.GetTradeState(3,21)));

Print(EnumToString(Daystate.GetTradeState(D'03:05')));

   DataTest M1: TRADE_BUY_ONLY

DataTest M1: TRADE_BUY_ONLY

 

附加的文件: