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;
}测试配置如下:

测试截图:
