请观看如何免费下载自动交易
请在Facebook上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
157
等级:
(8)
已发布:
已更新:
\MQL5\Include\Forester\
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

交易时段控制库。启动时,它会计算一周 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 个输入框,用于按星期输入交易时段。

输入时段时间时不要空格,严格使用:-和...、

在参数选项卡中是这样显示的:



在日志中是这样输出的
TradeSessionsMonday=00:15-17:45,17:55-23:55
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 Candle Fitness

Candlestick Fitness 概念用于编码基于群体优化算法的 HFT Algos。

PHSB 筛选器 PHSB 筛选器

创建本筛选器的目的是简化寻找以折扣价交易的资产的过程。由于所有选定工具的数据加载过程,初始使用时间可能稍长。该工具可以扫描所有可用的经纪资产,也可以仅限于特定的资产类别。

Moving Averages-14 different types Moving Averages-14 different types

这是一个根据收盘价计算 14 种移动平均线的指标。

Confluence Index Stoch+RSI+MACD Confluence Index Stoch+RSI+MACD

MULTI TF Confluence Index Stoch+RSI+MACD