//+------------------------------------------------------------------+
//|                                                    iForexDNA.mq4 |
//|                                          Copyright 2016, iPayDNA |
//|                                               http://ipaydna.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2016, iPayDNA"
#property link      "http://ipaydna.biz"
#property version   "1.00"
#property strict

#include "..\iForexDNA\ExternVariables.mqh"
#include "..\iForexDNA\CandleStick\CandleStick.mqh"
#include "..\iForexDNA\CandleStick\CandleStickArray.mqh"
#include "..\iForexDNA\MiscFunc.mqh"
#include "..\iForexDNA\Enums.mqh"
#include "..\iForexDNA\IndicatorsHelper.mqh"
#include "..\iForexDNA\AccountManager.mqh"
#include "..\iForexDNA\AdvanceIndicator.mqh"
#include "..\iForexDNA\OpenPosition.mqh"


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

class ManagePosition
{
    private:
        CandleStickArray                *m_CandleStick;
        IndicatorsHelper                *m_Indicators;
        AdvanceIndicator                *m_AdvIndicators;
        AccountManager                  *m_AccountManager;
        OpenPosition                    *m_OpenPosition;


        // Managing all the Strategy's Positions
        void                            ManageBuyPositions();
        void                            ManageSellPositions();


    public:
                                        ManagePosition(CandleStickArray *pCandleStick, AccountManager *pAccountManager, IndicatorsHelper *pIndiactors, AdvanceIndicator *pAdvIndicators, OpenPosition *pOpenPosition);
                                        ~ManagePosition();

        bool                            Init();
        void                            OnUpdate();


};

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

ManagePosition::ManagePosition(CandleStickArray *pCandleStick, AccountManager *pAccountManager, IndicatorsHelper *pIndiactors, AdvanceIndicator *pAdvIndicators, OpenPosition *pOpenPosition)
{
   m_CandleStick=NULL;
   m_AccountManager=NULL;
   m_Indicators=NULL;
   m_AdvIndicators=NULL;
   m_OpenPosition=NULL;

   if(pCandleStick==NULL)
      LogError(__FUNCTION__,"pCandleStick pointer is NULL");
   else
      m_CandleStick=pCandleStick;

   if(pAccountManager==NULL)
      LogError(__FUNCTION__,"pAccountManager pointer is NULL");
   else
      m_AccountManager=pAccountManager;
      
   if(pIndiactors==NULL)
      LogError(__FUNCTION__,"pIndicators pointer is NULL");
   else
      m_Indicators=pIndiactors;
      
   if(pAdvIndicators==NULL)
      LogError(__FUNCTION__,"pAdvanceIndicators pointer is NULL");
   else
      m_AdvIndicators=pAdvIndicators;

   if(pOpenPosition==NULL)
      LogError(__FUNCTION__,"OpenPosition pointer is NULL");
   else
      m_OpenPosition=pOpenPosition;
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
ManagePosition::~ManagePosition()
{

}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool  ManagePosition::Init()
{
   return true;
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ManagePosition::OnUpdate()
{
   ManageBuyPositions();   
   ManageSellPositions();
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

void ManagePosition::ManageBuyPositions()
{
   return;
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

void ManagePosition::ManageSellPositions()
{
   return;
}

//+------------------------------------------------------------------+