//+------------------------------------------------------------------+ //| Target.mqh | //| Copyright 2016, Vasiliy Sokolov, St-Petersburg, Russia | //| https://www.mql5.com/ru/users/c-4 | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Vasiliy Sokolov." #property link "https://www.mql5.com/ru/users/c-4" #include //+------------------------------------------------------------------+ //| Таргет - элемент сценария комплексной позиции. | //| Указывает, по какому инструменту и какой объем требуется | //| исполнить в момент исполнения комплексной позиции. | //+------------------------------------------------------------------+ class CTarget : public CObject { private: string m_symbol; // Символ, по которому необходимо совершить сделку double m_volume; // Объем сделки. Если объем сделки меньше нуля - требуется продать, // если больше нуля - требуется купить public: CTarget(string symbol,double volume); string Symbol(); double Volume(); bool operator!=(CTarget *target)const; bool operator==(CTarget *target)const; CTarget *Clone(void); }; //+------------------------------------------------------------------+ //| По умолчанию таргет создается сразу с указанием инструмента | //| и торгового объема. | //+------------------------------------------------------------------+ CTarget::CTarget(string symbol,double volume) { m_symbol = symbol; m_volume = volume; } //+------------------------------------------------------------------+ //| Возвращает символ таргета | //+------------------------------------------------------------------+ string CTarget::Symbol(void) { return m_symbol; } //+------------------------------------------------------------------+ //| Возвращает объем таргета | //+------------------------------------------------------------------+ double CTarget::Volume(void) { return m_volume; } //+------------------------------------------------------------------+ //| Для удобства переопределяем оператор "равно". | //+------------------------------------------------------------------+ bool CTarget::operator==(CTarget *target)const { if(target.Symbol() == m_symbol && target.Volume() == m_volume)return true; return false; } //+------------------------------------------------------------------+ //| Для удобства переопределяем оператор "не равно". | //+------------------------------------------------------------------+ bool CTarget::operator!=(CTarget *target)const { return !(target == GetPointer(this)); } //+------------------------------------------------------------------+ //| Клонирует текущий таргет, возвращая его полную копию. | //+------------------------------------------------------------------+ CTarget *CTarget::Clone(void) { CTarget *target=new CTarget(m_symbol,m_volume); return target; } //+------------------------------------------------------------------+