Exemplo n.º 1
0
        public static List <PositionElement> Positions()
        {
            IgPositions igPositions = new IgPositions();
            string      positions   = igPositions.Get(session);

            PositionsList          positionsList     = JsonConvert.DeserializeObject <PositionsList>(positions);
            List <PositionElement> positionsToReturn = new List <PositionElement>();

            double total  = 0.0;
            double profit = 0.0;

            Console.WriteLine($"{"Name".PadRight(40)}{"Epic".PadRight(22)}{"Size".PadLeft(6)} { "Bid".PadLeft(8) }   Stop \t    Value \tOpen \t   Profit \tReturn\t  Deal Id ");
            foreach (PositionElement position in positionsList.Positions.OrderBy(p => p.Market.InstrumentName))
            {
                double value            = position.Position.DealSize * position.Market.Bid;
                double open             = position.Position.OpenLevel * position.Position.DealSize;
                double returnPercentage = (value - open) / open;
                double stopPercentage   = (position.Market.Bid - position.Position.StopLevel) / position.Market.Bid;
                total  += value;
                profit += value - open;
                Console.WriteLine($"{position.Market.InstrumentName.Truncate(38).PadRight(40)}{position.Market.Epic.PadRight(22)}{position.Position.DealSize.ToString().PadLeft(6)}  {position.Market.Bid.ToString("N2").PadLeft(8)}  {stopPercentage.ToString("P1")} \t {Math.Round(value, 2).ToString("N0").PadLeft(8)}\t {Math.Round(open)}\t {Math.Round(value - open, 2).ToString("N2").PadLeft(8)}\t { returnPercentage.ToString("P1")}\t  {position.Position.DealId}");
                positionsToReturn.Add(position);
            }


            Console.WriteLine($"Total {total.ToString("N0")} Profit {profit.ToString("N2")}");
            Console.WriteLine($"Positions {positionsList.Positions.Count()}");

            return(positionsToReturn);
        }
Exemplo n.º 2
0
        // TODO Needs testing in open market
        public static void Buy(IgBuyModel igBuy)
        {
            IgPositions igPosition = new IgPositions();
            string      response   = igPosition.Post(session, igBuy);

            Console.WriteLine(response);
            response = new IgConfirms().GetConfirms(session, igBuy.dealReference);
            Console.WriteLine(response);
        }
Exemplo n.º 3
0
        private static int Update(UpdateOptions options)
        {
            SwitchAccount(options.Account);

            List <PositionElement> positionsToReturn = Positions();
            double stopPercentage = Convert.ToDouble(options.Value) / 100;

            foreach (PositionElement positionToAlter in positionsToReturn)
            {
                IgPositions igPositions = new IgPositions();

                double percentageIncrease = (positionToAlter.Market.Bid - positionToAlter.Position.OpenLevel) / positionToAlter.Position.OpenLevel;
                if (percentageIncrease > stopPercentage)
                {
                    double plannedStop = positionToAlter.Market.Bid - (positionToAlter.Market.Bid * stopPercentage);
                    Console.WriteLine($"Postion to alter {positionToAlter.Market.InstrumentName} Current Stop {positionToAlter.Position.StopLevel} Planned new stop {plannedStop} ");
                    positionToAlter.Position.StopLevel = plannedStop;
                    igPositions.Put(session, positionToAlter.Position);
                }
            }
            return(0);
        }