MQL5星期过滤器-可设定星期几不交易
MQL5中的星期过滤器是用于自动化交易策略的时间管理工具,通过设定交易时段限制来避免特定交易时段的价格波动干扰。该工具允许用户指定交易策略仅在特定星期几执行交易。
此过滤器分成三个部分:
在头部添加过滤器设置代码:
input group "====星期过滤设定==========" input bool AllowedMonday = true; //是否允许星期一交易 input bool AllowedTuesday = true; //是否允许星期二交易 input bool AllowedWednesday = true; //是否允许星期三交易 input bool AllowedThursday = true; //是否允许星期四交易 input bool AllowedFriday = true; //是否允许星期五交易 input bool AllowedSaturday = false; //是否允许星期六交易 input bool AllowedSunday = false; //是否允许星期天交易
2.定义星期过滤函数
bool IsTradingAllowedByDay() { MqlDateTime today; TimeCurrent(today); string day = EnumToString((ENUM_DAY_OF_WEEK)today.day_of_week); if(AllowedMonday==true && day=="MONDAY" ) return true; if(AllowedTuesday==true && day=="TUESDAY" ) return true; if(AllowedWednesday==true && day=="WEDNESDAY" ) return true; if(AllowedThursday==true && day=="THURSDAY" ) return true; if(AllowedFriday==true && day=="FRIDAY" ) return true; if(AllowedSaturday==true && day=="SATURDAY" ) return true; if(AllowedSunday==true && day=="SUNDAY" ) return true; return false; }
3.在onTick中调用
if(!IsTradingAllowedByDay()) { Print("不允许交易"); return; }
下面是完整代码(为了测试,将时间周期设置为每天):
#property version "1.00" input group "====星期过滤设定==========" input bool AllowedMonday = true; //是否允许星期一交易 input bool AllowedTuesday = true; //是否允许星期二交易 input bool AllowedWednesday = true; //是否允许星期三交易 input bool AllowedThursday = true; //是否允许星期四交易 input bool AllowedFriday = true; //是否允许星期五交易 input bool AllowedSaturday = false; //是否允许星期六交易 input bool AllowedSunday = false; //是否允许星期天交易 string TradingEnabledComm = ""; //提示语 int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { static datetime prevDayTime = 0; datetime currentDayTime = iTime(_Symbol, PERIOD_D1, 0); if(currentDayTime==prevDayTime) { return; } prevDayTime = currentDayTime; if(!IsTradingAllowedByDay()) { Print(TradingEnabledComm); return; } TradingEnabledComm = ""; //这里进行交易 Print("正常交易"); } bool IsTradingAllowedByDay() { MqlDateTime today; TimeCurrent(today); string day = EnumToString((ENUM_DAY_OF_WEEK)today.day_of_week); if(AllowedMonday==true && day=="MONDAY" ) return true; if(AllowedTuesday==true && day=="TUESDAY" ) return true; if(AllowedWednesday==true && day=="WEDNESDAY" ) return true; if(AllowedThursday==true && day=="THURSDAY" ) return true; if(AllowedFriday==true && day=="FRIDAY" ) return true; if(AllowedSaturday==true && day=="SATURDAY" ) return true; if(AllowedSunday==true && day=="SUNDAY" ) return true; if(TradingEnabledComm=="") { TradingEnabledComm = day+"禁止交易"; } return false; }
测试配置如下:
测试截图: