//+------------------------------------------------------------------+ //| ClosedPositions.mqh – kolekce zavřených pozic | //+------------------------------------------------------------------+ #property copyright "TestRefactor" #property strict #ifndef __CLOSED_POSITIONS_MQH__ #define __CLOSED_POSITIONS_MQH__ #include "ClosedPosition.mqh" //+------------------------------------------------------------------+ //| CClosedPositions – kolekce CClosedPosition (historie / dashboard)| //+------------------------------------------------------------------+ class CClosedPositions { private: CClosedPosition m_items[]; int m_count; int m_maxSize; public: CClosedPositions(int maxSize = 100) : m_count(0), m_maxSize(maxSize) { ArrayResize(m_items, 0); } void Add(const CClosedPosition &item) { if(m_count >= m_maxSize) { for(int i = 0; i < m_count - 1; i++) m_items[i] = m_items[i + 1]; m_items[m_count - 1] = item; } else { ArrayResize(m_items, m_count + 1); m_items[m_count] = item; m_count++; } } int Count() const { return m_count; } CClosedPosition* At(int index) { if(index < 0 || index >= m_count) return NULL; return GetPointer(m_items[index]); } double GetTotalProfit() const { double sum = 0; for(int i = 0; i < m_count; i++) sum += m_items[i].GetNetProfit(); return sum; } }; #endif