public void OnPortfolioUpdate(PTEntity.PortfolioUpdateItem portfolioUpdateItem)
 {
     if (OnPortfolioUpdated != null)
     {
         OnPortfolioUpdated(portfolioUpdateItem);
     }
 }
Example #2
0
        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)));
            }
        }
Example #3
0
        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);
            }
        }