/// <summary>
        /// Метод, с помощью которого создаются новые ордера для торговли на бирже
        /// </summary>
        /// <param name="pair">пара (пример: ltc_btc)</param>
        /// <param name="type">тип операции (пример: buy или sell)</param>
        /// <param name="rate">курс, по которому необходимо купить или продать (значение: числовое)</param>
        /// <param name="amount">количество, которое необходимо купить или продать (значение: числовое)</param>
        /// <returns>Ответ биржи</returns>
        public TradeResponse Trade(CoinPair pair, TradeOperationType type, double rate, double amount)
        {
            Logger.Log("Called 'Trade' method");
            var methodUri  = new Uri(TradeApiUrl);
            var parameters = new Dictionary <string, string>
            {
                { "method", "Trade" },
                { "pair", pair.ToString() },
                { "type", TradeOperationTypeNames[type] },
                { "rate", rate.ToString("0.00000000", System.Globalization.CultureInfo.InvariantCulture) },
                { "amount", amount.ToString("0.00000000", System.Globalization.CultureInfo.InvariantCulture) },
                { "nonce", ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString() }
            };
            var _res     = ProcessTradeRequest(methodUri, parameters).Result;
            var response = JsonConvert.DeserializeObject <TradeResponse>(_res);

            return(response);
        }
Beispiel #2
0
        static float TotalWealth(Yobit.YobitApiClient yobitApiClient, string resultCoin)
        {
            resultCoin = resultCoin.ToLower();

            var accountInfo = yobitApiClient.GetInfo();

            if (accountInfo.success == 0)
            {
                throw new Exception("Метод GetInfo возвратил ошибку: " + accountInfo.error);
            }
            var   accountCoinPairs = new CoinsPairs([email protected]_incl_orders.Select(pair => new CoinPair(pair.Key, resultCoin)));
            var   ticker           = yobitApiClient.Ticker(accountCoinPairs);
            float sumWealth        = 0;

            foreach (var coin in [email protected]_incl_orders.Keys)
            {
                if (coin == resultCoin)
                {
                    sumWealth += [email protected]_incl_orders[coin];
                    Console.WriteLine($"On balance: {[email protected]_incl_orders[resultCoin]}{resultCoin}");
                    continue;
                }
                var coinPair     = new CoinPair(coin, resultCoin);
                var coinSumPrice = [email protected]_incl_orders[coin] * ticker[coinPair.ToString()].sell;
                if (coinPair.Reverted)
                {
                    coinSumPrice = [email protected]_incl_orders[coin] / ticker[coinPair.ToString()].sell;                   // на случай usd_rur
                }
                sumWealth += coinSumPrice;

                Console.WriteLine($"{[email protected]_incl_orders[coin]}{coin} {(!coinPair.Reverted ? "*" : "/")} {ticker[coinPair.ToString()].sell}{resultCoin} = {coinSumPrice}{resultCoin}");
            }
            Console.WriteLine($"Total: {sumWealth}{resultCoin}");
            return(sumWealth);
        }