Beispiel #1
0
        private void OnStartZoneRecovery()
        {
            if (ZRCalculator == null)
            {
                ZRCalculator = new Calculator();
            }

            try
            {
                //TODO Add all checks to see if all the necessary conditions are met...

                decimal ask = 0, bid = 0;
                Dictionary <string, decimal> dict = new Dictionary <string, decimal>();

                if (Decimal.TryParse(_view.Ask, out ask) && Decimal.TryParse(_view.Bid, out bid))
                {
                    dict.Add("Ask", ask);
                    dict.Add("Bid", bid);
                }

                if (ask <= 0 || bid <= 0)
                {
                    throw new Exception($"OnStartZoneRecovery: Bid or Ask not consistent");
                }
                else
                {
                    ZRCalculator.UpdatePrices(dict);
                }

                if (_communicatorA != null && _communicatorB != null)
                {
                    var WalletBalance = GetTotalBalance();
                    var stats         = _orderBookStatsComputer.GetStats();

                    ZRCalculator.Initialize(
                        bitmexApiServiceA, bitmexApiServiceB,
                        WalletBalance,
                        _orderStatsHandler.GetOrderDictionary(),
                        _posStatsHandler.GetPositionDictionary(),
                        PositionStatsMutex,
                        "XBTUSD", (int)_view.MaxDepth, _view.ZoneSize, _view.MaxExposure, _view.Leverage, _view.MinProfit);

                    CalculatorEnabled = true;
                }
                else
                {
                    throw new Exception($"OnStartZoneRecovery: Communicators are null");
                }

                // Start...
                ZRCalculator.SwitchedOn = true;
                ZRCalculator.Evaluate();
            }
            catch (Exception exc)
            {
                Log.Error(exc.Message);
                Console.WriteLine(exc.Message);
                CalculatorEnabled = false;
            }
        }
        private void HandleOrderBook(BookResponse response)
        {
            _orderBookStatsComputer.HandleOrderBook(response);

            var stats = _orderBookStatsComputer.GetStats();

            if (stats == OrderBookStats.NULL)
            {
                return;
            }

            _view.Bid = stats.Bid.ToString("#.0");
            _view.Ask = stats.Ask.ToString("#.0");

            _view.BidAmount = $"{stats.BidAmountPerc:###}%{Environment.NewLine}{FormatToMilions(stats.BidAmount)}";
            _view.AskAmount = $"{stats.AskAmountPerc:###}%{Environment.NewLine}{FormatToMilions(stats.AskAmount)}";
        }