Ejemplo n.º 1
0
        private void CallBTCeAPIFee()
        {
            int    TimeOut  = 10;
            string queryStr = string.Format(BTCeAPIFeeURL, BtcePairHelper.ToString(currency));
            var    request  = (HttpWebRequest)WebRequest.Create(queryStr);

            request.GetResponse();
            request.Timeout = TimeOut * 1000;

            if (request == null)
            {
                throw new Exception("Non HTTP WebRequest");
            }

            if (FeeChanged != null)
            {
                FeeInfo currentFee = FeeInfo.ReadFromJSON(new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd());
                if (latestFee == null ||
                    latestFee.Fee != currentFee.Fee)
                {
                    FeeChanged(currentFee, EventArgs.Empty);
                }

                latestFee = currentFee;
            }

            Fee.Start();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Place single trade with passed parameters
        /// </summary>
        /// <param name="pair">Trade Pair (currency)</param>
        /// <param name="type">Trade Type</param>
        /// <param name="rate">Trade Rate</param>
        /// <param name="amount">Trade Amount</param>
        /// <returns>On successful operation will return populated TradeAnswer, on error will throw BTCeException with original BTCe API error message</returns>
        public TradeAnswer PlaceOrder(BTCePair pair, BTCeTradeType type, decimal rate, decimal amount)
        {
            if (!authenticated)
            {
                throw new BTCeAPIException("Not Authenticated");
            }

            var resultStr = Query(new Dictionary <string, string>()
            {
                { "method", "Trade" },
                { "pair", BtcePairHelper.ToString(pair) },
                { "type", TradeTypeHelper.ToString(type) },
                { "rate", DecimalToString(rate) },
                { "amount", DecimalToString(amount) }
            });

            return(TradeAnswer.ReadFromJSON(resultStr));
        }
Ejemplo n.º 3
0
        private void CallBTCeAPITicker()
        {
            int    TimeOut  = 10;
            string queryStr = string.Format(BTCeAPITickerURL, BtcePairHelper.ToString(currency));
            var    request  = (HttpWebRequest)WebRequest.Create(queryStr);

            request.GetResponse();
            request.Timeout = TimeOut * 1000;

            if (request == null)
            {
                throw new Exception("Non HTTP WebRequest");
            }

            TickerInfo ticker = TickerInfo.ReadFromJSON(new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd());

            if (PriceChanged != null)
            {
                if (
                    latestTicker == null ||
                    PriceChangePushIndicator == PUSH_PRICE_CHANGE_ALWAYS ||
                    ((PriceChangePushIndicator & PUSH_PRICE_CHANGE_BUY) > 0 && latestTicker.Buy != ticker.Buy) ||
                    ((PriceChangePushIndicator & PUSH_PRICE_CHANGE_SELL) > 0 && latestTicker.Sell != ticker.Sell) ||
                    ((PriceChangePushIndicator & PUSH_PRICE_CHANGE_BUY_DOWN) > 0 && latestTicker.Buy > ticker.Buy) ||
                    ((PriceChangePushIndicator & PUSH_PRICE_CHANGE_BUY_UP) > 0 && latestTicker.Buy < ticker.Buy) ||
                    ((PriceChangePushIndicator & PUSH_PRICE_CHANGE_SELL_DOWN) > 0 && latestTicker.Sell > ticker.Sell) ||
                    ((PriceChangePushIndicator & PUSH_PRICE_CHANGE_SELL_UP) > 0 && latestTicker.Sell < ticker.Sell)
                    )
                {
                    PriceChanged(
                        ticker,
                        EventArgs.Empty);
                }

                latestTicker = ticker;
            }
            else
            {
                latestTicker = ticker;
            }

            Ticker.Start();
        }
Ejemplo n.º 4
0
        private void CallBTCeAPIActiveOrders()
        {
            var resultStr = Query(new Dictionary <string, string>()
            {
                { "method", "ActiveOrders" },
                { "pair", BtcePairHelper.ToString(currency) }
            });

            if (ActiveOrdersReceived != null ||
                ActiveOrdersCountChanged != null ||
                ActiveOrdersTotalAmountChanged != null)
            {
                try
                {
                    OrdersList orders = OrdersList.ReadFromJSON(resultStr);

                    var totalAmount = orders.List.Sum(x => x.Value.Amount);

                    if (ActiveOrdersReceived != null)
                    {
                        ActiveOrdersReceived(orders, EventArgs.Empty);
                    }

                    if (ActiveOrdersCountChanged != null)
                    {
                        if (latestActiveOrdersCount > -1 &&
                            latestActiveOrdersCount != orders.List.Count)
                        {
                            ActiveOrdersCountChanged(orders, new DecimalEventArgs(latestActiveOrdersCount));
                        }
                    }

                    if (ActiveOrdersTotalAmountChanged != null)
                    {
                        if (latestTotalAmount > -1 &&
                            latestTotalAmount != totalAmount)
                        {
                            ActiveOrdersTotalAmountChanged(orders, new DecimalEventArgs(latestTotalAmount));
                        }
                    }

                    if (latestActiveOrdersCount != orders.List.Count)
                    {
                        latestActiveOrdersCount = orders.List.Count;
                    }

                    if (latestTotalAmount != totalAmount)
                    {
                        latestTotalAmount = totalAmount;
                    }

                    ActiveOrders.Start();
                }
                catch (BTCeAPIException e)
                {
                    ActiveOrdersReceived(e, EventArgs.Empty);
                }
                catch (Exception ex)
                {
                    ActiveOrdersReceived(ex, EventArgs.Empty);
                }
            }
        }