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(); }
/// <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)); }
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(); }
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); } } }