交易时段控制库。启动时,它会计算一周 7 天(周六和周日可以进行加密货币交易)的交易时段时间,每天最多 10 个时段。然后在 OnTick() 中进行检查,如果某个刻度出现在交易时段之外,则可以退出对其的进一步处理。
使用示例:
//+------------------------------------------------------------------+ //|testControl_Trade_Sessions.mq5 //+------------------------------------------------------------------+ // #define LoadSessionFromInputs // 从输入读取会话 #include <Forester\Control_Trade_Sessions.mqh> // 连接控制交易时段的代码 int OnInit() { return(INIT_SUCCEEDED); } void OnTick() { static TRADE_SESSIONS TradeSession(_Symbol);// 获取市场开盘/收盘时间,并按星期保存到数组中。启动智能交易系统时调用一次(见静态)。 if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return"); return;} // 你的行动 }
结果是这样的打印输出
2022.01.10 00:05:00 Day: 0 Trade sessions: 1: 00:00-00:00 - это воскресенье
2022.01.10 00:05:00 Day: 1 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00 Day: 2 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00 Day: 3 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00 Day: 4 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00 Day: 5 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00 Day: 6 Trade sessions: 1: 00:00-00:00
2022.05.30 00:05:00 Market closed. OnTick return
2022.05.30 00:05:01 Market closed. OnTick return
...
2022.05.30 00:14:36 Market closed. OnTick return
2022.05.30 00:14:40 Market closed. OnTick return
2022.05.30 23:55:00 Market closed. OnTick return
2022.05.30 23:55:00 Market closed. OnTick return
...
2022.05.30 23:59:30 Market closed. OnTick return
2022.05.31 00:00:01 Market closed. OnTick return
...
新的 MQL5 函数用于读取任何一天的交易时段,包括周末。
尽可能快地工作,只对交易时段内的每个刻度进行 1 次检查:
。
if(time < this.NextTradeStop ) { return true; }其中 NextTradeStop 是当前交易时段的结束时间。
交易时段外的每个刻度也进行一次检查:
if(time < this.NextTradeStart ) { return false; }
例如,我的 DC 上的交易时段是从 00:15 到 23:55。在 00:15 之后的第一个跳动点,NextTradeStop 将被设置为 23:55,然后全天只检查该条件。
您的交易 时段
您也可以手动指定交易时段的时间。要激活该选项,请添加
这一行。
#define LoadSessionFromInputs // 从输入中读取会话
它将创建 7 个输入框,用于按星期输入交易时段。
输入时段时间时不要空格,严格使用:-和...、
在参数选项卡中是这样显示的:

在日志中是这样输出的
TradeSessionsTuesday=00:15-23:55
TradeSessionsWednesday=00:10-17:45,17:55-23:00,23:05-23:55
TradeSessionsThursday=00:15-17:45,17:55-23:55
TradeSessionsFriday=00:15-23:55
TradeSessionsSaturday=00:15-23:55
TradeSessionsSunday=
EURUSD : real ticks begin from 2022.05.10 00:00:00, every tick generation used
2022.01.10 00:05:00 Day: 1 Trade sessions: 1: 00:15-17:45, 2: 17:55-23:55
2022.01.10 00:05:00 日:2 个交易时段:1:00:15-23:55
2022.01.10 00:05:00 日:3 个交易时段:1:00:10-17:45,2:17:55-23:00,3:23:05-23:55
2022.01.10 00:05:00 当天:4 个交易时段:1:00:15-17:45,2:17:55-23:55
2022.2022.01.10 00:05:00 日:5 个交易时段:1:00:15-23:55
2022.01.10 00:05:00 日:6 个交易时段:1:00:15-23:55
2022.01.10 00:05:00 市场关闭。OnTick 返回
...
如果交易时段的结束时间小于开始时间,例如 20:00-8:00,则交易时段将持续到第二天 8:00。这在交易时段与服务器时间不同时区的情况下非常有用。
交易时段的时间也可以在代码中指定,无需输入。为此创建了 LoadFromInputs() 函数。调用该函数时无需输入,而是直接在代码中使用字符串数组,如示例所示。
string s=["00:15-17:45,17:55-23:55","00:00-24:00",....] void LoadFromInputs(string &s[]){...}
如果 Expert Advisor 是多币种的,且不同的工具有不同的交易时段,则可以为每种工具创建一个单独的 TRADE_SESSIONS 实例,然后使用时段数据调用 LoadFromInputs(),并检查 isSessionTrade()。为此,您需要修改与本示例类似的代码。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/48059
Candle Fitness
Candlestick Fitness 概念用于编码基于群体优化算法的 HFT Algos。
PHSB 筛选器
创建本筛选器的目的是简化寻找以折扣价交易的资产的过程。由于所有选定工具的数据加载过程,初始使用时间可能稍长。该工具可以扫描所有可用的经纪资产,也可以仅限于特定的资产类别。
Moving Averages-14 different types
这是一个根据收盘价计算 14 种移动平均线的指标。
Confluence Index Stoch+RSI+MACD
MULTI TF Confluence Index Stoch+RSI+MACD