/////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 Class Library // ---------------------------------------------- // Name: XSCAccount // Description: provides all Account requirements ... // // // Maintainer: // ------------ // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) // ////////////////////////////////////////////////////// // // Global Properties ... #property library #property copyright "Copyright 2023, SaherElm IT Center" #property link "https://www.saherelm.ir" #property version "1.00" #property strict // // START Definitions ... // // // END Definitions ... // // // START Import and Inclused requirements ... // // // Includes ... #include #include "../Classes/x-saherelm.base.class.mq5" // // END Import and Inclused requirements ... // // // START Overrides ... // // // END Overrides ... // // // a Class for Manage Account ... class XSCAccount : public XSCBase { // // Public ... public: // // Constructor ... void XSCAccount() { // mAccountInfo = new CAccountInfo(); } // // Deconstructor ... void ~XSCAccount() { } // // START Provided Functions ... // // // User Account ... long GetUserAccount() { return mAccountInfo.Login(); } // // Account Leverage ... long GetLeverage() { return mAccountInfo.Leverage(); } // // Get Trade Expert State ... bool CanExpertTrade() { return mAccountInfo.TradeExpert(); } // // User Account Trade Mopde (ENUM_ACCOUNT_TRADE_MODE) ... // -------------------------- // ACCOUNT_TRADE_MODE_DEMO // ACCOUNT_TRADE_MODE_CONTEST // ACCOUNT_TRADE_MODE_REAL ENUM_ACCOUNT_TRADE_MODE GetTradeMode() { return mAccountInfo.TradeMode(); } // // Get Account Balance ... double GetBalance() { return mAccountInfo.Balance(); } // // Get the amount of give Credit ... double GetCredit() { return mAccountInfo.Credit(); } // // Get the amount of current Profit on account ... double GetProfit() { return mAccountInfo.Profit(); } // // Get the amount of current Equity on account ... double GetEquity() { return mAccountInfo.Equity(); } // // Get the amount of reserved Margin ... double GetMargin() { return mAccountInfo.Margin(); } // // Get the amount of free Margin ... double GetFreeMargin() { return mAccountInfo.FreeMargin(); } // // Get the Level of Margin ... double GetMarginLevel() { return mAccountInfo.MarginLevel(); } // // Get the Level Of Margin for a Deposit ... double GetMarginCall() { return mAccountInfo.MarginCall(); } // // Get the Level of Margin for Stop out ... double GetMarginStopOut() { return mAccountInfo.MarginStopOut(); } // // Get the Client Name ... string GetName() { return mAccountInfo.Name(); } // // Get the Trade Server Name ... string GetServerName() { return mAccountInfo.Server(); } // // Get deposit Currency Name ... string GetCurrency() { return mAccountInfo.Currency(); } // // Get the Company Name that serves an Account ... string GetCompany() { return mAccountInfo.Company(); } // // Calculate Profits for the current account based on passed parameters ... double CalculateTradeProfit( const string symbol, // trading symbol ENUM_ORDER_TYPE type, // order type double volume, // volume double entry, // open price double exit // close price ) { // double result = mAccountInfo.OrderProfitCheck( symbol, type, volume, entry, exit); // return result; } // // Calculate amount of margin which required for trade operation ... double CalculateMarging( const string symbol, // trading symbol ENUM_ORDER_TYPE type, // order type double volume, // volume double entry // open price ) { // double result = mAccountInfo.MarginCheck( symbol, type, volume, entry); // return result; } // // Calculate amount of free margin left after trade operation ... double CalculateFreeMarging( const string symbol, // trading symbol ENUM_ORDER_TYPE type, // order type double volume, // volume double entry // open price ) { // double result = mAccountInfo.FreeMarginCheck( symbol, type, volume, entry); // return result; } // // Calculate the Maximum possible volume of trade operation ... double CalculateMaxVolume( const string symbol, // trading symbol ENUM_ORDER_TYPE type, // order type double entry, // open price double percent = 100 // percent of available margin ) { // double result = mAccountInfo.MaxLotCheck( symbol, type, entry, percent); // return result; } // // Calculate Point Value for Given Symbol based on Account ... double GetPointValue( string symbol // trading symbol ) { // double result = 0; // double tickSize = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE); double tickValue = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE); double point = SymbolInfoDouble(symbol, SYMBOL_POINT); // double ticksPerPoint = tickSize / point; // result = tickValue / ticksPerPoint; // return result; } // // Calculate Risk Amount based on account Currency by Providing: // Points and Volume ... double CalculateRiskAmount( string symbol, // trading symbol double points, // amount of Risk Points double volume // position Volume ) { // double result = 0; // double pointValue = GetPointValue(symbol); // result = pointValue * volume * points; // return result; } // // Calculate Risk Points based on account Currency by Providing: // Volume and Amount ... double CalculateRiskPoints( string symbol, // trading symbol double volume, // position Volume double amount // amount of Risk based on Account Currency ) { // double result = 0; // double pointValue = GetPointValue(symbol); // result = amount / (pointValue * volume); // return result; } // // Calculate Volume based on account Currency by Providing: // Amount and Risk Points ... double CalculateVolume( string symbol, // trading symbol double amount, // amount of Risk based on Account Currency double points // amount of Risk Points ) { // double result = 0; // points = points <= 0 ? 10 : points; // double pointValue = GetPointValue(symbol); // result = amount / (pointValue * points); // return result; } // // END Provided Functions ... // // // Protected ... protected: // // Private ... private: // // Account Info ... CAccountInfo mAccountInfo; }; // // START Usefull Functions ... // // // END Usefull Functions ... //