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); }
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()); }
//计算买入需要花的钱 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)); }
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); }
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); }
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); } }
//计算该价格下最大可买数量 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))); }