Esempio n. 1
0
        public IActionResult RefreshPos()
        {
            var acc = _accountBL.GetRealAccount();

            if (acc == null)
            {
                return(BadRequest());
            }

            _positionBL.RefreshPositions(acc.AccountID);
            return(Ok());
        }
Esempio n. 2
0
        private void Complete()
        {
            // закрытие открытых позиций
            var instrums = _tickSource.GetInstrums();

            foreach (var instrum in instrums)
            {
                var tick = _tickSource.GetLastTick(instrum.InsID);
                if (tick == null)
                {
                    continue;
                }

                _engine.ClosePosition(tick.Value);
            }

            // сохранение данных
            _data.SaveData();
            var account = _data.GetAccount();

            _posBL.RefreshPositions(account.AccountID);
            _seriesData.SetAccount(account.AccountID);
            _seriesData.SaveData();

            // сохранить метаданные
            if (_tickSource != null && account != null)
            {
                AccountMeta meta = new AccountMeta();
                meta.TickSource_StartDate = _tickSource.StartDate;
                meta.TickSource_EndDate   = _tickSource.EndDate;
                meta.TickSource_Tickers   = string.Join(',', _tickSource.GetInstrums().Select(r => r.Ticker).ToArray());
                meta.TestRun_CompleteTime = DateTime.Now;
                var json = JsonConvert.SerializeObject(meta);
                _reposBL.SetStringParam(ACCOUNT_META + account.AccountID.ToString(), json);
            }
        }