UTE/Strategy/Target.mqh
super.admin bd7e405a90 convert
2025-05-30 16:34:43 +02:00

75 lines
3.4 KiB
MQL5

//+------------------------------------------------------------------+
//| 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 <Object.mqh>
//+------------------------------------------------------------------+
//| Таргет - элемент сценария комплексной позиции. |
//| Указывает, по какому инструменту и какой объем требуется |
//| исполнить в момент исполнения комплексной позиции. |
//+------------------------------------------------------------------+
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;
}
//+------------------------------------------------------------------+