Exemplo n.º 1
0
 public static AccountShareOnDate DecorateAccountShareHistory(ACCOUNT_SHARE_HISTORY record)
 {
     return(new AccountShareOnDate
     {
         date = record.Date,
         newHWM = record.NewHWM,
         newShare = record.NewShare,
         oldHWM = record.OldHWM,
         oldShare = record.OldShare,
         shareAmount = record.ShareAmount
     });
 }
Exemplo n.º 2
0
 public static AccountShareOnDate DecorateAccountShareHistory(ACCOUNT_SHARE_HISTORY record)
 {
     return new AccountShareOnDate
         {
             date = record.Date,
             newHWM = record.NewHWM,
             newShare = record.NewShare,
             oldHWM = record.OldHWM,
             oldShare = record.OldShare,
             shareAmount = record.ShareAmount
         };
 }
Exemplo n.º 3
0
        public ACCOUNT_SHARE_HISTORY CalculateAccountShare(TradeSharpConnection ctx,
                                                           ACCOUNT_SHARE share,
                                                           ACCOUNT_SHARE ownerShare,
                                                           ref decimal ownersMoney,
                                                           decimal equity, 
                                                           PaidService serviceWithFeeScale,
                                                           out bool feeWasTaken)
        {
            feeWasTaken = false;
            var shareMoney = equity*share.Share/100M;
            var hist = new ACCOUNT_SHARE_HISTORY
                {
                    Account = share.Account,
                    Date = DateTime.Now,
                    OldShare = share.Share,
                    OldHWM = share.HWM,
                    NewShare = share.Share,
                    NewHWM = Math.Max(share.HWM ?? 0, shareMoney),
                    ShareOwner = share.ShareOwner,
                    ShareAmount = shareMoney
                };

            share.HWM = hist.NewHWM;
            if ((hist.OldHWM ?? 0) == 0)
                return hist;
            if (shareMoney <= hist.OldHWM)
                return hist;
            if (serviceWithFeeScale == null)
                return hist;

            // был установлен новый HWM?
            var aboveHwm = shareMoney - hist.OldHWM.Value;
            // посчитать сумму комиссии
            var fee = serviceWithFeeScale.CalculateFee(shareMoney, aboveHwm);
            if (fee < 0.01M) return hist;

            feeWasTaken = true;

            // этот самый кусочек приписать владельцу и списать его с пайщика
            ownersMoney += fee;
            shareMoney -= fee;
            ownerShare.Share = ownersMoney*100M/equity;
            share.Share = shareMoney*100M/equity;

            var newHwm = shareMoney;
            if (newHwm > share.HWM)
            {
                share.HWM = newHwm;
                hist.NewHWM = newHwm;
            }
            return hist;
        }
Exemplo n.º 4
0
        public PammHistoryModel(ACCOUNT_SHARE_HISTORY[] data)
        {
            CurrentItems = data;

            MaxShareY = CurrentItems.Max(x => x.NewShare);
            MinShareY = CurrentItems.Min(x => x.NewShare);

            OneCharacterShare = (Math.Sign(MaxShareY) == Math.Sign(MinShareY));

            MaxHtmY = CurrentItems.Max(x => x.NewHWM);
            MinHtmY = CurrentItems.Min(x => x.NewHWM);

            OneCharacterHtm = (Math.Sign(MaxHtmY) == Math.Sign(MinHtmY));
        }