예제 #1
0
        public OpenPosition GetOpenPositionForSymbol(string symbol)
        {
            log.Updatelog(string.Format("Execute get open position for {0}", symbol));
            var xdoc       = feed.GetOpenPositionForSymbol(symbol);
            var oPositions = xdoc.Descendants("Position")
                             .Select(x => new OpenPosition
            {
                Symbol = x.Attribute("Symbol").Value,
                Market = "Others",                         //x.Attribute("Market").Value,
                Volume = Int32.Parse(x.Attribute("Volume").Value),
                Side   = x.Attribute("Side").Value,
            })
                             .ToList();

            var o = oPositions.FirstOrDefault(x => x.Symbol == symbol);

            if (o == null)
            {
                var emptyPostion =
                    new OpenPosition
                {
                    Symbol = symbol, Volume = 0, Side = "None", Market = "None"
                };
                return(emptyPostion);
            }

            return(o);
        }
예제 #2
0
        public List <OpenPosition> GetAllOpenPosition()
        {
            //log.Updatelog("Execute get all position");
            var xdoc       = feed.GetAllOpenPosition();
            var oPositions = new List <OpenPosition>();

            foreach (var item in xdoc.Descendants("Position"))
            {
                if (item != null)
                {
                    var newop = new OpenPosition
                    {
                        Symbol = item.Attribute("Symbol").Value,
                        Market = "Others",                    //item.Attribute("Market").Value,
                        Volume = Int32.Parse(item.Attribute("Volume").Value),
                        Side   = item.Attribute("Side").Value,
                    };
                    oPositions.Add(newop);
                }
            }
            //.Select(x => new OpenPosition
            //{
            //    Symbol = x.Attribute("Symbol")==null? .Value,
            //    Market = x.Attribute("Market").Value,
            //    Volume = Int32.Parse(x.Attribute("Volume").Value),
            //    Side = x.Attribute("Side").Value,

            //})
            //.ToList();
            return(oPositions);
        }
예제 #3
0
        private int GetRemainingShareForExit(OpenPosition openPos, int shareSize, int initial)
        {
            var partialOut = (initial - Math.Abs(openPos.Volume));

            var result = shareSize - partialOut;

            return(result);
        }
예제 #4
0
        // Basic: Set Action (Entry or Exit)
        public IFSymbol SetFActionType(FActionType t)
        {
            FActionType = t;
            if (t == FActionType.Exit)
            {
                initopenPos = api.GetOpenPositionForSymbol(Symbol);
            }

            return(this);
        }
예제 #5
0
        public int GetRemainingShareFromOpenPos(OpenPosition openPos, int shareSize)
        {
            var inPositionShare = openPos == null ? 0 : Math.Abs(openPos.Volume);

            return(RemainingShare(inPositionShare, shareSize));
        }
예제 #6
0
        private int GetRemainingShareFromOpenPos(OpenPosition curOpenPos)
        {
            var inPositionShare = curOpenPos == null ? 0 : Math.Abs(curOpenPos.Volume);

            return(RemainingShare(inPositionShare, ShareSize));
        }
예제 #7
0
 private int GetRemainingShareForExit(OpenPosition curOpenPos)
 {
     return(ShareSize - (InitialCurrentPostionShare - Math.Abs(curOpenPos.Volume)));
 }