如何配置QuickFIX/N v1.10.0仅支持周一至周五的每日会话
实现QuickFix/n v1.10.0仅工作日会话的方案
QuickFix/n v1.10.0确实没有内置的Weekdays配置项,要实现仅工作日可用的每日会话,最简便的方式是自定义会话调度逻辑,具体操作如下:
- 自定义工作日调度类,继承默认的
DailySchedule并重写IsSessionTime方法,过滤周六日:
public class WeekdayOnlySchedule : DailySchedule { public override bool IsSessionTime(DateTime time) { // 排除周六和周日 if (time.DayOfWeek is DayOfWeek.Saturday or DayOfWeek.Sunday) return false; // 保留原有的每日会话时间范围判断 return base.IsSessionTime(time); } }
- 在初始化QuickFix/n会话时,注册这个自定义调度工厂,替换默认实现:
var settings = new SessionSettings("your_session_config.cfg"); // 设置自定义调度工厂 settings.SetScheduleFactory(() => new WeekdayOnlySchedule()); // 后续按常规流程初始化会话工厂、启动会话即可 var factory = new SessionFactory(settings, messageStoreFactory, logFactory, messageFactory); var initiator = new ThreadedSocketInitiator(factory, settings); initiator.Start();
如果需要支持自定义节假日,只需在IsSessionTime方法中额外添加节假日判断逻辑即可,比如维护一个节假日日期列表,检查当前时间是否在列表内。
内容的提问来源于stack exchange,提问作者Dušan
相关产品推荐
相关产品推荐

