程序库: TradeState - 依赖于时间的EA交易模式切换器

 

TradeState - 依赖于时间的EA交易模式切换器:

本类根据时间限制EA的交易. 它具有灵活的配置选项, 允许设置自定义时区, 也允许只在一个星期中的某些天进行交易.

作者: Vasiliy Sokolov

 

被盗。现在你可以制定一周的日程表了。

情况是这样的。我花了很长时间制定每周计划表。一切顺利。突然,你好,除夕。节假日。我们需要一个考虑到假期的时间表。打破周计划表太可惜了。解决方案:我创建了一个额外的周计划实例,禁止在节假日进行交易。问题:我是否应该将 m_state 扩展到世纪 年的大小?或者如何解决一周以外的问题?

 
Konstantin Gruzdev:

被盗。现在你可以制定一周的日程表了。

情况是这样的。我花了很长时间制定每周计划表。一切顺利。突然,你好,除夕。节假日。我们需要一个考虑到假期的时间表。打破周计划表太可惜了。解决方案:我创建了一个额外的周计划实例,禁止在节假日进行交易。问题:我是否应该将 m_state 扩展到世纪 年的大小?或者如何解决一周以外的问题?

是的,有这样一项任务。我还在考虑怎么做。我还没有找到一个漂亮的解决方案。但我知道它应该是什么样的。

  1. SetTradeState(...) 接口本身表明,如果我们在变量 time_begin 和 time_end 中以 D'hh:mm' 格式设置日期,那么该模式将在满足 day_of_week 条件的所有日子里一直有效。如果具体设置了日期,以 D'YYYYY.MM.DD hh:mm'格式指定了年、月、日,则设置模式必须具体作用于这一时间范围。
  2. 显然,第二个时间变量必须放在另一种数据类型 中(可以是某种结构的数组或其他)。然后,我们必须在两个不同的集合中以两种不同的方式搜索交易模式,并对模式进行比较,决定应采用哪种模式。在这种情况下,GetTradeState 接口应保持不变。

此外,您还可以从 XML 中加载交易状态。您可以提前一年将所有节假日输入 XML,然后它们将自动加载到所有智能交易系统中。要做到这一点非常容易,因为 MQL5 中已经有一个用于处理 XML 的优秀库。
 

+5

day_of_week - 通常是一组天:PN...PT 或 "除星期五外 "或 "除星期一和星期五外"。

 
Alexander Puzanov:

+5

day_of_week - 通常是一组日期:PN...PT 或 "除周五外 "或 "除周一和周五外"。

这组日期的组成如下:假设我们希望在周一、周二和周五进行交易。那么我们禁止在周三和周四进行交易:

//+------------------------------------------------------------------+
//|测试交易状态。mq5
//|版权所有 2015 年,瓦西里-索科洛夫。|
//|http://www.mql5.com ||
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Vasiliy Sokolov."
#property link      "http://www.mql5.com"
#property version   "1.00"
#include <Strategy\TradeState.mqh>

CTradeState TradeState(TRADE_BUY_AND_SELL);  // 设置默认模式 "买卖
//+------------------------------------------------------------------+
//| 脚本程序启动功能|
//+------------------------------------------------------------------+
void OnStart()
{
   TradeState.SetTradeState(D'00:00', D'23:59', WEDNESDAY, TRADE_STOP);
   TradeState.SetTradeState(D'00:00', D'23:59', THURSDAY, TRADE_STOP);
}
也就是说,一周中的一天 都是单独配置的,精确到分钟。
 
知道了
 
mql5 主控 程序看不到它,为什么?
 
我认为我们应该引入典型点差领域。例如,在翻转期间和翻转后的第一个小时,点差可能会增加 2-3 倍。夜间剥头皮者可以处理这种扩大,并更准确地进行交易。
我在我的智能交易系统中实现了这一功能,但不是在课堂上。
 

如何用正常数字00 :00 替换D'00:00' ??????datetime 令人讨厌(((((

TradeState.SetTradeState(D'00:00:00', D'23:59', WEDNESDAY, TRADE_STOP)

 
ponochka:

如何将D'00:00' to change the usual digits00:00 ?????datetime is annoying((((((

TradeState.SetTradeState(D'00:00:00', D'23:59', WEDNESDAY, TRADE_STOP)

请:

TradeState.SetTradeState(0, 86399, WEDNESDAY, TRADE_STOP);
 
#include <Strategy\TradeState.mqh>
CTradeState TradeState(TRADE_BUY_AND_SELL);

void OnTick()
  {
     ......здесь работаем с закрытием (тралом и прочим)....
 TradeState.SetTradeState(ontime, offtime, ALL_DAYS_OF_WEEK, TRADE_NO_NEW_ENTRY);
     ......остальной код, в частности для открытия....
  }

代码的正确位置?

我为我愚蠢的问题提前道歉!!我只是个新手)))))))