コード例 #1
0
ファイル: KrakenClient.cs プロジェクト: mvi1972/OsEngine
        public void UpdatePositionOnBoard()
        {
            var balances = _kraken.GetBalance();

            // var ret2 = JsonConvert.DeserializeObject<GetTradeBalanceResponse>(tradeBalance.ToString());

            var jProperties = JToken.Parse(balances.ToString()).SelectToken("result");//.Children<JProperty>();
            var children    = jProperties.Children();

            foreach (var portfolio in children)
            {
                string res = portfolio.ToString().Replace("{", "").Replace("}", "").Replace("\"", "").Replace(" ", "");

                string[] resArr = res.Split(':');

                PositionOnBoard position = new PositionOnBoard();

                position.PortfolioName    = "KrakenTradePortfolio";
                position.SecurityNameCode = resArr[0];
                position.ValueCurrent     = resArr[1].ToDecimal();
                position.ValueBegin       = resArr[1].ToDecimal();

                _myPortfolio.SetNewPosition(position);
            }

            if (NewPortfolioEvent != null)
            {
                NewPortfolioEvent(_myPortfolio);
            }
        }
コード例 #2
0
ファイル: Rook.cs プロジェクト: SukiTKChan/FYP
 internal Rook(Colour pieceColour, PositionOnBoard positionOnBoard, BoardAI boardAI)
 {
     color    = pieceColour;
     position = positionOnBoard;
     pieceID  = color == Colour.Black ? 9 : 10;
     LinktoBoard(boardAI);
 }
コード例 #3
0
 internal Cannon(Colour pieceColour, PositionOnBoard positionOnBoard, BoardAI boardAI)
 {
     color    = pieceColour;
     position = positionOnBoard;
     pieceID  = color == Colour.Black ? 11 : 12;
     LinktoBoard(boardAI);
 }
コード例 #4
0
 internal Knight(Colour pieceColour, PositionOnBoard positionOnBoard, BoardAI boardAI)
 {
     color    = pieceColour;
     position = positionOnBoard;
     pieceID  = color == Colour.Black ? 7 : 8;
     LinktoBoard(boardAI);
 }
コード例 #5
0
ファイル: King.cs プロジェクト: SukiTKChan/FYP
 public King(Colour pieceColour, PositionOnBoard positionOnBoard, BoardAI boardAI)
 {
     color    = pieceColour;
     position = positionOnBoard;
     pieceID  = color == Colour.Black ? 1 : 2;
     LinktoBoard(boardAI);
 }
コード例 #6
0
ファイル: SnakeBody.cs プロジェクト: BartJaskolski/Snake
        private PositionOnBoard GetLocationForNewPart(SnakeDirection snakeDirection)
        {
            var location    = Last.Location;
            var newLocation = new PositionOnBoard(location.PosLeftCanvas, location.PosTopCanvas);

            switch (snakeDirection)
            {
            case SnakeDirection.Up:
                newLocation.PosTopCanvas += 22;
                break;

            case SnakeDirection.Right:
                newLocation.PosLeftCanvas -= 22;
                break;

            case SnakeDirection.Down:
                newLocation.PosTopCanvas -= 22;
                break;

            case SnakeDirection.Left:
                newLocation.PosLeftCanvas += 22;
                break;
            }
            return(newLocation);
        }
コード例 #7
0
 private decimal GetBalance(BotTabSimple _tab)
 {
     //return 300;
     if (_tab.Connector.MyServer.ServerType == ServerType.Tester ||
         _tab.Connector.MyServer.ServerType == ServerType.Optimizer)
     {
         return(_tab.Portfolio.ValueCurrent);
     }
     if (_tab.Connector.MyServer.ServerType == ServerType.BinanceFutures)
     {
         List <PositionOnBoard> bal = _tab.Portfolio.GetPositionOnBoard();
         if (bal != null && bal.Count > 0)
         {
             PositionOnBoard b = bal.FindLast(x => x.SecurityNameCode == "USDT");
             if (b != null)
             {
                 return(b.ValueCurrent);
             }
         }
     }
     if (_tab.Connector.MyServer.ServerType == ServerType.BitMex)
     {
         return(_tab.Portfolio.ValueCurrent - _tab.Portfolio.ValueBlocked);
     }
     return(0);
 }
コード例 #8
0
        public static Portfolio Create(JToken data, string portfolioName)
        {
            var portfolio = Create(portfolioName);

            portfolio.ValueCurrent = 1;
            portfolio.ValueBlocked = 1;
            portfolio.ValueBegin   = 1;


            foreach (var jtPosition in data)
            {
                PositionOnBoard pos = new PositionOnBoard();

                pos.PortfolioName    = portfolio.Number;
                pos.SecurityNameCode = jtPosition.Path.Replace("result.", "");

                var wallet_balace = jtPosition.First.SelectToken("wallet_balance").Value <decimal>();
                var realizedPnl   = jtPosition.First.SelectToken("realised_pnl").Value <decimal>();
                pos.ValueBegin   = wallet_balace;
                pos.ValueCurrent = wallet_balace + realizedPnl;
                pos.ValueBlocked = jtPosition.First.SelectToken("used_margin").Value <decimal>();

                if (pos.ValueCurrent > 0 || pos.ValueBlocked > 0)
                {
                    portfolio.SetNewPosition(pos);
                }
            }

            return(portfolio);
        }
コード例 #9
0
ファイル: SnakeViewModel.cs プロジェクト: BartJaskolski/Snake
        private PositionOnBoard GetLocationForNewPart(SnakeDirectionType snakeDirection)
        {
            var lastLocation = SnakeObj.Last.Location;
            var newLocation  = new PositionOnBoard(lastLocation.PosLeftCanvas, lastLocation.PosTopCanvas);

            switch (snakeDirection)
            {
            case SnakeDirectionType.Up:
                newLocation.PosTopCanvas += 20;
                break;

            case SnakeDirectionType.Right:
                newLocation.PosLeftCanvas -= 20;
                break;

            case SnakeDirectionType.Down:
                newLocation.PosTopCanvas -= 20;
                break;

            case SnakeDirectionType.Left:
                newLocation.PosLeftCanvas += 20;
                break;
            }
            return(newLocation);
        }
コード例 #10
0
        public override void GetPortfolios()
        {
            string timeStamp = TimeManager.GetUnixTimeStampSeconds().ToString();
            var    headers   = new Dictionary <string, string>();

            headers.Add("Timestamp", timeStamp);
            headers.Add("KEY", _publicKey);
            headers.Add("SIGN", _signer.GetSignStringRest("GET", _path + _wallet + "/accounts", "", "", timeStamp));

            var result = _requestREST.SendGetQuery("GET", _host + _path + _wallet, "/accounts", headers);

            if (result.Contains("failed"))
            {
                SendLogMessage("GateIFutures: Cant get porfolios", LogMessageType.Error);
                return;
            }

            GfAccount accountInfo = JsonConvert.DeserializeObject <GfAccount>(result);

            Portfolio portfolio = Portfolios[0];

            portfolio.ClearPositionOnBoard();

            PositionOnBoard pos = new PositionOnBoard();

            pos.SecurityNameCode = accountInfo.Currency;
            pos.ValueBegin       = Converter.StringToDecimal(accountInfo.Total);
            pos.ValueCurrent     = Converter.StringToDecimal(accountInfo.Available);
            pos.ValueBlocked     = Converter.StringToDecimal(accountInfo.PositionMargin + accountInfo.OrderMargin);

            portfolio.SetNewPosition(pos);

            OnPortfolioEvent(Portfolios);
        }
コード例 #11
0
ファイル: Pawn.cs プロジェクト: SukiTKChan/FYP
 internal Pawn(Colour pieceColour, PositionOnBoard positionOnBoard, BoardAI boardAI)
 {
     color    = pieceColour;
     position = positionOnBoard;
     pieceID  = color == Colour.Black ? 13 : 14;
     LinktoBoard(boardAI);
 }
コード例 #12
0
        private void EventsOnOnFuturesClientHolding(FuturesClientHolding futPos)
        {
            lock (changeFutPosLocker)
            {
                if (_portfolios != null && _portfolios.Count != 0)
                {
                    Portfolio needPortfolio = _portfolios.Find(p => p.Number == futPos.trdAccId);

                    if (needPortfolio == null)
                    {
                        return;
                    }

                    PositionOnBoard newPos = new PositionOnBoard();

                    newPos.PortfolioName    = futPos.trdAccId;
                    newPos.SecurityNameCode = futPos.secCode;
                    newPos.ValueBegin       = Convert.ToDecimal(futPos.startNet);
                    newPos.ValueCurrent     = Convert.ToDecimal(futPos.totalNet);
                    newPos.ValueBlocked     = 0;

                    needPortfolio.SetNewPosition(newPos);

                    if (PortfolioEvent != null)
                    {
                        PortfolioEvent(_portfolios);
                    }
                }
            }
        }
コード例 #13
0
        public Portfolio Create(JToken data, string portfolioName)
        {
            var portfolio = Create(portfolioName);

            var collateral     = data.SelectToken(CollateralPath).Value <decimal>();
            var freeCollateral = data.SelectToken(FreeCollateralPath).Value <decimal>();
            var positions      = data.SelectTokens(PositionsPath).Children();

            portfolio.ValueCurrent = data.SelectToken(TotalAccountValuePath).Value <decimal>();
            portfolio.ValueBlocked = collateral - freeCollateral;


            foreach (var jtPosition in positions)
            {
                PositionOnBoard pos = new PositionOnBoard();

                pos.PortfolioName    = portfolio.Number;
                pos.SecurityNameCode = jtPosition.SelectToken(NamePath).ToString();
                var cost        = jtPosition.SelectToken(CostPath).Value <decimal>();
                var realizedPnl = jtPosition.SelectToken(PnlPricePath).Value <decimal>();
                pos.ValueBegin   = cost;
                pos.ValueCurrent = cost + realizedPnl;
                pos.ValueBlocked = jtPosition.SelectToken(CollateralUsedPath).Value <decimal>();

                if (pos.ValueCurrent > 0 || pos.ValueBlocked > 0)
                {
                    portfolio.SetNewPosition(pos);
                }
            }

            return(portfolio);
        }
コード例 #14
0
        /// <summary>
        /// обновилась позиция на бирже
        /// </summary>
        /// <param name="position">позиция по инструменту на бирже</param>
        private void UpdatePosition(PositionOnBoard position)
        {
            lock (_lockerUpdatePosition)
            {
                try
                {
                    if (_portfolios == null ||
                        _portfolios.Count == 0)
                    {
                        return;
                    }

                    Portfolio myPortfolio = _portfolios.Find(portfolio1 => portfolio1.Number == position.PortfolioName);

                    if (myPortfolio == null)
                    {
                        return;
                    }

                    myPortfolio.SetNewPosition(position);

                    _portfolioToSend.Enqueue(_portfolios);
                }
                catch (Exception error)
                {
                    SendLogMessage(error.ToString(), LogMessageType.Error);
                }
            }
        }
コード例 #15
0
        private void UpDatePosition(PositionOnBoard position)
        {
            lock (_lockerUpDatePosition)
            {
                Portfolio myPortfolio = null;

                if (_portfolios != null)
                {
                    myPortfolio = _portfolios.Find(portfolio => portfolio.Number.Split('@')[0] == position.PortfolioName);
                }
                if (myPortfolio == null)
                {
                    PositionOnBoardSander sender = new PositionOnBoardSander();
                    sender.PositionOnBoard    = position;
                    sender.TimeSendPortfolio += UpDatePosition;

                    Thread worker = new Thread(sender.Go);
                    worker.IsBackground   = true;
                    worker.CurrentCulture = new CultureInfo("ru-RU");
                    worker.Start();
                    return;
                }

                myPortfolio.SetNewPosition(position);

                if (UpdatePortfolios != null)
                {
                    UpdatePortfolios(_portfolios);
                }
            }
        }
コード例 #16
0
        public static Vector FromEnum(PositionOnBoard value)
        {
            switch (value)
            {
            case PositionOnBoard.One:
                return(new Vector(0, 0));

            case PositionOnBoard.Two:
                return(new Vector(2, 0));

            case PositionOnBoard.Three:
                return(new Vector(4, 0));

            case PositionOnBoard.Four:
                return(new Vector(0, 2));

            case PositionOnBoard.Five:
                return(new Vector(2, 2));

            case PositionOnBoard.Six:
                return(new Vector(4, 2));

            case PositionOnBoard.Seven:
                return(new Vector(0, 4));

            case PositionOnBoard.Eight:
                return(new Vector(2, 4));

            case PositionOnBoard.Nine:
                return(new Vector(4, 4));

            default:
                return(new Vector(0, 0));
            }
        }
コード例 #17
0
 internal Bishop(Colour pieceColour, PositionOnBoard positionOnBoard, BoardAI boardAI)
 {
     color    = pieceColour;
     position = positionOnBoard;
     pieceID  = color == Colour.Black ? 5 : 6;
     LinktoBoard(boardAI);
 }
コード例 #18
0
        void Client_NewPortfolio(BalanceInfo balance)
        {
            lock (_locker)
            {
                if (_portfolios == null)
                {
                    _portfolios = new List <Portfolio>();
                }

                var cryptoPortfolio = new Portfolio();
                cryptoPortfolio.Number = balance.Name;

                var positionsOnBoard = new List <PositionOnBoard>();

                foreach (var portfolio in balance.Balances)
                {
                    var needPos = positionsOnBoard.Find(p => p.SecurityNameCode == portfolio.currency);

                    if (needPos == null)
                    {
                        needPos = new PositionOnBoard();
                        needPos.SecurityNameCode = portfolio.currency;
                        if (portfolio.type == "available")
                        {
                            needPos.ValueCurrent = ParseDecimal(portfolio.value);
                        }
                        else if (portfolio.type == "trade")
                        {
                            needPos.ValueBlocked = ParseDecimal(portfolio.value);
                        }
                        if (needPos.ValueCurrent != 0 || needPos.ValueBlocked != 0)
                        {
                            positionsOnBoard.Add(needPos);
                        }
                    }
                    else
                    {
                        if (portfolio.type == "available")
                        {
                            needPos.ValueCurrent = ParseDecimal(portfolio.value);
                        }
                        else if (portfolio.type == "trade")
                        {
                            needPos.ValueBlocked = ParseDecimal(portfolio.value);
                        }
                    }
                }

                foreach (var pos in positionsOnBoard)
                {
                    cryptoPortfolio.SetNewPosition(pos);
                }

                _portfolios.Add(cryptoPortfolio);

                PortfolioEvent?.Invoke(_portfolios);
            }
        }
コード例 #19
0
 // Start is called before the first frame update
 void Start()
 {
     gestureInteraction = GetComponent <PositionOnBoard>();
     camera             = Camera.main.transform;
     routeToGo          = 0;
     tParam             = 0f;
     coroutineAllowed   = true;
     nextR1             = new Vector3(0, 0, 0);
 }
コード例 #20
0
        private void PlazaControllerOnUpdatePosition(PositionOnBoard positionOnBoard)
        {
            lock (_lockerUpdatePosition)
            {
                // write in the security name right description, becaus before in this line some ID / забиваем в название инструмента правдивое описание, т.к. до этого в этой строке некий ID

                Security security = null;

                if (_securities != null)
                {
                    security = _securities.Find(security1 =>
                                                security1.NameId == positionOnBoard.SecurityNameCode ||
                                                security1.Name == positionOnBoard.SecurityNameCode);
                }

                if (security == null)
                {
                    PositionOnBoardSander sender = new PositionOnBoardSander();
                    sender.PositionOnBoard    = positionOnBoard;
                    sender.TimeSendPortfolio += PlazaControllerOnUpdatePosition;

                    Thread worker = new Thread(sender.Go);
                    worker.CurrentCulture = new CultureInfo("ru-RU");
                    worker.IsBackground   = true;
                    worker.Start();
                    return;
                }

                positionOnBoard.SecurityNameCode = security.Name;
                Portfolio myPortfolio = null;
                if (_portfolios != null)
                {
                    myPortfolio = _portfolios.Find(portfolio => portfolio.Number == positionOnBoard.PortfolioName);
                }

                if (myPortfolio == null)
                {
                    PositionOnBoardSander sender = new PositionOnBoardSander();
                    sender.PositionOnBoard    = positionOnBoard;
                    sender.TimeSendPortfolio += PlazaControllerOnUpdatePosition;

                    Thread worker = new Thread(sender.Go);
                    worker.CurrentCulture = new CultureInfo("ru-RU");
                    worker.IsBackground   = true;
                    worker.Start();
                    return;
                }

                myPortfolio.SetNewPosition(positionOnBoard);

                if (PortfolioEvent != null)
                {
                    PortfolioEvent(_portfolios);
                }
            }
        }
コード例 #21
0
        private void _client_NewPortfolioMargin(AccountResponseMargin portfs)
        {
            try
            {
                if (portfs == null)
                {
                    return;
                }

                if (portfs.userAssets == null)
                {
                    return;
                }

                Portfolio myPortfolio = _portfolios.Find(p => p.Number == "BinanceMargin");

                if (myPortfolio == null)
                {
                    Portfolio newPortf = new Portfolio();
                    newPortf.Number       = "BinanceMargin";
                    newPortf.ValueBegin   = 1;
                    newPortf.ValueCurrent = 1;

                    _portfolios.Add(newPortf);
                    myPortfolio = newPortf;
                }


                foreach (var onePortf in portfs.userAssets)
                {
                    PositionOnBoard newPortf = new PositionOnBoard();
                    newPortf.SecurityNameCode = onePortf.asset;
                    newPortf.ValueBegin       =
                        onePortf.free.ToDecimal();
                    newPortf.ValueCurrent =
                        onePortf.free.ToDecimal();
                    newPortf.ValueBlocked =
                        onePortf.locked.ToDecimal();

                    myPortfolio.SetNewPosition(newPortf);
                }

                if (PortfolioEvent != null)
                {
                    PortfolioEvent(_portfolios);
                }
            }
            catch (Exception error)
            {
                SendLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
コード例 #22
0
        private decimal GetBalance()
        {
            if (_tab.Connector.MyServer.ServerType == ServerType.Tester ||
                _tab.Connector.MyServer.ServerType == ServerType.Optimizer)
            {
                if (_tab.Portfolio.ValueBlocked != 0)
                {
                    Console.WriteLine("Заблокировано " + _tab.Portfolio.ValueBlocked);
                }
                return(_tab.Portfolio.ValueCurrent);
            }
            if (_tab.Connector.MyServer.ServerType == ServerType.BinanceFutures)
            {
                List <PositionOnBoard> bal = _tab.Portfolio.GetPositionOnBoard();
                if (bal != null && bal.Count > 0)
                {
                    PositionOnBoard b = bal.FindLast(x => x.SecurityNameCode == "USDT");
                    if (b != null)
                    {
                        return(b.ValueCurrent);
                    }
                }
            }
            if (_tab.Connector.MyServer.ServerType == ServerType.Binance)
            {
                List <PositionOnBoard> bal = _tab.Portfolio.GetPositionOnBoard();
                if (bal != null && bal.Count > 0)
                {
                    PositionOnBoard b = bal.FindLast(x => x.SecurityNameCode == _tab.Securiti.NameClass);
                    if (b != null)
                    {
                        if (_tab.Connector.PortfolioName == "BinanceMargin" && b.ValueCurrent == 0 && b.ValueBlocked != 0)
                        {
                            int _posCountNaw = GetOpenPositionsCount();
                            if (_posCountNaw > 3 || _posCountNaw == 0) //тк 3е плечо на маржиналке то ограничимся 3мя позициями, а если нет открытых то гдето ошибка
                            {
                                return(0);
                            }

                            return(b.ValueBlocked / _posCountNaw);
                        }
                        return(b.ValueCurrent);
                    }
                }
            }
            if (_tab.Connector.MyServer.ServerType == ServerType.BitMex)
            {
                return(_tab.Portfolio.ValueCurrent - _tab.Portfolio.ValueBlocked);
            }
            return(0);
        }
コード例 #23
0
        private void UpdateSpotPosition()
        {
            while (true)
            {
                Thread.Sleep(5000);

                if (QuikLua != null)
                {
                    bool quikStateIsActiv = QuikLua.Service.IsConnected().Result;
                }

                if (QuikLua == null)
                {
                    continue;
                }


                if (ServerStatus == ServerConnectStatus.Disconnect)
                {
                    continue;
                }

                List <DepoLimitEx> spotPos = QuikLua.Trading.GetDepoLimits().Result;
                Portfolio          needPortf;
                foreach (var pos in spotPos)
                {
                    if (pos.LimitKind == LimitKind.T0)
                    {
                        needPortf = _portfolios.Find(p => p.Number == pos.TrdAccId);

                        PositionOnBoard position = new PositionOnBoard();

                        if (needPortf != null)
                        {
                            position.PortfolioName    = pos.TrdAccId;
                            position.ValueBegin       = pos.OpenBalance;
                            position.ValueCurrent     = pos.CurrentBalance;
                            position.ValueBlocked     = pos.LockedSell;
                            position.SecurityNameCode = pos.SecCode;

                            needPortf.SetNewPosition(position);
                        }
                    }
                }

                if (PortfolioEvent != null)
                {
                    PortfolioEvent(_portfolios);
                }
            }
        }
コード例 #24
0
        /// <summary>
        /// got portfolio data
        /// пришли данные по портфелям
        /// </summary>
        /// <param name="unitedPortfolio">portfolio in Transaq format / портфель в формате Transaq</param>
        private void ClientOnUpdatePortfolio(UnitedPortfolio unitedPortfolio)
        {
            if (_portfolios == null)
            {
                _portfolios = new List <Portfolio>();
            }

            var needPortfolio = _portfolios.Find(p => p.Number == unitedPortfolio.Union);

            if (needPortfolio == null)
            {
                needPortfolio = new Portfolio()
                {
                    Number       = unitedPortfolio.Union,
                    ValueBegin   = Convert.ToDecimal(unitedPortfolio.Open_equity.Replace(".", ",")),
                    ValueCurrent = Convert.ToDecimal(unitedPortfolio.Equity.Replace(".", ",")),
                };
                _portfolios.Add(needPortfolio);
            }
            else
            {
                needPortfolio.ValueBegin   = Convert.ToDecimal(unitedPortfolio.Open_equity.Replace(".", ","));
                needPortfolio.ValueCurrent = Convert.ToDecimal(unitedPortfolio.Equity.Replace(".", ","));
            }

            needPortfolio.ClearPositionOnBoard();

            if (unitedPortfolio.Asset != null && unitedPortfolio.Asset.Count != 0)
            {
                foreach (var asset in unitedPortfolio.Asset)
                {
                    for (int i = 0; i < asset.Security.Count; i++)
                    {
                        PositionOnBoard pos = new PositionOnBoard()
                        {
                            SecurityNameCode = asset.Security[i].Seccode,
                            ValueBegin       = Convert.ToDecimal(asset.Security[i].Open_balance.Replace(".", ",")),
                            ValueCurrent     = Convert.ToDecimal(asset.Security[i].Balance.Replace(".", ",")),
                            ValueBlocked     = asset.Security[i].Buying == "0" ?
                                               Convert.ToDecimal(asset.Security[i].Selling.Replace(".", ",")) :
                                               Convert.ToDecimal(asset.Security[i].Buying.Replace(".", ",")),
                            PortfolioName = needPortfolio.Number,
                        };
                        needPortfolio.SetNewPosition(pos);
                    }
                }
            }

            PortfolioEvent?.Invoke(_portfolios);
        }
コード例 #25
0
        /// <summary>
        /// take balance
        /// взять баланс
        /// </summary>
        public void GetBalance()
        {
            _portfolio        = new Portfolio();
            _portfolio.Number = "ExmoPortfolio";

            List <string> currencies = GetCurrencies();

            for (int i = 0; i < currencies.Count; i++)
            {
                PositionOnBoard positionOnBoard = new PositionOnBoard();
                positionOnBoard.PortfolioName    = _portfolio.Number;
                positionOnBoard.SecurityNameCode = currencies[i];
                _portfolio.SetNewPosition(positionOnBoard);
            }
        }
コード例 #26
0
ファイル: TinkoffClient.cs プロジェクト: zilveer/OsEngine
        public void UpdPositions()
        {
            string url = _url + "portfolio";

            var jsonCurrency = ApiQuery(url, "GET", new Dictionary <string, string>());

            if (jsonCurrency == null)
            {
                return;
            }
            var jProperties = JToken.Parse(jsonCurrency).SelectToken("payload");//.Children<JProperty>();
            var children    = jProperties.Children().Children().Children();

            string res = children.ToString();

            if (res == "")
            {
                return;
            }

            foreach (var position in children)
            {
                PositionOnBoard pos = new PositionOnBoard();

                pos.SecurityNameCode = position.SelectToken("ticker").ToString();
                pos.ValueCurrent     = position.SelectToken("balance").ToString().ToDecimal();
                pos.PortfolioName    = position.SelectToken("expectedYield").SelectToken("currency").ToString();

                Portfolio myPortfolio =
                    _portfolios.Find(p => p.Number == pos.PortfolioName);

                if (myPortfolio == null)
                {
                    continue;
                }

                myPortfolio.SetNewPosition(pos);
            }


            if (UpdatePortfolio != null)
            {
                for (int i = 0; i < _portfolios.Count; i++)
                {
                    UpdatePortfolio(_portfolios[i]);
                }
            }
        }
コード例 #27
0
        void _ibClient_NewPortfolioPosition(SecurityIb contract, string accountName, int value)
        {
            try
            {
                if (_portfolios == null ||
                    _portfolios.Count == 0)
                {
                    return;
                }
                // see if you already have the right portfolio / смотрим, есть ли уже нужный портфель
                Portfolio portfolio = _portfolios.Find(portfolio1 => portfolio1.Number == accountName);

                if (portfolio == null)
                {
                    //SendLogMessage("обновляли позицию. Не можем найти портфель");
                    return;
                }

                // see if you already have the right Os.Engine security / смотрим, есть ли нужная бумага в формате Os.Engine
                string name = contract.Symbol + "_" + contract.SecType + "_" + contract.Exchange;

                if (_securities == null ||
                    _securities.Find(security => security.Name == name) == null)
                {
                    //SendLogMessage("обновляли позицию. Не можем найти бумагу. " + contract.Symbol);
                    return;
                }

                // update the contract position / обновляем позицию по контракту

                PositionOnBoard positionOnBoard = new PositionOnBoard();

                positionOnBoard.SecurityNameCode = name;
                positionOnBoard.PortfolioName    = accountName;
                positionOnBoard.ValueCurrent     = value;

                portfolio.SetNewPosition(positionOnBoard);

                if (PortfolioEvent != null)
                {
                    PortfolioEvent(_portfolios);
                }
            }
            catch (Exception error)
            {
                SendLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
コード例 #28
0
ファイル: HuobiSpotServer.cs プロジェクト: vftens/OsEngine
        public override void GetPortfolios()
        {
            if (Portfolios == null)
            {
                return;
            }
            foreach (var portfolio in Portfolios)
            {
                string url = _privateUriBuilder.Build("GET",
                                                      $"/v1/account/accounts/{portfolio.Number.Split('_')[1]}/balance");

                var httpClient = new HttpClient();

                string response = httpClient.GetStringAsync(url).Result;

                if (response.Contains("Incorrect Access key"))
                {
                    SendLogMessage("Huobi: Incorrect Access API key", LogMessageType.Error);
                    return;
                }

                GetAccountBalanceResponse accountBalance = JsonConvert.DeserializeObject <GetAccountBalanceResponse>(response);

                //portfolio.ClearPositionOnBoard();

                for (int i = 0; accountBalance.data != null && i < accountBalance.data.list.Length; i++)
                {
                    var currentData = accountBalance.data.list[i];

                    if (currentData.balance == 0)
                    {
                        continue;
                    }

                    PositionOnBoard pos = new PositionOnBoard();
                    pos.SecurityNameCode = currentData.currency;
                    pos.PortfolioName    = portfolio.Number;
                    pos.ValueCurrent     = currentData.balance;
                    pos.ValueBegin       = currentData.balance;

                    portfolio.SetNewPosition(pos);
                }
            }

            OnPortfolioEvent(Portfolios);
        }
コード例 #29
0
        ///<summary>
        /// Метод, который содержит логику реализующую ход игрока
        ///</summary>
        ///<param name="actor">Игрок</param>
        internal bool PlayersTurn(Actor actor)
        {
            Int32 left = Console.CursorLeft;
            Int32 top  = Console.CursorTop;

            Console.SetCursorPosition(0, mapHeight);
            bool isCanBePlaced = true;

            while (isCanBePlaced)
            {
                Console.WriteLine($"Hey, {actor.Name} enter position(example: 1): ");
                PositionOnBoard position
                              = (PositionOnBoard)Int32.Parse(Console.ReadLine());
                isCanBePlaced = !map.SetActorSymbolToBoard(actor, position);
            }
            Console.SetCursorPosition(left, top);
            return(CheckPlayersWin(actor));
        }
コード例 #30
0
        public override void GetPortfolios()
        {
            if (Portfolios == null)
            {
                return;
            }
            foreach (var portfolio in Portfolios)
            {
                string url = _privateUriBuilder.Build("POST", "/swap-api/v1/swap_account_info");

                StringContent httpContent = new StringContent(new JsonObject().ToString(), Encoding.UTF8, "application/json");

                var httpClient = new HttpClient();

                var response = httpClient.PostAsync(url, httpContent).Result;

                string result = response.Content.ReadAsStringAsync().Result;

                if (result.Contains("Incorrect Access key"))
                {
                    SendLogMessage("Huobi: Incorrect Access API key", LogMessageType.Error);
                    return;
                }

                FuturesAccountInfo accountInfo = JsonConvert.DeserializeObject <FuturesAccountInfo>(result);

                portfolio.ClearPositionOnBoard();

                for (int i = 0; accountInfo.data != null && i < accountInfo.data.Count; i++)
                {
                    var currentData = accountInfo.data[i];

                    PositionOnBoard pos = new PositionOnBoard();
                    pos.SecurityNameCode = currentData.symbol;
                    pos.ValueBegin       = currentData.margin_available;
                    pos.ValueCurrent     = currentData.margin_available;
                    pos.ValueBlocked     = currentData.margin_frozen;

                    portfolio.SetNewPosition(pos);
                }
            }

            OnPortfolioEvent(Portfolios);
        }