public FinnHubClientOptions(string key, string version = "v1") : base($"https://finnhub.io/api/{version}/")
 {
     ApiCredentials = new CryptoExchange.Net.Authentication.ApiCredentials(key, key);
     LogVerbosity   = CryptoExchange.Net.Logging.LogVerbosity.Debug;
     LogWriters     = new System.Collections.Generic.List <System.IO.TextWriter>()
     {
         new DebugTextWriter()
     };
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="key"></param>
 /// <param name="secret"></param>
 /// <param name="isTestnet"></param>
 /// <param name=""></param>
 /// <param name="loadInstrumentIndexes">If you will subscribe to orderbook, set it to true, cause instrument index and tick size will be used for price calculation</param>
 /// <param name="useMultiplexing"></param>
 public BitmexSocketClientOptions(string key, string secret, bool isTestnet = false, bool loadInstrumentIndexes = true, bool useMultiplexing = false) : base(isTestnet ? "wss://testnet.bitmex.com/realtime" : "wss://www.bitmex.com/realtime")
 {
     LoadInstruments = loadInstrumentIndexes;
     if (useMultiplexing)
     {
         throw new NotImplementedException("Multiplex client is not implemented yet");
     }
     IsTestnet = isTestnet;
     key.ValidateNotNull(nameof(key));
     secret.ValidateNotNull(nameof(secret));
     ApiCredentials = new CryptoExchange.Net.Authentication.ApiCredentials(key, secret);
 }
Esempio n. 3
0
        static void Main(string[] args)
        {
            /* Rest Api Client */
            var api = new BitMaxClient();

            /* Cash(Spot) / Margin Api Public Endpoints */
            var assets     = api.GetAssets();
            var products   = api.GetProducts();
            var tickers_01 = api.GetTickers();
            var tickers_02 = api.GetTickers("BTC/USDT");
            var tickers_03 = api.GetTickers("BTC/USDT", "ETH/USDT", "LTC/USDT");
            var tickers_04 = api.GetTickers(new List <string> {
                "BTC/USDT", "ETH/USDT", "LTC/USDT"
            });
            var periods    = api.GetBarPeriods();
            var candles_01 = api.GetCandles("BTC/USDT", BitMaxPeriod.OneHour);
            var candles_02 = api.GetCandles("BTC/USDT", BitMaxPeriod.OneMonth, 10);
            var orderbook  = api.GetOrderBook("BTC/USDT");
            var trades_01  = api.GetTrades("BTC/USDT");
            var trades_02  = api.GetTrades("BTC/USDT", 50);

            /* Cash(Spot) / Margin Api Private Endpoints */
            api.SetApiCredentials("XXXXXXXX-API-KEY-XXXXXXXX", "XXXXXXXX-API-SECRET-XXXXXXXX");
            var account_info = api.GetAccountInfo();

            api.SetAccountGroup(account_info.Data.AccountGroup);
            var spot_balances_01            = api.GetSpotBalances();
            var spot_balances_02            = api.GetSpotBalances(showAll: true);
            var spot_balances_03            = api.GetSpotBalances("BTC");
            var spot_balances_04            = api.GetSpotBalances("BTC", true);
            var margin_balances_01          = api.GetMarginBalances(showAll: false);
            var margin_balances_02          = api.GetMarginBalances(showAll: true);
            var margin_balances_03          = api.GetMarginBalances("BTC");
            var margin_balances_04          = api.GetMarginBalances("BTC", true);
            var margin_risk                 = api.GetMarginRisk();
            var transfer                    = api.AccountTransfer(BitMaxWalletAccount.Cash, BitMaxWalletAccount.Margin, "BTC", 0.1m);
            var deposit_address_01          = api.GetDepositAddresses("USDT");
            var deposit_address_02          = api.GetDepositAddresses("USDT", "ERC20");
            var wallet_transactions_01      = api.GetWalletTransactions();
            var wallet_transactions_02      = api.GetWalletTransactions("BTC");
            var wallet_transactions_03      = api.GetWalletTransactions("ETH", BitMaxTransactionType.Deposit, 1, 100);
            var spot_order_01               = api.PlaceSpotOrder("ETH/USDT", 0.1m, BitMaxCashOrderType.Limit, BitMaxOrderSide.Buy, orderPrice: 607.90m);
            var spot_order_02               = api.PlaceSpotOrder("BTC/USDT", 0.1m, BitMaxCashOrderType.Market, BitMaxOrderSide.Buy);
            var spot_order_03               = api.PlaceSpotOrder("BTC/USDT", 0.1m, BitMaxCashOrderType.Limit, BitMaxOrderSide.Buy, 23000.00m);
            var margin_order_01             = api.PlaceMarginOrder("ETH/USDT", 0.1m, BitMaxCashOrderType.Limit, BitMaxOrderSide.Buy, orderPrice: 607.90m);
            var margin_order_02             = api.PlaceMarginOrder("BTC/USDT", 0.1m, BitMaxCashOrderType.Market, BitMaxOrderSide.Buy);
            var margin_order_03             = api.PlaceMarginOrder("BTC/USDT", 0.1m, BitMaxCashOrderType.Limit, BitMaxOrderSide.Buy, 23000.00m);
            var spot_cancel_order           = api.CancelSpotOrder("BTC/USDT", "a176a4316ec6U3352487793bethuCafd");
            var spot_cancel_all_orders_01   = api.CancelAllSpotOrders();
            var spot_cancel_all_orders_02   = api.CancelAllSpotOrders("ETH/USDT");
            var margin_cancel_all_orders_01 = api.CancelAllMarginOrders();
            var margin_cancel_all_orders_02 = api.CancelAllMarginOrders("ETH/USDT");
            var spot_query                  = api.GetSpotOrder("a176a4316ec6U3352487793bethuCafd");
            var margin_query                = api.GetSpotOrder("a176a4316ec6U3352487793bethuCafd");
            var spot_open_orders_01         = api.GetSpotOpenOrders();
            var spot_open_orders_02         = api.GetSpotOpenOrders("ETH/USDT");
            var spot_current_history_orders = api.GetSpotCurrentHistoryOrders();
            var spot_history_orders         = api.GetSpotHistoryOrders();

            var spot_orders = new List <BitMaxCashPlaceOrder>();

            spot_orders.Add(new BitMaxCashPlaceOrder
            {
                Symbol    = "BTC/USDT",
                Size      = 0.1m,
                OrderType = BitMaxCashOrderType.Market,
                OrderSide = BitMaxOrderSide.Buy,
            });
            spot_orders.Add(new BitMaxCashPlaceOrder
            {
                Symbol      = "BTC/USDT",
                Size        = 0.1m,
                OrderType   = BitMaxCashOrderType.Limit,
                OrderSide   = BitMaxOrderSide.Buy,
                OrderPrice  = 23000.00m,
                PostOnly    = false,
                TimeInForce = BitMaxCashOrderTimeInForce.GoodTillCanceled,
            });
            var spot_batch_orders = api.PlaceSpotBatchOrders(spot_orders);

            var spot_orders_to_cancel = new List <BitMaxCashCancelOrder>();

            spot_orders_to_cancel.Add(new BitMaxCashCancelOrder
            {
                Symbol  = "BTC/USDT",
                OrderId = "a176a4316ec6U3352487793bethuCafd",
            });
            spot_orders_to_cancel.Add(new BitMaxCashCancelOrder
            {
                Symbol  = "BTC/USDT",
                OrderId = "a176a4316ec6U3352487793bethuCafe",
            });
            var spot_cancel_batch_orders = api.CancelSpotBatchOrders(spot_orders_to_cancel);

            /* Futures Api Public Endpoints */
            var futures_assets        = api.GetFuturesAssets();
            var futures_contracts     = api.GetFuturesContracts();
            var futures_refprices     = api.GetFuturesReferencePrices();
            var futures_marketdata_01 = api.GetFuturesMarketData();
            var futures_marketdata_02 = api.GetFuturesMarketData("BTC-PERP");
            var futures_fundingrates  = api.GetFuturesFundingRates();

            /* Futures Api Private Endpoints */
            api.SetApiCredentials("XXXXXXXX-API-KEY-XXXXXXXX", "XXXXXXXX-API-SECRET-XXXXXXXX");
            var futures_info = api.GetAccountInfo();

            api.SetAccountGroup(futures_info.Data.AccountGroup);
            var futures_balances               = api.GetFuturesBalances();
            var futures_positions              = api.GetFuturesPositions();
            var futures_risk                   = api.GetFuturesRisk();
            var futures_payments               = api.GetFuturesFundingPayments();
            var futures_transfer_01            = api.TransferFromCashToFutures("BTC", 0.1m);
            var futures_transfer_02            = api.TransferFromFuturesToCash("BTC", 0.1m);
            var futures_order_01               = api.PlaceFuturesOrder("BTC-PERP", 0.1m, BitMaxFuturesOrderType.Limit, BitMaxOrderSide.Buy, orderPrice: 23000.00m);
            var futures_order_02               = api.PlaceFuturesOrder("BTC-PERP", 0.1m, BitMaxFuturesOrderType.Market, BitMaxOrderSide.Buy);
            var futures_order_03               = api.PlaceFuturesOrder("BTC-PERP", 0.1m, BitMaxFuturesOrderType.Limit, BitMaxOrderSide.Buy, 23000.00m);
            var futures_cancel_order           = api.CancelFuturesOrder("BTC-PERP", "a176a4316ec6U3352487793bethuCafd");
            var futures_cancel_all_orders_01   = api.CancelAllFuturesOrders();
            var futures_cancel_all_orders_02   = api.CancelAllFuturesOrders("BTC-PERP");
            var futures_place_batch_orders     = api.PlaceFuturesBatchOrders(new List <BitMaxFuturesPlaceOrder> {
            });
            var futures_cancel_batch_orders    = api.CancelFuturesBatchOrders(new List <BitMaxFuturesCancelOrder> {
            });
            var futures_query                  = api.GetFuturesOrder("a176a4316ec6U3352487793bethuCafd");
            var futures_open_orders_01         = api.GetFuturesOpenOrders();
            var futures_open_orders_02         = api.GetSpotOpenOrders("BTC-PERP");
            var futures_current_history_orders = api.GetFuturesCurrentHistoryOrders();

            /* Web Socket Api Client */
            var credentials = new CryptoExchange.Net.Authentication.ApiCredentials("XXXXXXXX-API-KEY-XXXXXXXX", "XXXXXXXX-API-SECRET-XXXXXXXX");
            var ws          = new BitMaxSocketClient(new BitMaxSocketClientOptions(account_info.Data.AccountGroup, credentials));
            var auth        = ws.Login();

            var sub01 = ws.SubscribeToSummary(new List <string> {
                "BTC/USDT", "ETH/USDT"
            }, (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Summary >> {data.Symbol} T:{data.Timestamp} O:{data.Open} H:{data.High} L:{data.Low} C:{data.Close} V:{data.Volume}");
                }
            });

            var sub02 = ws.SubscribeToBestAskBidUpdates(new List <string> {
                "BTC/USDT", "ETH/USDT"
            }, (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"BBO >> {data.Symbol} T:{data.Timestamp} AP:{data.BestAsk.Price} AA:{data.BestAsk.Quantity} BP:{data.BestBid.Price} BA:{data.BestBid.Quantity}");
                }
            });

            var sub03 = ws.SubscribeToOrderBookUpdates(new List <string> {
                "BTC/USDT", "ETH/USDT"
            }, (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Book >> {data.Symbol} T:{data.Timestamp} AC:{data.Asks.Count()} BC:{data.Bids.Count()}");
                }
            });

            var sub04 = ws.SubscribeToTrades(new List <string> {
                "BTC/USDT", "ETH/USDT"
            }, (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Trades >> {data.Symbol} T:{data.Timestamp} P:{data.Price} A:{data.Amount} SN:{data.SequenceNumber} BM:{data.IsBuyerMarketMaker}");
                }
            });

            var sub05 = ws.SubscribeToCandles(new List <string> {
                "BTC/USDT", "ETH/USDT"
            }, BitMaxPeriod.OneHour, (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Candle >> {data.Symbol} P:{data.Period} OT:{data.OpenTime} O:{data.Open} H:{data.High} L:{data.Low} C:{data.Close} V:{data.Volume}");
                }
            });

            // Needs Authentication
            var sub06 = ws.SubscribeToSpotBalanceAndOrders((data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Balance >> {data.Asset} AB:{data.AvailableBalance} TB:{data.TotalBalance}");
                }
            }, (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Order >> {data.Symbol} OT:{data.OrderType} P:{data.Price} SP:{data.StopPrice}");
                }
            });

            // Needs Authentication
            var sub07 = ws.SubscribeToMarginBalanceAndOrders((data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Balance >> {data.Asset} AB:{data.AvailableBalance} TB:{data.TotalBalance}");
                }
            }, (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Order >> {data.Symbol} OT:{data.OrderType} P:{data.Price} SP:{data.StopPrice}");
                }
            });

            // Unsubscribe
            _ = ws.Unsubscribe(sub05.Data);

            ws.SubscribeToFuturesMarketData("BTC-PERP", (data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Market Data >> {data.Symbol} OI:{data.OpenInterest} FR:{data.FundingRate} FPF:{data.FundingPaymentFlag} IP:{data.IndexPrice} MP:{data.MarkPrice}");
                }
            });

            // Needs Authentication
            ws.SubscribeToFuturesOrders((data) =>
            {
                if (data != null)
                {
                    Console.WriteLine($"Order Data >> {data.Symbol} OI:{data.OrderId} OT:{data.OrderType} P:{data.Price} AP:{data.AveragePrice}");
                }
            });


            Console.ReadLine();
        }