DevSolve_DS_SDK_UnitTest/ExpertMoney.mqh
super.admin bcf2d970f1 convert
2025-05-30 14:49:27 +02:00

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);
}
//+------------------------------------------------------------------+