/// <summary>
        /// Calculates the position size regarding to risk management.
        /// </summary>
        /// <param name="instrument"></param>
        /// <returns></returns>
        public static int AdjustPositionToRiskManagement(IAccountManager accountmanager, IPreferenceManager preferencemanager, IInstrument instrument, double lastprice)
        {
            //Get Risk Management from Account
            IAccount account = accountmanager.GetAccount(instrument, true);

            if (account == null)
            {
                return(instrument.GetDefaultQuantity());
            }

            //get the RiskParams on this account connection
            ConnectionRiskParams crp = preferencemanager.GetConnectionRiskParams(account.AccountConnection.ConnectionName);
            InstrumentRiskParams irp = crp.InstrumentRiskParams[instrument.InstrumentType];

            double maxpositionsizeincash = 0.0;

            if (irp.BasePositionSizing == BasePositionSizing.OnAmountPerPosition)
            {
                maxpositionsizeincash = irp.InvestedAmountPerPosition;
            }
            else if (irp.BasePositionSizing == BasePositionSizing.OnRiskAmountPerTrade)
            {
                maxpositionsizeincash = account.CashValue / 100 * irp.MaxInvestedAmountPercentage;
            }
            else
            {
                throw new NotImplementedException("AdjustPositionToRiskManagement: BasePositionSizing " + irp.BasePositionSizing.ToString() + " not implemented", null);
            }

            //Check the type of instrument & return the position size
            if (instrument.InstrumentType == InstrumentType.Index)
            {
                //return 1;
                return(instrument.GetDefaultQuantity());
            }
            if (instrument.InstrumentType == InstrumentType.Stock)
            {
                return((int)Math.Floor(decimal.ToDouble(MoneyExchange(maxpositionsizeincash, account.Currency, instrument.Currency)) / lastprice));
            }
            else if (instrument.InstrumentType == InstrumentType.CFD)
            {
                return(instrument.GetDefaultQuantity());
            }
            else
            {
                throw new NotImplementedException("AdjustPositionToRiskManagement: InstrumentType " + instrument.InstrumentType.ToString() + " not implemented", null);
            }
        }