syntax = "proto2";

package pb;

//交易规则信息子集
message TradeRule{
    optional uint32 RuleID = 1;                   // 交易规则ID
    optional double ParamValue = 2;               // 参数值
}

//交易规则信息
message TradeRuleInfoStruct{
    optional uint64 AccountID = 1;                // 资金账号
    optional uint32 GoodsID = 2;                  // 商品id 
    repeated TradeRule TradeRules = 3;            // 交易规则
}

// 日期类型定义
message Date {
  optional string DateStr = 1; // 日期时间
}

// ERMS2_ARBITRAGESTRATEGY 期现套利策略表
message Erms2ArbitrageStrategy
{
  //mkey: 1
  optional uint64 ASApplyId = 1;    // 策略申请ID(702+Unix秒时间戳(10位)+xxxxxx)
  optional string ASNo = 2;    // 策略编号
  optional uint32 BizType = 3;    // 业务类型 - 1:正向套利 -1:反向套利
  optional uint32 UserId = 4;    // 所属机构
  optional uint32 DeliveryGoodsId = 5;    // 现货品种ID
  optional uint32 GoodsGroupId = 6;    // 期货品种ID
  optional double SpotQuota = 7;    // 现货额度
  optional double FutureQuote = 8;    // 期货额度
  optional double ApplyBasis = 9;    // 申请基差
  optional uint32 StrategyStatus = 10;    // 策略状态 - 0:未结束 1:已结束
  optional string Remark = 11;    // 备注
  optional uint32 MarketId = 12;    // 市场ID
  optional string TradeDate = 13;    // 交易日(yyyyMMdd)
  optional string CloseTradeDate = 14;    // 完结交易日(yyyyMMdd)
  optional double UsedQuota = 15;    // 已占用资金
  optional double FutureQty = 16;    // 期货持仓数量
  optional double FutureAvgPrice = 17;    // 期货建仓均价
  optional double FuturePL = 18;    // 期货总盈亏[结算更新]
  optional double PricedSpotQty = 19;    // 已定价现货数量
  optional double PricedSpotQtyNoTax = 20;    // 已定价现货不含税数量
  optional double SpotavgPrice = 21;    // 现货均价
  optional double SpotPL = 22;    // 现货总盈亏[结算更新]
  optional double NetExposure = 23;    // 单笔业务头寸净敞口 = 期货持仓数量 + 已定价现货不含税数量
  optional double NetExposureRate = 24;    // 净敞口比例 - 0:未结束 =  (NetExposure/PriceSpotQtyNoTax) ； 已结束为0
  optional double TotalPL = 25;    // 业务合计损益 = FuturePL + SpotPL [结算更新]
  optional double OpenBasis = 26;    // 建仓基差
  optional double CurBasis = 27;    // 当前基差[结算更新]
  optional double BasisChangePL = 28;    // 基差变动损益[结算更新]
  optional double NetExposurePL = 29;    // 净敞口损益 = TotalPL - BasisChangePL[结算更新]
  optional double SpotUsedQuota = 30;    // 现货占用资金
  optional double FutureOpenQty = 31;    // 期货开仓数量
  optional double FutureOpenAmount = 32;    // 期货开仓金额
  optional double FutureCloseQty = 33;    // 期货平仓数量
  optional double FutureCloseAmount = 34;    // 期货平仓金额
  optional double SpotBuyAmount = 35;    // 现货采购金额
  optional double SpotBuyQty = 36;    // 现货采购数量
  optional double SpotSellAmount = 37;    // 现货销售金额
  optional double SpotSellQty = 38;    // 现货销售数量
  optional Date UpDatetime = 39;    // 更新时间
  optional string ASName = 40;    // 策略名称
}

// ERMCP_AREASPOT 企业现货表
message ErmcpAreaSpot
{
  //mkey: 1 2
  optional uint32 WrStandardID = 1;    // 现货商品ID
  optional uint32 AreaUserID = 2;    // 所属机构
  optional double OriBuyPlanQty = 3;    // 期初采购计划数量
  optional double OriBuyPricedQty = 4;    // 期初采购合同已定价数量
  optional double OriSellPlanQty = 5;    // 期初销售计划数量
  optional double OriSellPricedQty = 6;    // 期初销售合同已定价数量
  optional double BuyPlanQty = 7;    // 采购计划数量
  optional double BuyPricedQty = 8;    // 采购合同已定价数量
  optional double SellPlanQty = 9;    // 销售计划数量
  optional double SellPricedQty = 10;    // 销售合同已定价数量
  optional double TotalSpotQty = 11;    // 现货头寸总量 =  (销售计划数量 - 销售已定价数量)  - (采购计划数量 - 采购已定价数量)
  optional Date UpdateTime = 12;    // 更新时间
}

// ERMCP_AREAEXPOSURE 企业敞口表
message ErmcpAreaExposure
{
  //mkey: 1 2
  //nkey: 1
  optional uint32 MiddleGoodsID = 1;    // 套保品种
  optional uint32 AreaUserID = 2;    // 所属机构
  optional double OriBuyPlanQty = 3;    // 期初采购计划数量
  optional double OriBuyPricedQty = 4;    // 期初采购合同已定价数量
  optional double OriSellPlanQty = 5;    // 期初销售计划数量
  optional double OriSellPricedQty = 6;    // 期初销售合同已定价数量
  optional uint64 OriBuyFutureQty = 7;    // 期初买入期货数量
  optional uint64 OriSellFutureQty = 8;    // 期初卖出期货数量
  optional double BuyPlanQty = 9;    // 采购计划数量
  optional double BuyPricedQty = 10;    // 采购合同已定价数量
  optional double SellPlanQty = 11;    // 销售计划数量
  optional double SellPricedQty = 12;    // 销售合同已定价数量
  optional double BuyFutureQty = 13;    // 买入期货数量
  optional double SellFutureQty = 14;    // 卖出期货数量
  optional double TotalSpotQty = 15;    // 现货头寸总量
  optional double TotalFutureQty = 16;    // 期货头寸总量
  optional double TotalExposure = 17;    // 实时总敞口
  optional double TotalHedgeRatio = 18;    // 总套保比率
  optional double TotalNeedHedgeQty = 19;    // 应套保总量
  optional double NeedHedgeExposoure = 20;    // 应套保敞口
  optional double NeedHedgeRatio = 21;    // 应套保比率
  optional Date UpdateTime = 22;    // 更新时间
}