86 lines
3.5 KiB
MQL5
86 lines
3.5 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| ExpertMoney.mqh |
|
|
//| Copyright 2023 - Dev.Solve LTDA |
|
|
//+------------------------------------------------------------------+
|
|
//+------------------------------------------------------------------+
|
|
//| Macro definitions. |
|
|
//+------------------------------------------------------------------+
|
|
#include "ExpertError.mqh"
|
|
//+------------------------------------------------------------------+
|
|
//| Class CExpertMoney. |
|
|
//| Purpose: Base class money managment. |
|
|
//| Derives from class CExpertBase. |
|
|
//+------------------------------------------------------------------+
|
|
class CExpertMoney
|
|
{
|
|
protected:
|
|
//--- input parameters
|
|
string m_symbol;
|
|
ulong m_magic;
|
|
double m_tick_size;
|
|
double m_tick_value;
|
|
double m_lots_min;
|
|
double m_lots_max;
|
|
double m_lots_step;
|
|
public:
|
|
CExpertMoney(void);
|
|
~CExpertMoney(void);
|
|
//--- init
|
|
bool Init(string symbol,ulong magic);
|
|
//--- method of verification of settings
|
|
virtual bool ValidationSettings();
|
|
//---
|
|
virtual double Lot(double price,double sl);
|
|
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Constructor |
|
|
//+------------------------------------------------------------------+
|
|
void CExpertMoney::CExpertMoney(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
void CExpertMoney::~CExpertMoney(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Init |
|
|
//+------------------------------------------------------------------+
|
|
bool CExpertMoney::Init(string symbol,ulong magic)
|
|
{
|
|
//--- set symbol property
|
|
m_symbol=symbol;
|
|
if(!SymbolInfoDouble(m_symbol,SYMBOL_TRADE_TICK_SIZE,m_tick_size))
|
|
return(false);
|
|
if(!SymbolInfoDouble(m_symbol,SYMBOL_TRADE_TICK_VALUE,m_tick_value))
|
|
return(false);
|
|
if(!SymbolInfoDouble(m_symbol,SYMBOL_VOLUME_MIN,m_lots_min))
|
|
return(false);
|
|
if(!SymbolInfoDouble(m_symbol,SYMBOL_VOLUME_MAX,m_lots_max))
|
|
return(false);
|
|
if(!SymbolInfoDouble(m_symbol,SYMBOL_VOLUME_STEP,m_lots_step))
|
|
return(false);
|
|
//--- magic
|
|
m_magic=magic;
|
|
//--- ok
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Validation settings protected data. |
|
|
//+------------------------------------------------------------------+
|
|
bool CExpertMoney::ValidationSettings()
|
|
{
|
|
//---
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Getting lot size for open position. |
|
|
//+------------------------------------------------------------------+
|
|
double CExpertMoney::Lot(double price,double sl)
|
|
{
|
|
//---
|
|
return(m_lots_min);
|
|
}
|
|
//+------------------------------------------------------------------+
|