初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1134

 
你好,请你告诉我如何做到这一点?我如何正确地拼写条件。*如果有一个新的小时*?
 
MrBrooklin:

你好!

在这里帮我一下。我有一个关于交易信号模块 "时间过滤器 "的问题。

问题是,我用这个模块生成了一个EA,并将其设置为每天只允许交易一个小时。它主要是以这种方式进行交易,但也有一些日子,我的专家顾问在它想要的任何时间开仓。我已经尝试了 "时间过滤器 "交易信号模块与其他交易信号模块(如随机指数、WPR等)的不同组合,但同样的事情发生。此外,如果你设置了允许连续工作2个小时,就没有任何问题,它工作得很好。

它能与什么有关?也许交易信号模块 "时间过滤器 "的代码中存在错误?因为我不是编程专家,所以请你帮我搞清楚,或者给我一个提示,也许我做错了什么。

真诚的,弗拉基米尔。


下面是图片上的一个简单例子。有一天,它在7点钟开门;另一天,它在5点钟开门;第三天,它又在7点钟开门。


你能在这个帖子中附上一个mq5专家顾问,并指定测试者的参数(两个截图:设置和参数标签)吗?

 
Snajper007:
你好,请你告诉我。如何正确地拼写这个条件。*如果有一个新的小时*?

你是指时间(如时钟显示为15-00),还是指H1时间框架上诞生了一个新的条形图

 

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.14 12:04

你能在信息中附加一个mq5专家顾问,并指定测试者的参数(两个截图:设置和参数标签)吗?


不是没有根据的,例如,现在我在MQL5 Wizard中生成了AMA交易信号的第一个可用模块和一个时间过滤器。

//+------------------------------------------------------------------+
//|                                                          AMA.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalAMA.mqh>
#include <Expert\Signal\SignalITF.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title            ="AMA";                  // Document name
ulong                    Expert_MagicNumber      =8503;                   //
bool                     Expert_EveryTick        =false;                  //
//--- inputs for main signal
input int                Signal_ThresholdOpen    =10;                     // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose   =10;                     // Signal threshold value to close [0...100]
input double             Signal_PriceLevel       =0;                      // Price level to execute a deal
input double             Signal_StopLevel        =50.0;                   // Stop Loss level (in points)
input double             Signal_TakeLevel        =50.0;                   // Take Profit level (in points)
input int                Signal_Expiration       =4;                      // Expiration of pending orders (in bars)
input int                Signal_AMA_PeriodMA     =10;                     // Adaptive Moving Average(1,1,...) Period of averaging
input int                Signal_AMA_PeriodFast   =2;                      // Adaptive Moving Average(1,1,...) Period of fast EMA
input int                Signal_AMA_PeriodSlow   =30;                     // Adaptive Moving Average(1,1,...) Period of slow EMA
input int                Signal_AMA_Shift        =0;                      // Adaptive Moving Average(1,1,...) Time shift
input ENUM_APPLIED_PRICE Signal_AMA_Applied      =PRICE_CLOSE;            // Adaptive Moving Average(1,1,...) Prices series
input double             Signal_AMA_Weight       =1.0;                    // Adaptive Moving Average(1,1,...) Weight [0...1.0]
input int                Signal_ITF_GoodHourOfDay=-1;                     // IntradayTimeFilter(-1,...) Good hour
input int                Signal_ITF_BadHoursOfDay=16777087;               // IntradayTimeFilter(-1,...) Bad hours (bit-map)
input int                Signal_ITF_GoodDayOfWeek=-1;                     // IntradayTimeFilter(-1,...) Good day of week
input int                Signal_ITF_BadDaysOfWeek=0;                      // IntradayTimeFilter(-1,...) Bad days of week (bit-map)
input double             Signal_ITF_Weight       =1.0;                    // IntradayTimeFilter(-1,...) Weight [0...1.0]
//--- inputs for money
input double             Money_FixRisk_Percent   =10.0;                   // Risk percentage
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalAMA
   CSignalAMA *filter0=new CSignalAMA;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodMA(Signal_AMA_PeriodMA);
   filter0.PeriodFast(Signal_AMA_PeriodFast);
   filter0.PeriodSlow(Signal_AMA_PeriodSlow);
   filter0.Shift(Signal_AMA_Shift);
   filter0.Applied(Signal_AMA_Applied);
   filter0.Weight(Signal_AMA_Weight);
//--- Creating filter CSignalITF
   CSignalITF *filter1=new CSignalITF;
   if(filter1==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter1");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter1);
//--- Set filter parameters
   filter1.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
   filter1.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
   filter1.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
   filter1.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
   filter1.Weight(Signal_ITF_Weight);
//--- Creation of trailing object
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedRisk *money=new CMoneyFixedRisk;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

"设置 "的屏幕截图


"设置 "的截图。

时间过滤器的不正确 截图 (在不同的日子里,7点、12点和7点开仓)。


 
MrBrooklin:

为了不至于毫无根据,例如,现在我在MQL5 Wizard中生成了AMA交易信号的第一个可用模块和一个时间过滤器。

"设置 "的屏幕截图


"设置 "的截图。

时间过滤器的错误操作 截图(在不同的日子里,7点、12点和7点的打开位置)。


1.带图表的图片--在截图时,用 "十字线 "工具做--不清楚是哪一年。

2.在处理挂单 时--记住,挂单可以在相对于设置时间的完全不同的时间(小时和分钟)触发。

3.当使用信号模块时,将参数重置为默认值,并检查市场上的工作 - 没有任何挂单(如果第2点不清楚)。

 

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.14 13:28

1.图表图片--在进行截图时,要与 "十字线 "工具一起进行--否则就不清楚哪一年。

2.在处理挂单 时--记住,挂单可以在与下单时间完全不同的时间(小时和分钟)触发。

3.当使用信号模块时,将参数重置为默认值,并检查市场上的工作 - 没有挂单(这是在第2点不清楚的情况下)。


1.关于十字准线--可以理解。在截图中,年份是2019年,月份是10月。

2.我不太明白待定订单的情况。你怎么知道EA有一个挂单,而不是在一开始就开仓?你能说得更具体些吗?

3.专家顾问在信号模块的默认值下工作正常。是否不允许修改参数值?

真诚的,弗拉基米尔。

 

***

1.关于十字线,很清楚。在截图中,年份是2019年,月份是10月。

***

谢谢你的澄清。

***

2.我不太明白待定订单的情况。你是如何确定EA设置了一个挂单,而不是在一小时开始时立即开仓的?你能说得更具体些吗?

***

在视觉测试器中,只要看一下 "历史 "标签就可以了

历史选项卡

***

3.在信号模块的默认值下,专家顾问工作正常。是否不能改变参数的值?

***

当然可以,但前提是你要明白你在做什么,以及你要明白什么参数负责什么。

 
Vladimir Karputov:

你是指时间(如时钟显示为15-00),还是指H1时间框架上诞生了一个新的条形图

我是说时钟显示为15-00。
 
Snajper007:
我的意思是,时钟显示15-00。

而你想要的结果有多大的确定性?

只是一个例子。你想看到时钟上的时间是下午3点。而你在等待它。但当时没有勾选或没有连接到服务器。然后你得到了蜱虫,但时间是15小时00分钟36秒。你会怎么做?

 
Vladimir Karputov:

而你想要的结果有多大的确定性?

只是一个例子。你想看到时钟上的时间是下午3点。而你在等待它。但当时没有勾选或没有连接到服务器。然后你得到了蜱虫,但时间是15小时00分钟36秒。你会怎么做?

你能不能让它不准确地检查15-00,而是检查小时的开始?换句话说,第一分钟就已经显示前一个小时已经结束,新的一个小时已经开始。