BARS returning 0 ? - page 2

 
AliceRioBR #:

Wow.... that's worst to me, since now I will have to understand what is going on here.

Thank you VERY  much for your help Alain.

I wish you a Merry Christmas and a healthy (and profitable!) New Year!

You are welcome.
 

Just an info to help others:

I really had made a mistake. Although all bars were available at the META CHART, I was trying to conduct the BARS() operation using the same date interval of my term as set in the backtest.

So, when the backtest started and the BARS() function was called, in fact I hadn't all the subsequent bars (until the End_Date) available in its CHART window. My mistake was to see the META chart with all period bars and forget that I was creating a new chart-window in TESTER.

A basic mistake due to the long (and hard) time dedicated to code today.

Again, thank you Alain for the support and tests, which lead me to dive deeper in the problem.

 
Alain Verleyen #:
You are welcome.

Hello Alain!

I've Set The "input datetime" to my £xpert advisor but this parameter seems not to work, because the £xpert advisor is always active (Placing orders) £ven in the deactivated time.

Would you help me? 

Thanks in advance.

//+------------------------------------------------------------------+
//|                                            Macd High & Low💪.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMACD.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title              ="Macd High & Low💪"; // Document name
ulong                    Expert_MagicNumber        =16507;               //
bool                     Expert_EveryTick          =true;               //

//--- input parameters
input datetime  Start_Date           = D'2022.01.06';   // INICIO (yyyy.mm.dd hh:mm)
input datetime  End_Date             = D'2022.01.07';   // FINAL  (yyyy.mm.dd hh:mm)
//--- 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.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_0_MACD_PeriodFast  =12;                  // MACD(12,24,9,PRICE_HIGH) Period of fast EMA
input int                Signal_0_MACD_PeriodSlow  =24;                  // MACD(12,24,9,PRICE_HIGH) Period of slow EMA
input int                Signal_0_MACD_PeriodSignal=9;                   // MACD(12,24,9,PRICE_HIGH) Period of averaging of difference
input ENUM_APPLIED_PRICE Signal_0_MACD_Applied     =PRICE_HIGH;          // MACD(12,24,9,PRICE_HIGH) Prices series
input double             Signal_0_MACD_Weight      =1.0;                 // MACD(12,24,9,PRICE_HIGH) Weight [0...1.0]
input int                Signal_1_MACD_PeriodFast  =12;                  // MACD(12,24,9,PRICE_LOW) Period of fast EMA
input int                Signal_1_MACD_PeriodSlow  =24;                  // MACD(12,24,9,PRICE_LOW) Period of slow EMA
input int                Signal_1_MACD_PeriodSignal=9;                   // MACD(12,24,9,PRICE_LOW) Period of averaging of difference
input ENUM_APPLIED_PRICE Signal_1_MACD_Applied     =PRICE_LOW;           // MACD(12,24,9,PRICE_LOW) Prices series
input double             Signal_1_MACD_Weight      =1.0;                 // MACD(12,24,9,PRICE_LOW) Weight [0...1.0]
//--- inputs for money
input double             Money_FixLot_Percent      =10.0;                // Percent
input double             Money_FixLot_Lots         =0.1;                 // Fixed volume
//+------------------------------------------------------------------+
//| 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 CSignalMACD
   CSignalMACD *filter0=new CSignalMACD;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodFast(Signal_0_MACD_PeriodFast);
   filter0.PeriodSlow(Signal_0_MACD_PeriodSlow);
   filter0.PeriodSignal(Signal_0_MACD_PeriodSignal);
   filter0.Applied(Signal_0_MACD_Applied);
   filter0.Weight(Signal_0_MACD_Weight);
//--- Creating filter CSignalMACD
   CSignalMACD *filter1=new CSignalMACD;
   if(filter1==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter1");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter1);
//--- Set filter parameters
   filter1.PeriodFast(Signal_1_MACD_PeriodFast);
   filter1.PeriodSlow(Signal_1_MACD_PeriodSlow);
   filter1.PeriodSignal(Signal_1_MACD_PeriodSignal);
   filter1.Applied(Signal_1_MACD_Applied);
   filter1.Weight(Signal_1_MACD_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
   CMoneyFixedLot *money=new CMoneyFixedLot;
   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_FixLot_Percent);
   money.Lots(Money_FixLot_Lots);
//--- 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();
  }
//+------------------------------------------------------------------+
Reason: