Exemple #1
0
        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]}]");
                    }
                }
            }
        }
Exemple #2
0
        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("");
                }
            }
        }
Exemple #7
0
        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}");
            }
        }
Exemple #9
0
        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();
        }
Exemple #11
0
        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}");
            }
        }
Exemple #12
0
        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]}]");
            }
        }
Exemple #14
0
        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");
            }
        }
Exemple #16
0
        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;
                    }
                }
            }
        }