Пример #1
0
        private double GetTradePrice(string code, OrderSide orderSide, double price)
        {
            if (AccountSetting.SlipPerccent != 0)
            {
                if (orderSide == OrderSide.Buy)
                {
                    return(price * (1 + AccountSetting.SlipPerccent));
                }
                else
                {
                    return(price * (1 - AccountSetting.SlipPerccent));
                }
            }
            else if (accountSetting.SlipPrice != 0)
            {
                ITradeFee_Code fee            = this.GetTradeFee_Code(code);
                double         minPriceChange = fee.MinPriceChange;
                if (orderSide == OrderSide.Buy)
                {
                    return(price + (accountSetting.SlipPrice * minPriceChange));
                }
                else
                {
                    return(price * (accountSetting.SlipPrice * minPriceChange));
                }
            }

            return(price);
        }
Пример #2
0
        public override ITradeFee_Code GetFee(string code)
        {
            CodeInfo       codeInfo = dataCenter.DataReader.CodeReader.GetCodeInfo(code);
            string         catelog  = codeInfo.Catelog;
            ITradeFee_Code fee_Code = base.GetFee(catelog);

            return((ITradeFee_Code)fee_Code.Clone());
        }
Пример #3
0
        //计算买入需要花的钱
        private double CalcTradeMoney_Open(String code, double price, int hand, OpenCloseType openCloseType)
        {
            ITradeFee_Code tradeFee = GetTradeFee_Code(code);
            //交易费用 TODO 按百分比收交易费用
            double handFee = tradeFee.BuyFee;

            return(hand * (price * tradeFee.HandCount * (tradeFee.DepositPercent / 100) + handFee));
        }
Пример #4
0
        internal ITradeFee_Code GetTradeFee_Code(String code)
        {
            if (fee == null)
            {
                return(defaultFee_Code);
            }
            ITradeFee_Code tradeFee = fee.GetFee(code);

            return(tradeFee == null ? defaultFee_Code : tradeFee);
        }
Пример #5
0
        private double CalcTradeMoney_Close(PositionInfo positionInfo, double price, int mount)
        {
            ITradeFee_Code tradeFee = GetTradeFee_Code(positionInfo.InstrumentID);
            //交易费用
            double handFee   = tradeFee.SellFee;
            double earnmoney = CalcEarnMoney(positionInfo, mount, price);

            //return hand * (price * tradeFee.HandCount * (tradeFee.DepositPercent / 100) - handFee);
            return(mount * (positionInfo.PositionCost * tradeFee.HandCount * (tradeFee.DepositPercent / 100) - handFee) + earnmoney);
        }
Пример #6
0
 private void SaveFee(ITradeFee tradeFee, List <string> codes, XmlElement xmlElem)
 {
     foreach (string code in codes)
     {
         XmlElement subElem = xmlElem.OwnerDocument.CreateElement("tradefee");
         xmlElem.AppendChild(subElem);
         ITradeFee_Code tradeFee_Code = tradeFee.GetFee(code);
         tradeFee_Code.Save(subElem);
     }
 }
Пример #7
0
        //计算该价格下最大可买数量
        private int GetMaxCanBuy(String code, double price, double percent)
        {
            ITradeFee_Code tradeFee = GetTradeFee_Code(code);

            return((int)(this.money * percent / 100 / (price * tradeFee.HandCount * (tradeFee.DepositPercent / 100) + tradeFee.BuyFee)));
        }