/// <inheritdoc/> public void updatePortfolio(Contract contract, double position, double marketPrice, double marketValue, double averageCost, double unrealisedPNL, double realisedPNL, string accountName) { var eventArgs = new UpdatePortfolioEventArgs( contract, position, marketPrice, marketValue, averageCost, unrealisedPNL, realisedPNL, accountName); this.UpdatePortfolioEvent?.Invoke(this, eventArgs); }
private void client_UpdatePortfolio(object sender, UpdatePortfolioEventArgs e) { try { SymbolInfo symbol = Factory.Symbol.LookupSymbol(e.Contract.Symbol); SymbolHandler handler = GetSymbolHandler(symbol, receiver); handler.SetPosition(e.Position); if (debug) { log.Debug("UpdatePortfolio: " + e.Contract.Symbol + " is " + e.Position); } } catch (ApplicationException ex) { log.Warn("UpdatePortfolio: " + ex.Message); } }
private void eh_UpdatePortfolio(object sender, UpdatePortfolioEventArgs e) { bool isInPortfolio = true; string symbol_name = e.Contract.Symbol; SymbolInMkt symbol = mainWin.Portfolio.FirstOrDefault <SymbolInMkt>(x => x.Symbol == symbol_name); if (symbol == null) { symbol = new SymbolInMkt(); isInPortfolio = false; } System.Windows.Threading.Dispatcher.FromThread(OrderManager.UIThread).Invoke(() => { if (isInPortfolio) { symbol.AvgCost = e.AverageCost; symbol.MktPrice = e.MarketPrice; symbol.Position = e.Position; symbol.RealizedPNL = e.RealizedPNL; symbol.UnrealizedPNL = e.UnrealizedPNL; } else { symbol.Symbol = e.Contract.Symbol; symbol.Currency = e.Contract.Currency; symbol.Account = e.AccountName; symbol.AvgCost = e.AverageCost; symbol.MktPrice = e.MarketPrice; symbol.Position = e.Position; symbol.RealizedPNL = e.RealizedPNL; symbol.UnrealizedPNL = e.UnrealizedPNL; symbol.Source = DisplayName; mainWin.Portfolio.Insert(0, symbol); } }); }
void ibclient_UpdatePortfolio2(object sender, UpdatePortfolioEventArgs e) { tStart("ibclient_UpdatePortfolio()"); string ts; lock (private_lock) { lastPortfolioUpdate = DateTime.Now; ts = lastPortfolioUpdate.ToString("T"); } // positions: number shares, prices, PnL logger.AddLog(LoggerLevel.Information, "UpdatePortfolio (timestamp=" + ts + "): " + e.Contract.Symbol + "/" + e.Contract.Currency + ": " + " Pos: " + e.Position.ToString() + "@" + e.MarketPrice.ToString("N4") + ", PnL: " + e.UnrealizedPnl.ToString()); string symbol = e.Contract.Symbol; if (symbol == null) return; SrBrokerPosition brokerPos = new SrBrokerPosition(); brokerPos.Symbol = symbol; brokerPos.Currency = e.Contract.Currency; brokerPos.Exchange = e.Contract.PrimaryExchange; if (!Helpers.SecurityTypeToInstrumentType(e.Contract.SecurityType, out brokerPos.InstrumentType)) { error("bad security type in position " + symbol); return; } if (e.Position >= 0) { brokerPos.LongQty = e.Position; } else { brokerPos.ShortQty = -e.Position; } brokerPos.Qty = e.Position; // brokerPos.Maturity; // brokerPos.PutCall; brokerPos.Strike = e.Contract.Strike; // alles andere in Feldern brokerPos.AddCustomField("Account", e.AccountName); brokerPos.AddCustomField("AverageCost", e.AverageCost.ToString("N4")); brokerPos.AddCustomField("MarketPrice", e.MarketPrice.ToString("N4")); brokerPos.AddCustomField("MarketValue", e.MarketValue.ToString()); brokerPos.AddCustomField("RealizedPnl", e.RealizedPnl.ToString("N2")); brokerPos.AddCustomField("UnrealizedPnl", e.UnrealizedPnl.ToString("N2")); brokerPos.AddCustomField("ContractId", e.Contract.ContractId.ToString()); brokerPos.AddCustomField("LocalSymbol", e.Contract.LocalSymbol); brokerPos.AddCustomField("Expiry", e.Contract.Expiry); brokerPos.AddCustomField("Multiplier", e.Contract.Multiplier); // brokerPos.AddCustomField("Exchange", e.Contract.Exchange); // brokerPos.AddCustomField("Right", e.Contract.Right.ToString()); // brokerPos.AddCustomField("SecId", e.Contract.SecId); lock (openPositions) { string key = e.AccountName + "|" + symbol; if (openPositions.ContainsKey(key)) { logger.AddLog(LoggerLevel.Detail, "known position"); openPositions[key] = brokerPos; } else { logger.AddLog(LoggerLevel.Detail, "unknown position (added)"); openPositions.Add(key, brokerPos); } } tEnd("ibclient_UpdatePortfolio()"); }
void ibclient_UpdatePortfolio(object sender, UpdatePortfolioEventArgs e) { try { ibclient_UpdatePortfolio2(sender, e); } catch (Exception ex) { error("ibclient_UpdatePortfolio2: " + ex.Message); } }