75 lines
3.4 KiB
MQL5
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;
|
|
}
|
|
//+------------------------------------------------------------------+
|