示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Connector"/>.
        /// </summary>
        /// <param name="initAdapter">Initialize basket adapter.</param>
        /// <param name="initChannels">Initialize channels.</param>
        /// <param name="storageRegistry">The storage of market data.</param>
        /// <param name="snapshotRegistry">Snapshot storage registry.</param>
        /// <param name="initManagers">Initialize managers.</param>
        protected Connector(bool initAdapter, bool initChannels = true,
                            IStorageRegistry storageRegistry    = null, SnapshotRegistry snapshotRegistry = null,
                            bool initManagers = true)
        {
            _entityCache = new EntityCache(this)
            {
                ExchangeInfoProvider = new InMemoryExchangeInfoProvider()
            };

            _subscriptionManager = new SubscriptionManager(this);

            UpdateSecurityLastQuotes = UpdateSecurityByLevel1 = UpdateSecurityByDefinition = true;

            SupportLevel1DepthBuilder  = true;
            SupportFilteredMarketDepth = true;

            if (initManagers)
            {
                //PnLManager = new PnLManager();
                RiskManager = new RiskManager();
            }

            _connectorStat.Add(this);

            if (initChannels)
            {
                InMessageChannel  = new InMemoryMessageChannel($"Connector In ({Name})", RaiseError);
                OutMessageChannel = new InMemoryMessageChannel($"Connector Out ({Name})", RaiseError);
            }

            if (initAdapter)
            {
                InitAdapter(storageRegistry, snapshotRegistry);
            }
        }
示例#2
0
        private void ProcessRisk(Message message)
        {
            foreach (var rule in RiskManager.ProcessRules(message))
            {
                _innerAdapter.AddWarningLog(LocalizedStrings.Str855Params,
                                            rule.GetType().GetDisplayName(), rule.Title, rule.Action);

                switch (rule.Action)
                {
                case RiskActions.ClosePositions:
                {
                    break;
                }

                case RiskActions.StopTrading:
                    _innerAdapter.SendInMessage(new DisconnectMessage());
                    break;

                case RiskActions.CancelOrders:
                    _innerAdapter.SendInMessage(new OrderGroupCancelMessage {
                        TransactionId = _innerAdapter.TransactionIdGenerator.GetNextId()
                    });
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
        private void CalculateRisk_Click(object sender, EventArgs e)
        {
            try
            {
                if (listView.CheckedItems.Count > 0)
                {
                    SetTradeVolumeToDefault();

                    var checkedSynths = new List <FinancialPair>();

                    foreach (var code in listView.CheckedItems.OfType <ListViewItem>().Select(i => i.Name).ToArray())
                    {
                        checkedSynths.Add(pairs.First(i => i.Name.ToString() == code));
                    }

                    var rc = new RiskManager(checkedSynths.ToArray(), balance.Value.ToDouble());
                    rc.Calculate();

                    listView_Click(this, null);
                }
                else
                {
                    MessageBox.Show("Pairs are not selected.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("CalculateRisk => " + ex.Message);
            }
        }
示例#4
0
    private void Start()
    {
        turnText            = GameObject.Find("Turn").GetComponent <Text>();
        score               = GameObject.Find("Score").GetComponent <ScoreMain>();
        manager             = GameObject.FindGameObjectsWithTag("RiskManager")[0].GetComponent <RiskManager>();
        deliverys           = GameObject.Find("Deliverys").GetComponent <Deliverys>();
        storeController     = GameObject.Find("StoreController").GetComponent <StoreController>();
        teamController      = GameObject.Find("TeamController").GetComponent <TeamController>();
        teamControllerStore = GameObject.Find("TeamControllerStore").GetComponent <TeamControllerStore>();
        buildController     = GameObject.Find("BuildController").GetComponent <BuildController>();

        wether = GameObject.Find("Wether").GetComponent <Image>();

        score.ChangeScore(-10000000);

        mounths     = new string[12];
        mounths[0]  = "Июнь";
        mounths[1]  = "Июль";
        mounths[2]  = "Август";
        mounths[3]  = "Сентябрь";
        mounths[4]  = "Октябрь";
        mounths[5]  = "Ноябрь";
        mounths[6]  = "Декабрь";
        mounths[7]  = "Янаврь";
        mounths[8]  = "Февраль";
        mounths[9]  = "Март";
        mounths[10] = "Апрель";
        mounths[11] = "Май";
    }
示例#5
0
    public void CloseMesseageAndEventRisk()
    {
        GameObject panelMesseage = GameObject.FindWithTag("Window");

        Destroy(panelMesseage);
        RiskManager riskManager = GameObject.Find("RiskManager").GetComponent <RiskManager>();

        riskManager.RiskCheckEvent();
        SetIsAllopenWindow();
    }
示例#6
0
        public void TestRiskManager()
        {
            var riskManager = new RiskManager();

            //test bad phones
            Assert.IsTrue(riskManager.CheckForBadPhones("+380111111111"));

            //test good phones
            Assert.IsFalse(riskManager.CheckForBadPhones("+380111111005"));
        }
示例#7
0
    void Update()
    {
        time -= Time.deltaTime;

        if (time <= 0)
        {
            RiskManager riskManager = GameObject.Find("RiskManager").GetComponent <RiskManager>();
            riskManager.ShowRisk();
            time = 1200f;
        }

        ShowTime();
    }
示例#8
0
    public void CloseMesseageAndDeleteResponse()
    {
        GameObject panelMesseage = GameObject.FindWithTag("Window");;

        Destroy(panelMesseage);
        RiskManager     riskManager     = GameObject.Find("RiskManager").GetComponent <RiskManager>();
        ResponseManager responseManager = GameObject.Find("InventoryData").GetComponent <ResponseManager>();

        if (responseManager.responses[riskManager.response] != null)
        {
            responseManager.DeleteResponse(riskManager.response);
        }
        SetIsAllopenWindow();
    }
示例#9
0
        /// <summary>
        /// Создать <see cref="ManagedMessageAdapter"/>.
        /// </summary>
        /// <param name="innerAdapter">Адаптер, в который будут перенаправляться сообщения.</param>
        public ManagedMessageAdapter(IMessageAdapter innerAdapter)
        {
            if (innerAdapter == null)
            {
                throw new ArgumentNullException("innerAdapter");
            }

            _innerAdapter = innerAdapter;
            _innerAdapter.NewOutMessage += ProcessOutMessage;

            CommissionManager = new CommissionManager();
            LatencyManager    = new LatencyManager();
            RiskManager       = new RiskManager();
        }
示例#10
0
        public void CalculateTest()
        {
            Stock[] stocks = CsvUtils.ReadAllDataFrom("csv-samples/", 4, false);

            List <FinancialPair> pairs = FinancialPair.CreateMany(stocks);

            RiskManager rm = new RiskManager(pairs.ToArray(), 100000.00);

            rm.Calculate();

            pairs.ForEach(i => { Assert.AreNotEqual(0, i.TradeVolume); });

            Assert.AreEqual(100000.00, pairs.Select(i => i.TradeVolume).Sum());

            Assert.AreEqual(1, pairs.Select(i => i.Weight).Sum());
        }
示例#11
0
        static void Main(string[] args)
        {
            var marketData = CsvUtils.ReadAllDataFrom(MarketDataDirectory, 4, false);

            var selectedShares = marketData.ToList().FindAll(i => Symbols.Contains(i.Name));

            var financialPairs = FinancialPair.CreateMany(selectedShares);

            var riskManager = new RiskManager(financialPairs, Balance);

            riskManager.Calculate();

            DisplayResults(financialPairs);

            Console.WriteLine("PRESS 'ENTER' TO EXIT.");
            Console.ReadLine();
        }
示例#12
0
        void IMessageChannel.SendInMessage(Message message)
        {
            if (message.LocalTime.IsDefault())
            {
                message.LocalTime = _innerAdapter.CurrentTime.LocalDateTime;
            }

            if (message.Type == MessageTypes.Connect)
            {
                LatencyManager.Reset();
                CommissionManager.Reset();
                RiskManager.Reset();
            }
            else
            {
                LatencyManager.ProcessMessage(message);
                ProcessRisk(message);
            }

            _innerAdapter.SendInMessage(message);
        }
示例#13
0
        private void Calculate_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var checkedPairs = new List <FinancialPair>();

                foreach (var item in pairsInfo)
                {
                    if (item.Selected)
                    {
                        var pair = pairs.Find(i => i.Name == item.Name);

                        if (pair != null)
                        {
                            checkedPairs.Add(pair);
                        }
                    }
                }

                if (checkedPairs.Count > 0)
                {
                    SetTradeVolumeToDefault();

                    var rc = new RiskManager(checkedPairs.ToArray(), balance.GetDouble());
                    rc.Calculate();

                    ShowValuesForPairInfo();
                }
                else
                {
                    this.Display("Pairs are not selected.");
                }
            }
            catch (Exception ex)
            {
                this.Display("CalculateRisk => " + ex.Message);
            }
        }