Error CStrategyBase' - wrong parameters count

 

Help me with a clue, what coding error I am doing.

//+----------------------------------------------------------------------------------------------------------+
//| CLASS:        CStrategyBase
//| APPLICATION:  create a base class, which contains just the most common members used in Strategy
//+----------------------------------------------------------------------------------------------------------+
class CStrategyBase
  {
private:

protected:
  //--- define protected member variables / methods
    string                m_Symbol;
    ENUM_TIMEFRAMES       m_TFWorking;
    ENUM_TIMEFRAMES       m_TFTrend;
    ENUM_TIMEFRAMES       m_TFEntry;
    ENUM_APPLIED_PRICE    m_AppliedPrice;

public:
                          CStrategyBase(const string pSymbol,const ENUM_TIMEFRAMES    pTFWorking,
                                                             const ENUM_TIMEFRAMES    pTFTrend,
                                                             const ENUM_TIMEFRAMES    pTFEntry,
                                                             const ENUM_APPLIED_PRICE pAppliedPrice);
                         ~CStrategyBase();
    string                Get_Symbol(void)                   const { return(m_Symbol);       }
    ENUM_TIMEFRAMES       Get_TFWorking(void)                const { return(m_TFWorking);    }
    ENUM_TIMEFRAMES       Get_TFTrend(void)                  const { return(m_TFTrend);      }
    ENUM_TIMEFRAMES       Get_TFEntry(void)                  const { return(m_TFEntry);      }
    ENUM_APPLIED_PRICE    Get_AppliedPrice(void)             const { return(m_AppliedPrice); }
  };
//+----------------------------------------------------------------------------------------------------------+
//| METHOD:       CStrategyBase
//| APPLICATION:  'parametric' constructor to set Symbol and 3 TimeFrames for Strategy
//+----------------------------------------------------------------------------------------------------------+
CStrategyBase::CStrategyBase(const string pSymbol,const ENUM_TIMEFRAMES     pTFWorking,
                                                  const ENUM_TIMEFRAMES     pTFTrend,
                                                  const ENUM_TIMEFRAMES     pTFEntry,
                                                  const ENUM_APPLIED_PRICE  pAppliedPrice)
  {
    m_Symbol    = pSymbol;
    m_TFWorking = pTFWorking;
    m_TFTrend   = pTFTrend;
    m_TFEntry   = pTFEntry;   
  } // END Of CStrategyBase()
//+----------------------------------------------------------------------------------------------------------+
//| METHOD:       'default' destructor
//| APPLICATION:  
//+----------------------------------------------------------------------------------------------------------+
CStrategyBase::~CStrategyBase(void)
  {
  //---
  } // END Of ~CStrategyBase()
//+----------------------------------------------------------------------------------------------------------+

  #include  "\..\Strategy\CStrategyBase.mqh"
//+----------------------------------------------------------------------------------------------------------+
//| defines
//+----------------------------------------------------------------------------------------------------------+
class CiVW_MACD : public CStrategyBase
  {
private:
  //--- define structure for custom Applied Prices
    enum enum_APPLIED_PRICE
      {
        price_CLOSE,      // Close
        price_OPEN,       // Open
        price_HIGH,       // High
        price_LOW,        // Low
        price_MEDIAN,     // Median
        price_TYPICAL,    // Typical
        price_WEIGHTED,   // Weighted
        price_AVERAGE,    // Average (high+low+open+close)/4 ... non MQL standard method
        priceHA_CLOSE,    // Heiken ashi close
        priceHA_OPEN,     // Heiken ashi open
        priceHA_HIGH,     // Heiken ashi high
        priceHA_LOW,      // Heiken ashi low
        priceHA_MEDIAN,   // Heiken ashi median
        priceHA_TYPICAL,  // Heiken ashi typical
        priceHA_WEIGHTED, // Heiken ashi weighted
        priceHA_AVERAGE   // Heiken ashi average
      };
  //--- class variable for parameters
    int                 m_Handle;             // Indicator handle
    string              m_IndicatorName;      // iCustom needs Custom Indicator name located in Indicator folder
    int                 m_Period_Fast;        // Fast averaging Period
    int                 m_Period_Slow;        // Slow averaging Period
    int                 m_Period_Signal;      // Signal averaging Period
    enum_APPLIED_PRICE  m_AppliedPriceCustom; // 
    bool                m_VolumeReal;         // set as false by default, to use Tick Volume;
  //--- Instance of other Class(s)
    //CLog*             m_log;                // Logging

public:
  //--- Parametric Contstructor and default Destructor methods
          CiVW_MACD(int pPeriod_Fast,int pPeriod_Slow,int pPeriod_Signal,enum_APPLIED_PRICE pAppliedPriceCUSTOM);
         ~CiVW_MACD(void);
    void  Init_Handle(void);
  //--- Specific methods to get values from Custome Indicator 'iFx VW_MACD'
    bool  Get_iVW_MACD(int barStart,int barCount,double &MACD_OsMA[],double &MACD_Main[],double &MACD_Signal[]);
  };
//+----------------------------------------------------------------------------------------------------------+
//| METHOD:       CiVW_MACD()
//| APPLICATION:  'parametric constructor' method with parameters passed into the Class
//+----------------------------------------------------------------------------------------------------------+
CiVW_MACD::CiVW_MACD(int pPeriod_Fast,int pPeriod_Slow,int pPeriod_Signal,enum_APPLIED_PRICE pAppliedPriceCUSTOM) ... Giving error CStrategyBase - wrong parameters count
  {
  //--- 
    m_IndicatorName      = "iFx VW_MACD";
    m_Period_Fast        = pPeriod_Fast;
    m_Period_Slow        = pPeriod_Slow;
    m_Period_Signal      = pPeriod_Signal;
    m_AppliedPriceCustom = pAppliedPriceCUSTOM;
    m_VolumeReal         = false;                 // defaulted to use Tick Volume (true is Real Volume)
    //m_log = CLog::GetLog();
  } // END Of CiVW_MACD()
//+----------------------------------------------------------------------------------------------------------+
//| METHOD:       CiVW_MACD()
//| APPLICATION:  default destructor method
//+----------------------------------------------------------------------------------------------------------+
CiVW_MACD::~CiVW_MACD(void)
  {
    IndicatorRelease(m_Handle);
//---
  } // END Of ~CiVW_MACD()
//+----------------------------------------------------------------------------------------------------------+
//| METHOD:       Init_Handle()
//| APPLICATION:  Indicator Initialization method || to be placed in EA Method ... OnInit()
//+----------------------------------------------------------------------------------------------------------+
void CiVW_MACD::Init_Handle(void)
  {
  //--- Check indicator handle and recreate if INVALID_HANDLE
    if(m_Handle != INVALID_HANDLE)
      IndicatorRelease(m_Handle);
  //--- Create / ReCreate the indicator handle
    m_Handle = iCustom(Get_Symbol(),            // derived variables from CStrategyBase Class
                       Get_TFWorking(),         // derived variables from CStrategyBase Class
                       m_IndicatorName,
                       m_Period_Fast,
                       m_Period_Slow,
                       m_Period_Signal,
                       m_AppliedPriceCustom,    // VWMACD uses, custom calculated AppliedPrices
                       m_VolumeReal,            // false = defaulted to 'TickVolume'
                       PRICE_CLOSE              // for iCustom() Handle or Applied Price Paramenter as last value
                       );
    if(m_Handle == INVALID_HANDLE)
      Print("FAILED Creating iVWMACD indicator. Error Code ",GetLastError());
  } // END Of Init_Handle()
//+----------------------------------------------------------------------------------------------------------+
//| METHOD:       Get_iVW_MACD()
//| APPLICATION:  Copy Custom VWMACD indicator values to the target array
//| BUFFER:       VW OsMA = 0 || MACD Main = 2 || Signal = 3
//+----------------------------------------------------------------------------------------------------------+
bool CiVW_MACD::Get_iVW_MACD(int barStart,int barCount,double &MACD_OsMA[],double &MACD_Main[],double &MACD_Signal[])
  {
    if(m_Handle == INVALID_HANDLE)
      Init_Handle();
  //--- Array to be filled and returned with Volume Weighted MACD values
    ArrayResize(MACD_OsMA,barCount+1);
    ArrayResize(MACD_Main,barCount+1);
    ArrayResize(MACD_Signal,barCount+1);
    ArraySetAsSeries(MACD_OsMA,true);
    ArraySetAsSeries(MACD_Main,true);
    ArraySetAsSeries(MACD_Signal,true);
  //--- Copy Buffer values from Custom Indicator "iFx VWMACD"
    ResetLastError();
    if(!CopyBuffer(m_Handle,0,barStart,barCount,MACD_OsMA))       // Buffer 0 for VWMACD OsMA
      {
        Print(__FUNCTION__,": FAILED CopyBuffer iFx VWMACD OsMA Error Code ",GetLastError());
        return(false);
      }
    if(!CopyBuffer(m_Handle,2,barStart,barCount,MACD_Main))       // Buffer 2 for VWMACD Main
      {
        Print(__FUNCTION__,": FAILED CopyBuffer iFx VWMACD Main Error Code ",GetLastError());
        return(false);
      }
    if(!CopyBuffer(m_Handle,3,barStart,barCount,MACD_Signal))   // Buffer 3 for VWMACD Signal
      {
        Print(__FUNCTION__,": FAILED CopyBuffer iFx VWMACD Signal Error Code ",GetLastError());
        return(false);
      }
  //---
    return(true);
  } // END Of Get_iVWMACD() method
//+----------------------------------------------------------------------------------------------------------+
Reason: