73 lines
3.4 KiB
MQL5
73 lines
3.4 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| MoneyFixedLot.mqh |
| |||
//| Copyright 2000-2025, MetaQuotes Ltd. |
| |||
//| https://www.mql5.com |
| |||
//+------------------------------------------------------------------+
| |||
#include <Expert\ExpertMoney.mqh>
| |||
// wizard description start
| |||
//+------------------------------------------------------------------+
| |||
//| Description of the class |
| |||
//| Title=Trading with fixed trade volume |
| |||
//| Type=Money |
| |||
//| Name=FixLot |
| |||
//| Class=CMoneyFixedLot |
| |||
//| Page= |
| |||
//| Parameter=Percent,double,10.0,Percent |
| |||
//| Parameter=Lots,double,0.1,Fixed volume |
| |||
//+------------------------------------------------------------------+
| |||
// wizard description end
| |||
//+------------------------------------------------------------------+
| |||
//| Class CMoneyFixedLot. |
| |||
//| Purpose: Class of money management with fixed lot. |
| |||
//| Derives from class CExpertMoney. |
| |||
//+------------------------------------------------------------------+
| |||
class CMoneyFixedLot : public CExpertMoney
| |||
{
| |||
protected:
| |||
//--- input parameters
| |||
double m_lots;
| |||
| |||
public:
| |||
CMoneyFixedLot(void);
| |||
~CMoneyFixedLot(void);
| |||
//---
| |||
void Lots(double lots) { m_lots=lots; }
| |||
virtual bool ValidationSettings(void);
| |||
//---
| |||
virtual double CheckOpenLong(double price,double sl) { return(m_lots); }
| |||
virtual double CheckOpenShort(double price,double sl) { return(m_lots); }
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
void CMoneyFixedLot::CMoneyFixedLot(void) : m_lots(0.1)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
void CMoneyFixedLot::~CMoneyFixedLot(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Validation settings protected data. |
| |||
//+------------------------------------------------------------------+
| |||
bool CMoneyFixedLot::ValidationSettings(void)
| |||
{
| |||
if(!CExpertMoney::ValidationSettings())
| |||
return(false);
| |||
//--- initial data checks
| |||
if(m_lots<m_symbol.LotsMin() || m_lots>m_symbol.LotsMax())
| |||
{
| |||
printf(__FUNCTION__+": lots amount must be in the range from %f to %f",m_symbol.LotsMin(),m_symbol.LotsMax());
| |||
return(false);
| |||
}
| |||
if(MathAbs(m_lots/m_symbol.LotsStep()-MathRound(m_lots/m_symbol.LotsStep()))>1.0E-10)
| |||
{
| |||
printf(__FUNCTION__+": lots amount is not corresponding with lot step %f",m_symbol.LotsStep());
| |||
return(false);
| |||
}
| |||
//--- ok
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
|