示例#1
0
 public static void AddPosition(QuikConnectionManager.Position obj)
 {
     if (!Positions.Any(k => k.AccountName == obj.AccountName && k.Instrument.Code == obj.SecurityCode))
     {
         Entities.Instrument instr;
         if (obj.AccountName == "FOUXK_001")
         {
             Console.Write("fnfyng");
         }
         try
         {
             instr = Instruments.First(k => k.Code == obj.SecurityCode);
             var pos = new Entities.Position(obj.AccountName, instr, obj.TotalNet, obj.BuyQty, obj.SellQty, obj.VarMargin);
             Positions.Add(pos);
             log.Info("New position added. SecCode={0} Account={1}", obj.SecurityCode, obj.AccountName);
             if (pos.Instrument.Type == Entities.InstrumentType.Futures)
             {
                 if (Portfolios.Any(k => k.BaseCode == pos.Instrument.Code && k.Account == pos.AccountName))
                 {
                     Portfolios.First(k => k.BaseCode == pos.Instrument.Code && k.Account == pos.AccountName).Positions.Add(pos);
                     log.Info("Futures Position added to existing portfolio.");
                 }
                 else
                 {   // create new portfolio
                     Entities.Portfolio port = new Entities.Portfolio(pos.Instrument.Code, pos.AccountName);
                     port.Positions.Add(pos);
                     Portfolios.Add(port);
                     log.Info("New portfolio created. Name={0} Base={1} Account={2}", port.Name, port.BaseCode, port.Account);
                 }
             }
             else if (pos.Instrument.Type == Entities.InstrumentType.Option)
             {
                 if (Portfolios.Any(k => k.BaseCode == pos.Instrument.BaseContract && k.Account == pos.AccountName))
                 {
                     Portfolios.First(k => k.BaseCode == pos.Instrument.BaseContract && k.Account == pos.AccountName).Positions.Add(pos);
                     log.Info("Option Position added to existing portfolio.");
                 }
                 else
                 {   // create new portfolio
                     Entities.Portfolio port = new Entities.Portfolio(pos.Instrument.BaseContract, pos.AccountName);
                     port.Positions.Add(pos);
                     Portfolios.Add(port);
                     log.Info("New portfolio created. Name={0} Base={1} Account={2}", port.Name, port.BaseCode, port.Account);
                 }
             }
         }
         catch (SystemException exep)
         {
             log.Error("Try to add position for unknown instrument {0} {1} {2}", obj.SecurityCode, obj.AccountName, obj.TotalNet);
             log.Error(exep.Message);
         }
     }
     else
     {
         log.Warn("Try to add existing position. {0} {1}", obj.AccountName, obj.SecurityCode);
     }
 }
示例#2
0
 public static void UpdateInstrument(QuikConnectionManager.DynamicInstrument obj)
 {
     try
     {
         var i = Instruments.First(k => k.Id == obj.Id);
         i.Update(obj.LastPrice, obj.Volatility, obj.TheorPrice, 0, obj.Ask, obj.AskVol, obj.Bid, obj.BidVol);
         if (i.Type == Entities.InstrumentType.Futures)
         {
             foreach (Entities.Instrument ins in Instruments)
             {
                 if (ins.BaseContract == i.Code)
                 {
                     ins.SettlePrice = i.LastPrice;
                 }
             }
         }
         if (Portfolios.Any(k => k.BaseCode == i.Code))
         {
             foreach (Entities.Portfolio p in Portfolios.Where(k => k.BaseCode == i.Code))
             {
                 p.Refresh();
             }
         }
         //i.LastPrice = obj.LastPrice;
         //i.Volatility = obj.Volatility;
         //i.TheorPrice = obj.TheorPrice;
         //i.BestAsk = obj.Ask;
         //i.BestAskVolume = obj.AskVol;
         //i.BestBid = obj.Bid;
         //i.BestBidVolume = obj.BidVol;
     }
     catch (SystemException e)
     {
         log.Error("Update for unknown instrument Id={0}", obj.Id);
     }
 }
示例#3
0
 // Do this check on CRUD operations. Do not allow portfolioId modification if the current user does not have it.
 public bool HasPortfolio(int portfolioId)
 {
     return(Portfolios.Any(x => x.PortfolioId == portfolioId));
 }