在日内交易中,对于依据均线指标信号自动交易的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