예제 #1
0
        public static decimal GetUsedMargin(this IMarginTradingAccount account)
        {
            var fplData = account.GetAccountFpl();

            //According to ESMA MCO rule a stop-out added at 50% of the initially invested margin
            //So if the 50% of the initially invested margin (accumulated per the account), is bigger than the recalculated 100%, than this margin requirement is the reference for the free capital determination and the liquidation level.
            return(Math.Max(fplData.UsedMargin, fplData.InitiallyUsedMargin / 2));
        }
예제 #2
0
        public static AccountLevel GetAccountLevel(this IMarginTradingAccount account,
                                                   decimal?overnightUsedMargin = null)
        {
            var marginUsageLevel = account.GetMarginUsageLevel(overnightUsedMargin);
            var accountFplData   = account.GetAccountFpl();

            if (marginUsageLevel <= accountFplData.StopOutLevel)
            {
                return(AccountLevel.StopOut);
            }

            if (marginUsageLevel <= accountFplData.MarginCall2Level)
            {
                return(AccountLevel.MarginCall2);
            }

            if (marginUsageLevel <= accountFplData.MarginCall1Level)
            {
                return(AccountLevel.MarginCall1);
            }

            return(AccountLevel.None);
        }
예제 #3
0
 public static int GetOpenPositionsCount(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().OpenPositionsCount);
 }
예제 #4
0
 public static decimal GetStopOutLevel(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().StopoutLevel);
 }
예제 #5
0
 public static decimal GetMarginCallLevel(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().MarginCallLevel);
 }
예제 #6
0
 public static decimal GetMarginInit(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().MarginInit);
 }
예제 #7
0
 public static decimal GetUsedMargin(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().UsedMargin);
 }
예제 #8
0
 public static decimal GetPnl(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().PnL);
 }
예제 #9
0
 public static int GetActiveOrdersCount(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().ActiveOrdersCount);
 }
예제 #10
0
 public static decimal GetFrozenMargin(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().WithdrawalFrozenMargin);
 }
예제 #11
0
 public static decimal GetUnrealizedDailyPnl(this IMarginTradingAccount account)
 {
     return(account.GetAccountFpl().UnrealizedDailyPnl);
 }