/// <summary> /// установить соединение /// </summary> public void Connect(string publicKey, string privateKey) { if (_isConnected) { SendLogMessage("Запрошен повторный запуск клиента Kraken со статусом Connect", LogMessageType.Error); return; } try { _kraken = new KrakenApi(publicKey, privateKey); if (_proxies != null) { _kraken.InsertProxies(_proxies); } if (_kraken.GetServerTime() == null) { SendLogMessage("Подключение не удалось. Сервер не отвечает", LogMessageType.Error); return; } _isConnected = true; if (ConnectionSucsess != null) { ConnectionSucsess(); } } catch (Exception error) { SendLogMessage(error.ToString(), LogMessageType.Error); } }
/// <summary> /// connect /// установить соединение /// </summary> public void Connect(string publicKey, string privateKey) { if (_isConnected) { return; } try { _kraken = new KrakenApi(publicKey, privateKey); if (_proxies != null) { _kraken.InsertProxies(_proxies); } if (_kraken.GetServerTime() == null) { SendLogMessage(OsLocalization.Market.Label56, LogMessageType.Error); return; } _isConnected = true; if (ConnectionSucsess != null) { ConnectionSucsess(); } } catch (Exception error) { SendLogMessage(error.ToString(), LogMessageType.Error); } }
/// <summary> /// connect to API /// подсоединиться к апи /// </summary> public async void Connect() { if (_clientRest == null) { _clientRest = new KrakenClient( ((ServerParameterString)ServerParameters[0]).Value, ((ServerParameterPassword)ServerParameters[1]).Value); _clientRest.Connected += _client_Connected; _clientRest.UpdatePairs += _client_UpdatePairs; _clientRest.Disconnected += _client_Disconnected; _clientRest.NewPortfolioEvent += _client_NewPortfolioSpot; _clientRest.UpdateMarketDepth += _client_UpdateMarketDepth; _clientRest.NewTradesEvent += _client_NewTradesEvent; _clientRest.MyTradeEvent += _client_MyTradeEvent; _clientRest.MyOrderEvent += _client_MyOrderEvent; _clientRest.LogMessageEvent += SendLogMessage; } KrakenApi.LogMessageEvent += SendLogMessage; KrakenApi.TradeUpdateEvent += KrakenApi_TradeUpdateEvent; KrakenApi.MarketDepthUpdateEvent += KrakenApi_MarketDepthUpdateEvent; KrakenApi.MyTradeUpdateEvent += KrakenApi_MyTradeUpdateEvent; KrakenApi.OrdersUpdateEvent += KrakenApi_OrdersUpdateEvent; _clientRest.Connect(); _clientSocketPublicData = new KrakenApi(); _clientSocketPublicData.ConfigureAuthentication( "https://api.kraken.com", ((ServerParameterString)ServerParameters[0]).Value, ((ServerParameterPassword)ServerParameters[1]).Value); //_clientSocket.ConfigureWebsocket(("wss://ws-auth.kraken.com")); _clientSocketPublicData.ConfigureWebsocket(("wss://ws.kraken.com")); AuthToken token = await _clientSocketPublicData.AuthenticationClient.GetWebsocketToken(); var client = _clientSocketPublicData.BuildClient(); await Task.Run(() => KrakenApi.RunKraken(client, token)); _clientSocketPrivateData = new KrakenApi(); _clientSocketPrivateData.ConfigureAuthentication( "https://api.kraken.com", ((ServerParameterString)ServerParameters[0]).Value, ((ServerParameterPassword)ServerParameters[1]).Value); _clientSocketPrivateData.ConfigureWebsocket(("wss://ws-auth.kraken.com")); token = await _clientSocketPrivateData.AuthenticationClient.GetWebsocketToken(); client = _clientSocketPrivateData.BuildClient(); await Task.Run(() => KrakenApi.RunKraken(client, token)); }
/// <summary> /// disconnect /// отключиться /// </summary> public void Disconnect() { _isConnected = false; if (_kraken != null) { lock (_lockerListen) { _kraken.Dispose(); _kraken = null; } } if (ConnectionFail != null) { ConnectionFail(); } }
static async Task Main(string[] args) { var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", true, true) .AddEnvironmentVariables() .Build(); var logger = new LoggerConfiguration() .MinimumLevel.Verbose() .WriteTo.RollingFile("logs/kraken-websockets.log") .WriteTo.Console(restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information) .CreateLogger(); _ = new LoggerFactory() .AddKrakenWebSockets() .AddSerilog(logger); var krakenApi = new KrakenApi() .ConfigureAuthentication( configuration.GetValue <string>("API_URL"), configuration.GetValue <string>("API_KEY"), configuration.GetValue <string>("API_SECRET")) .ConfigureWebsocket(configuration.GetValue <string>("WS_ENDPOINT")); token = await krakenApi.AuthenticationClient.GetWebsocketToken(); using (var client = krakenApi.BuildClient()) { await Task.Run(() => RunKraken(client, token)); do { Console.WriteLine("Press [ESC] to exit."); }while (Console.ReadKey().Key != ConsoleKey.Escape); } }
/// <summary> /// cancel order /// отозвать ордер /// </summary> public void CancelOrder(Order order) { KrakenApi.CancelOrder(order); }
/// <summary> /// send order /// исполнить ордер /// </summary> public void SendOrder(Order order) { KrakenApi.AddOrder(order); }