private static void GetDepth() { var marketClient = new MarketClient(); _logger.Start(); var request = new GetRequest() .AddParam("symbol", "btcusdt") .AddParam("depth", "5") .AddParam("type", "step0"); var result = marketClient.GetDepthAsync(request).Result; _logger.StopAndLog(); if (result != null && result.tick != null) { var asks = result.tick.asks; if (asks != null) { for (int i = asks.Length - 1; i >= 0; i--) { AppLogger.Info($"[{asks[i][0]}, {asks[i][1]}]"); } } AppLogger.Info($"----------"); var bids = result.tick.bids; if (bids != null) { for (int i = 0; i < bids.Length; i++) { AppLogger.Info($"[{bids[i][0]}, {bids[i][1]}]"); } } } }
private static void GetLastTrades() { var marketClient = new MarketClient(); _logger.Start(); var result = marketClient.GetLastTradesAsync("btcusdt", 3).Result; _logger.StopAndLog(); if (result != null && result.data != null) { var data = result.data; foreach (var d in data) { if (d.data != null) { foreach (var t in d.data) { AppLogger.Info($"singapore time: {Timestamp.MSToLocal(t.ts)}," + $" trade-id: {t.tradeId}, amount: {t.amount}, price: {t.price}, direction: {t.direction}"); } AppLogger.Info($"There are latest {d.data.Length} tradings"); } } } }
public async void CanGetRecentTrades() { var itBit = new MarketClient(); var trades = await itBit.GetRecentTradesAsync(TickerSymbol.XBTUSD); Assert.IsNotNull(trades); Assert.IsTrue(trades.Trades.Any()); }
public async void CanGetTickers() { var itBit = new MarketClient(); var ticker = await itBit.GetTickerAsync(TickerSymbol.XBTUSD); Assert.IsNotNull(ticker); Assert.AreEqual(TickerSymbol.XBTUSD, ticker.Pair); }
public async void CanGetOrderBook() { var itBit = new MarketClient(); var orderBook = await itBit.GetOrderBookAsync(TickerSymbol.XBTUSD); Assert.IsNotNull(orderBook); Assert.IsTrue(orderBook.Asks.Any()); Assert.IsTrue(orderBook.Bids.Any()); }
public static void ReportPrice() { var client = new BtcRequestClient(); var marketClient = new MarketClient(client); //Market Data - GET requests (No Authentication Required) var instruments = new[] { Instrument.Ethereum, Instrument.BitcoinClassic, Instrument.BitcoinCash, Instrument.LiteCoin }; var currencies = new[] { Currencies.Aud, Currencies.Btc }; foreach (var instrument in instruments) { foreach (var currency in currencies .Where(a => a != instrument)) { Console.WriteLine($"Currency: {currency} / Instrument: {instrument}"); var book = marketClient.GetOrderBook(currency, instrument); var fee = currency == Currencies.Aud ? 0.0060 : 0.0022; var lowestAsks = book.Asks .OrderBy(a => a[0]) .First()[0]; var highestBid = book.Bids .OrderByDescending(a => a[0]) .First()[0]; var sellPrice = highestBid * (1 + fee); var purchasePrice = lowestAsks * (1 - fee); Console.WriteLine("====================="); Console.WriteLine($"Ask: {lowestAsks}"); Console.WriteLine($"Bid: {highestBid}"); Console.WriteLine($"Diff: {lowestAsks - highestBid}"); Console.WriteLine("====================="); Console.WriteLine($"Buy: {purchasePrice}"); Console.WriteLine($"Sell: {sellPrice}"); Console.WriteLine($"Diff: {purchasePrice - sellPrice}"); Console.WriteLine($"Profit %: {(purchasePrice - sellPrice) / sellPrice * 100}"); Console.WriteLine(""); Console.WriteLine(""); } } }
private async Task <bool> ConnectToMarket(string token) { var market = await MarketClient.Connect(token); if (market != null) { this.marketClient = market; this.marketClient.UserStatusChanged += this.OnUserStatusChanged; return(true); } return(false); }
private static void GetLast24Candlestick() { var marketClient = new MarketClient(); var result = marketClient.GetLast24hCandlestickAsync("btcusdt").Result; if (result != null && result.tick != null) { var ts = result.ts; var t = result.tick; Console.WriteLine($"local time: {Timestamp.MSToLocal(ts)}, count: {t.count}, amount: {t.amount}, volume: {t.vol}"); } }
private async Task DisconnectFromMarket() { this.contextMenu.Enabled = false; this.trayIcon.DisplaySpinner("Disconnecting from market..."); this.contextMenu.UnsetCheckbox(); if (this.marketClient != null) { await this.marketClient.CloseAsync(); this.marketClient = null; } this.SetOfflineMode(); }
static void Main(string[] args) { //ReportPrice(); Trade(Instrument.LiteCoin); var client = new BtcRequestClient(); var marketClient = new MarketClient(client); var trades = marketClient.GetTrades(Currencies.Aud, Instrument.Ethereum); foreach (var trade in trades) { Console.WriteLine($"Trade: ${trade.Price} x {trade.Amount} - {trade.Date} - {trade.Tid}"); } Console.ReadKey(); }
private static void GetLast24Candlestick() { var marketClient = new MarketClient(); _logger.Start(); var result = marketClient.GetLast24hCandlestickAsync("btcusdt").Result; _logger.StopAndLog(); if (result != null && result.tick != null) { var ts = result.ts; var t = result.tick; AppLogger.Info($"local time: {Timestamp.MSToLocal(ts)}, count: {t.count}, amount: {t.amount}, volume: {t.vol}"); } }
public bool RemoveListing(long orderid) { var attempts = 0; while (attempts < 3) { var status = MarketClient.CancelSellOrder(orderid); if (status == ECancelSellOrderStatus.Canceled) { return(true); } attempts++; } return(false); }
private static void GetLast24hCandlestickAskBid() { var marketClient = new MarketClient(); var result = marketClient.GetLast24hCandlestickAskBidAsync("btcusdt").Result; if (result != null && result.tick != null) { var ts = result.ts; var t = result.tick; Console.WriteLine($"local time: {Timestamp.MSToLocal(ts)}, ask: [{t.ask[0]}, {t.ask[1]}], bid: [{t.bid[0]} {t.bid[1]}]"); } }
private static void GetLast24hCandlestickAskBid() { var marketClient = new MarketClient(); _logger.Start(); var result = marketClient.GetLast24hCandlestickAskBidAsync("btcusdt").Result; _logger.StopAndLog(); if (result != null && result.tick != null) { var ts = result.ts; var t = result.tick; AppLogger.Info($"local time: {Timestamp.MSToLocal(ts)}, ask: [{t.ask[0]}, {t.ask[1]}], bid: [{t.bid[0]} {t.bid[1]}]"); } }
private static void GetAllSymbolsLast24hCandlesticksAskBid() { var marketClient = new MarketClient(); var result = marketClient.GetAllSymbolsLast24hCandlesticksAskBidAsync().Result; if (result != null && result.data != null) { foreach (var t in result.data) { Console.WriteLine($"symbol: {t.symbol}, count {t.count}, amount: {t.amount}, volume: {t.vol}" + $", bid: [{t.bid}, {t.bidSize}], ask: [{t.ask}, {t.askSize}]"); } Console.WriteLine($"There are total {result.data.Length} candlesticks"); } }
public SteamMarketHandler(ELanguage language, string userAgent) { if (string.IsNullOrEmpty(userAgent)) { throw new ArgumentException("Empty UserAgent"); } Settings = new Settings { UserAgent = userAgent, Language = language }; Auth = new Auth(this); Client = new MarketClient(this); Inventory = new Invertory(this); _requestsPerSecondLock = new object(); RequestsPerSecond = 3; }
private static void GetCandlestick() { var marketClient = new MarketClient(); var request = new GetRequest() .AddParam("symbol", "btcusdt") .AddParam("period", "1min") .AddParam("size", "10"); var result = marketClient.GetCandlestickAsync(request).Result; if (result != null && result.data != null) { foreach (var c in result.data) { Console.WriteLine($"local time: {Timestamp.SToLocal(c.id)}, count: {c.count}, amount: {c.amount}, volume: {c.vol}"); } Console.WriteLine($"there are total {result.data.Length} candlesticks"); } }
private static void GetLastTrade() { var marketClient = new MarketClient(); var result = marketClient.GetLastTradeAsync("btcusdt").Result; if (result != null && result.tick != null) { var data = result.tick.data; if (data != null) { foreach (var t in data) { Console.WriteLine($"singapore time: {Timestamp.MSToLocal(t.ts)}," + $" trade-id: {t.tradeId}, amount: {t.amount}, price: {t.price}, direction: {t.direction}"); } Console.WriteLine($"There are latest {data.Length} tradings"); } } }
public static void Trade(string instrument) { var client = new BtcRequestClient(); var marketClient = new MarketClient(client); var orderClient = new OrdersClient(client); var edge = 1; var book = marketClient.GetOrderBook(Currencies.Btc, instrument); var lowestAsks = book.Asks .OrderBy(a => a[0]) .First()[0]; var askPrice = (long)(lowestAsks * TradingAdjustments.ApiPriceMultiplier) - edge; var highestBid = book.Bids .OrderByDescending(a => a[0]) .First()[0]; var bidPrice = (long)(highestBid * TradingAdjustments.ApiPriceMultiplier) + edge; var fee = 0.003; var sellPrice = bidPrice * (1 + fee); var purchasePrice = askPrice * (1 - fee); Console.WriteLine("====================="); Console.WriteLine($"Ask: {lowestAsks}"); Console.WriteLine($"Bid: {highestBid}"); Console.WriteLine($"Diff: {lowestAsks - highestBid}"); Console.WriteLine("====================="); Console.WriteLine($"Buy: {purchasePrice}"); Console.WriteLine($"Sell: {sellPrice}"); Console.WriteLine($"Diff: {purchasePrice - sellPrice}"); Console.WriteLine($"Profit %: {(purchasePrice - sellPrice) / sellPrice * 100}"); var riskBuffer = 30000; if (purchasePrice - riskBuffer <= sellPrice) { Console.WriteLine("NO WAY RN'T BUYING NO NOTHING. I RN'T STUPID...."); return; } //var askResponse = orderClient.CreateOrder(Currencies.Btc, instrument, askPrice, 100000, TradeSide.Ask); var askResponse = new CreateOrderResponse { Id = 595124578 }; var bidResponse = new CreateOrderResponse { Id = 596025673 }; //var bidResponse = orderClient.CreateOrder(Currencies.Btc, instrument, bidPrice, 100000, TradeSide.Bid); OrderDetail[] orders; bool Checker() { var orderResponse = orderClient .GetOrder(new[] { askResponse.Id, bidResponse.Id }); orders = orderResponse.Orders; if (orders == null) { Console.WriteLine($"They f*****g with it: {orderResponse.ErrorMessage}"); Thread.Sleep(3000); client = new BtcRequestClient(); return(true); } return(orders.Length != 2 || orders.Any(a => a.Status != "Fully Matched")); } var lastBid = (long)1115926; // bidPrice; var lastAsk = (long)1194318; // askPrice; while (Checker()) { if (orders == null) { continue; } Thread.Sleep(300); var currentBook = marketClient.GetOrderBook(Currencies.Btc, instrument); var changed = false; var askOrder = orders.SingleOrDefault(a => a.OrderSide == TradeSide.Ask); if (askOrder != null && askOrder.Status != "Fully Matched") { var currentLowestAsks = currentBook.Asks .OrderBy(a => a[0]) .First()[0]; var currentAsk = (long)(currentLowestAsks * TradingAdjustments.ApiPriceMultiplier); if (currentAsk < askPrice) { Console.WriteLine("Replacing Ask."); if (currentAsk - edge < lastBid) { return; // f**k... } var bidToCancel = askResponse.Id; askResponse = orderClient.CreateOrder(Currencies.Btc, instrument, currentAsk - edge, askOrder.OpenVolume, TradeSide.Ask); orderClient.CancelOrder(new[] { bidToCancel }); lastAsk = currentAsk - edge; changed = true; } } var bidOrder = orders.SingleOrDefault(a => a.OrderSide == TradeSide.Bid); if (bidOrder != null && bidOrder.Status != "Fully Matched") { var currentHighestBid = currentBook.Bids .OrderByDescending(a => a[0]) .First()[0]; var currentBidPrice = (long)(currentHighestBid * TradingAdjustments.ApiPriceMultiplier); if (currentBidPrice > bidPrice) { Console.WriteLine("Replacing Bid."); if (currentBidPrice + edge > lastAsk) { return; // f**k... } var bidToCancel = bidResponse.Id; bidResponse = orderClient.CreateOrder(Currencies.Btc, instrument, currentBidPrice + edge, bidOrder.OpenVolume, TradeSide.Bid); orderClient.CancelOrder(new[] { bidToCancel }); lastBid = currentBidPrice + edge; changed = true; } } if (changed) { var lastSellPrice = lastBid * (1 + fee); var lastPurchasePrice = lastAsk * (1 - fee); Console.WriteLine("====================="); Console.WriteLine($"Buy: {lastPurchasePrice}"); Console.WriteLine($"Sell: {lastSellPrice}"); Console.WriteLine($"Diff: {lastPurchasePrice - lastSellPrice}"); Console.WriteLine($"Profit %: {(lastPurchasePrice - lastSellPrice) / lastSellPrice * 100}"); if (lastPurchasePrice - riskBuffer <= lastSellPrice) { Console.WriteLine("NO WAY RN'T BUYING NO NOTHING. I RN'T STUPID...."); orderClient.CancelOrder(new[] { bidResponse.Id, askResponse.Id }); return; } } } }