Beispiel #1
0
        public void Is_Volume_In_Accont_Asset_Correct()
        {
            _bestPriceConsumer.SendEvent(this, new BestPriceChangeEventArgs(new InstrumentBidAskPair {
                Instrument = "BTCCHF", Ask = 1044.92M, Bid = 1044.90M
            }));
            _bestPriceConsumer.SendEvent(this, new BestPriceChangeEventArgs(new InstrumentBidAskPair {
                Instrument = "USDCHF", Ask = 0.9982M, Bid = 0.9980M
            }));
            _bestPriceConsumer.SendEvent(this, new BestPriceChangeEventArgs(new InstrumentBidAskPair {
                Instrument = "BTCUSD", Ask = 1041.41M, Bid = 1040.69M
            }));

            var accountVolume = _cfdCalculatorService.GetVolumeInAccountAsset(OrderDirection.Buy, Accounts[0].BaseAssetId, "BTCCHF", 1);

            Assert.AreEqual(1046.804, Math.Round(accountVolume, 3));

            accountVolume = _cfdCalculatorService.GetVolumeInAccountAsset(OrderDirection.Sell, Accounts[0].BaseAssetId, "BTCCHF", 1);
            Assert.AreEqual(1046.784, Math.Round(accountVolume, 3));

            accountVolume = _cfdCalculatorService.GetVolumeInAccountAsset(OrderDirection.Buy, Accounts[0].BaseAssetId, "BTCUSD", 1);
            Assert.AreEqual(1041.41, Math.Round(accountVolume, 3));

            accountVolume = _cfdCalculatorService.GetVolumeInAccountAsset(OrderDirection.Sell, Accounts[0].BaseAssetId, "BTCUSD", 1);
            Assert.AreEqual(1040.69, Math.Round(accountVolume, 3));
        }
Beispiel #2
0
        public bool IsEnoughBalance(Order order)
        {
            var volumeInAccountAsset = _cfdCalculatorService.GetVolumeInAccountAsset(order.GetOrderType(), order.AccountAssetId, order.Instrument, Math.Abs(order.Volume));
            var account      = _accountsCacheService.Get(order.ClientId, order.AccountId);
            var accountAsset = _accountAssetsCacheService.GetAccountAsset(order.TradingConditionId, order.AccountAssetId, order.Instrument);

            return(account.GetMarginAvailable() * accountAsset.LeverageInit >= volumeInAccountAsset);
        }