public void OnPortfolioUpdate(PTEntity.PortfolioUpdateItem portfolioUpdateItem) { if (OnPortfolioUpdated != null) { OnPortfolioUpdated(portfolioUpdateItem); } }
void _clientHandler_OnPortfolioUpdated(PTEntity.PortfolioUpdateItem obj) { string info = string.Format("Portfolio Updated: {0}\t{1}", obj.Id, obj.Kind); Debug.WriteLine(info); var portf = Get(obj.Id); if (portf != null) { DispatcherHelper.Current.BeginInvoke(new Action(() => portf.Update(obj))); } }
public void Update(PTEntity.PortfolioUpdateItem item) { if (item.StrategyUpdate.Kind == PTEntity.StrategyType.SCALPER) { PTEntity.ScalperStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.ScalperStrategyUpdateItem; if (strategyUpdate != null) { Diff = ToDecimal(strategyUpdate.Diff); } } else if (item.StrategyUpdate.Kind == PTEntity.StrategyType.ARBITRAGE || item.StrategyUpdate.Kind == PTEntity.StrategyType.CHANGE_POSITION) { PTEntity.ArbitrageStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.ArbitrageStrategyUpdateItem; Diff = ToDecimal(strategyUpdate.Diff); LongDiff = ToDecimal(strategyUpdate.LongDiff); ShortDiff = ToDecimal(strategyUpdate.ShortDiff); LongSize = strategyUpdate.LongSize; ShortSize = strategyUpdate.ShortSize; AR_BollTop = ToDecimal(strategyUpdate.BollTop); AR_BollBottom = ToDecimal(strategyUpdate.BollBottom); } else if (item.StrategyUpdate.Kind == PTEntity.StrategyType.HIST_SLOPE) { PTEntity.HistSlopeStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.HistSlopeStrategyUpdateItem; FastAngle = ToDecimal(strategyUpdate.FastAngle); SlowAngle = ToDecimal(strategyUpdate.SlowAngle); FastMacdHist = ToDecimal(strategyUpdate.FastMacdHist); SlowMacdHist = ToDecimal(strategyUpdate.SlowMacdHist); FastMacdHistDiff = ToDecimal(strategyUpdate.FastMacdHistDiff); SlowMacdHistDiff = ToDecimal(strategyUpdate.SlowMacdHistDiff); FastSlopeDirection = strategyUpdate.FastMacdSlopeDirection; SlowSlopeDirection = strategyUpdate.SlowMacdSlopeDirection; } else if (item.StrategyUpdate.Kind == PTEntity.StrategyType.WMA_TREND) { PTEntity.WMATrendStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.WMATrendStrategyUpdateItem; FastLine = ToDecimal(strategyUpdate.FastLine); SlowLine = ToDecimal(strategyUpdate.SlowLine); } else if (item.StrategyUpdate.Kind == PTEntity.StrategyType.LINER_REGRESSION) { PTEntity.LinerRegStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.LinerRegStrategyUpdateItem; WeightMidPoint = ToDecimal(strategyUpdate.WeightMidPoint); LinerRegressionAngle = ToDecimal(strategyUpdate.LinerRegAngle); } else if (item.StrategyUpdate.Kind == PTEntity.StrategyType.ASC_TREND) { PTEntity.ASCTrendStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.ASCTrendStrategyUpdateItem; AS_WilliamsR = ToDecimal(strategyUpdate.WilliamsR); AS_StopPx = ToDecimal(strategyUpdate.StopPx); AS_DonchianHi = ToDecimal(strategyUpdate.DonchianHi); AS_DonchianLo = ToDecimal(strategyUpdate.DonchianLo); } else if (item.StrategyUpdate.Kind == PTEntity.StrategyType.RANGE_TREND) { PTEntity.RangeTrendStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.RangeTrendStrategyUpdateItem; RT_UpperBoundOpen = ToDecimal(strategyUpdate.UpperBoundOpen); RT_LowerBoundOpen = ToDecimal(strategyUpdate.LowerBoundOpen); RT_UpperBoundClose = ToDecimal(strategyUpdate.UpperBoundClose); RT_LowerBoundClose = ToDecimal(strategyUpdate.LowerBoundClose); RT_LastCostPx = ToDecimal(strategyUpdate.LastCostPx); RT_RecentStopLossPx = ToDecimal(strategyUpdate.RecentStopLossPx); } else if (item.StrategyUpdate.Kind == PTEntity.StrategyType.MANUAL) { PTEntity.ManualStrategyUpdateItem strategyUpdate = item.StrategyUpdate as PTEntity.ManualStrategyUpdateItem; MU_Profit = ToDecimal(strategyUpdate.Profit); MU_NearHigh = ToDecimal(strategyUpdate.NearHigh); MU_NearLow = ToDecimal(strategyUpdate.NearLow); MU_Fallback = ToDecimal(strategyUpdate.Fallback); MU_Bounce = ToDecimal(strategyUpdate.Bounce); } OpenTimes = item.TotalOpenTimes; DoneTimes = item.TotalCloseTimes; CancelVolume = item.CancelTimes; //Position = item.CurrentPosition; Gain = item.Profit; //Quantity = item.Quantity; //MaxPosition = item.MaxPosition; //AvgCost = item.AvgCost; IsRunning = item.StrategyUpdate.Running; for (int i = 0; i < item.Legs.Count; ++i) { _legs[i].Update(item.Legs[i]); } if (item.HasMsg) { EventLogger.Write(item.Message); } }