MemberAccountInfo.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. using GalaSoft.MvvmLight;
  2. using Muchinfo.MTPClient.Data.Enums;
  3. using Muchinfo.MTPClient.Data.Helper;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. namespace Muchinfo.MTPClient.Data.Model.Account
  7. {
  8. public class MemberAccountInfo : ObservableObject
  9. {
  10. private decimal _holdNetWorthFloatPL;
  11. /// <summary>
  12. /// 持有净浮亏
  13. /// </summary>
  14. public decimal HoldNetWorthFloatPL
  15. {
  16. get { return _holdNetWorthFloatPL; }
  17. set { Set(() => HoldNetWorthFloatPL, ref _holdNetWorthFloatPL, value); }
  18. }
  19. private decimal _customTradeFloatPL;
  20. /// <summary>
  21. /// 客户交易浮亏
  22. /// </summary>
  23. public decimal CustomTradeFloatPL
  24. {
  25. get { return _customTradeFloatPL; }
  26. set { Set(() => CustomTradeFloatPL, ref _customTradeFloatPL, value); }
  27. }
  28. /// <summary>
  29. /// 隶属账户浮动盈亏
  30. /// </summary>
  31. public decimal CustomerPosFloatPL { get; set; }
  32. /// <summary>
  33. /// 自营头寸浮动盈亏
  34. /// </summary>
  35. public double SelfPosFloatPL { get; set; }
  36. /// <summary>
  37. /// 转单头寸浮动盈亏
  38. /// </summary>
  39. public double CutPosFloatPL { get; set; }
  40. private decimal _hedgeTradeFloatPL;
  41. /// <summary>
  42. /// 对冲交易浮盈亏
  43. /// </summary>
  44. public decimal HedgeTradeFloatPL
  45. {
  46. get { return _hedgeTradeFloatPL; }
  47. set { Set(() => HedgeTradeFloatPL, ref _hedgeTradeFloatPL, value); }
  48. }
  49. /// <summary>
  50. /// 对冲交易浮盈亏格式化
  51. /// </summary>
  52. public string HedgeTradeFloatPLDisplay
  53. {
  54. get { return HedgeTradeFloatPL.ToString("N2"); }
  55. }
  56. /// <summary>
  57. /// 持有净浮亏格式化
  58. /// </summary>
  59. public string HoldNetWorthFloatPLDisplay
  60. {
  61. get { return HoldNetWorthFloatPL.ToString("N2"); }
  62. }
  63. /// <summary>
  64. /// 客户交易浮亏格式化
  65. /// </summary>
  66. public string CustomTradeFloatPLDisplay
  67. {
  68. get { return CustomTradeFloatPL.ToString("N2"); }
  69. }
  70. // private decimal _netWorth;
  71. /// <summary>
  72. /// 净值
  73. /// </summary>
  74. public decimal NetWorth
  75. {
  76. //get
  77. //{
  78. // return Balance; // + FloatPL; //风控服务返回的值就是净值
  79. //}
  80. get;
  81. set;
  82. }
  83. /// <summary>
  84. /// 净值格式化
  85. /// </summary>
  86. public string NetWorthDisplay
  87. {
  88. get { return NetWorth.ToString("N2"); }
  89. }
  90. /// <summary>
  91. /// 可用保证金格式化
  92. /// </summary>
  93. public string AvailMarginDisplay
  94. {
  95. get { return AvailMargin.ToString("N2"); }
  96. }
  97. /// <summary>
  98. /// 期初权益
  99. /// </summary>
  100. public string BalanceDisplay
  101. {
  102. get { return Balance.ToString("N2"); }
  103. }
  104. /// <summary>
  105. /// 可用保证金格式化
  106. /// </summary>
  107. public string UsedMarginDisplay
  108. {
  109. get { return UsedMargin.ToString("N2"); }
  110. }
  111. private decimal _holdPosition;
  112. /// <summary>
  113. /// 持有净头寸
  114. /// </summary>
  115. public decimal HoldPosition
  116. {
  117. get { return _holdPosition; }
  118. set { Set(() => HoldPosition, ref _holdPosition, value); }
  119. }
  120. /// <summary>
  121. /// 可用保证金
  122. /// </summary>
  123. public decimal AvailMargin { get; set; }
  124. /// <summary>
  125. /// 帐户余额
  126. /// </summary>
  127. public decimal Balance { get; set; }
  128. /// <summary>
  129. /// 浮动盈亏
  130. /// </summary>
  131. public decimal FloatPL { get; set; }
  132. /// <summary>
  133. /// 汇率
  134. /// </summary>
  135. public decimal Rate { get; set; }
  136. /// <summary>
  137. /// 交易代码
  138. /// </summary>
  139. public string TradeCode { get; set; }
  140. /// <summary>
  141. /// 占用保证金
  142. /// </summary>
  143. public decimal UsedMargin { get; set; }
  144. /// <summary>
  145. /// 可出资金
  146. /// </summary>
  147. public decimal AvailAmount { get; set; }
  148. private eAccountStatus _accountStatus;
  149. /// <summary>
  150. /// 账号状态
  151. /// </summary>
  152. public eAccountStatus AccountStatus
  153. {
  154. get { return _accountStatus; }
  155. set { Set(() => AccountStatus, ref _accountStatus, value); }
  156. }
  157. private List<MemberPosition> _memberPositions;
  158. /// <summary>
  159. /// 会员持仓汇总信息
  160. /// </summary>
  161. public List<MemberPosition> MemberPositions
  162. {
  163. get { return _memberPositions; }
  164. set
  165. {
  166. _memberPositions = value;
  167. if (value != null)
  168. {
  169. CustomTradeFloatPL = value.Sum((positionPl) => positionPl.CustomerFloatPL);
  170. HedgeTradeFloatPL = value.Sum((position) => position.MemberFloatPL);
  171. HoldNetWorthFloatPL = CustomTradeFloatPL + HedgeTradeFloatPL;
  172. }
  173. }
  174. }
  175. /// <summary>
  176. /// 显示账号类型
  177. /// </summary>
  178. public string RateDisplay
  179. {
  180. get { return Rate.ToString("p2"); }
  181. }
  182. public string AccountStatusDisplay
  183. {
  184. get
  185. {
  186. return AccountStatus.Discription();
  187. }
  188. }
  189. }
  190. }