private void Sign(IBitmexAuthorization bitmexAuthorization, HttpRequestMessage request, string @params) { request.Headers.Add("api-key", bitmexAuthorization.Key ?? string.Empty); request.Headers.Add("api-expires", _expiresTimeProvider.Get().ToString()); request.Headers.Add("api-signature", _signatureProvider.CreateSignature(bitmexAuthorization.Secret ?? string.Empty, $"{request.Method}{request.RequestUri}{_expiresTimeProvider.Get().ToString()}{@params}")); }
public async Task <string> RequestAsync <T>(IBitmexAuthorization authorization, HttpMethod method, string action, T parameters) { var queryString = (parameters as IQueryStringParams)?.ToQueryString() ?? string.Empty; var content = (parameters as IJsonQueryParams)?.ToJson(); var request = new HttpRequestMessage(method, "/api/v1/" + action + (string.IsNullOrWhiteSpace(queryString) ? string.Empty : "?" + queryString)) { Content = content != null ? new StringContent(content, Encoding.UTF8, "application/json") : null }; Sign(authorization, request, content); Log.Debug($"{request.Method} {request.RequestUri}"); var response = await GetClient(authorization.BitmexEnvironment).SendAsync(request); var responseString = await response.Content.ReadAsStringAsync(); Log.Debug($"{request.Method} {request.RequestUri.PathAndQuery} {(response.IsSuccessStatusCode ? "resp" : "errorResp")}:{responseString}"); if (!response.IsSuccessStatusCode) { try { throw new BitmexApiException(JsonConvert.DeserializeObject <BitmexApiError>(responseString)); } catch (JsonReaderException) { throw new BitmexApiException(responseString); } } return(responseString); }
public BitmexApiSocketService(IBitmexAuthorization bitmexAuthorization, ILoggerFactory?loggerFactory = null) : this(bitmexAuthorization : bitmexAuthorization, expiresTimeProvider : new ExpiresTimeProvider(), signatureProvider : new SignatureProvider(), bitmexApiSocketProxy : new BitmexApiSocketProxy(bitmexAuthorization.BitmexEnvironment, loggerFactory?.CreateLogger <BitmexApiSocketProxy>()), logger : loggerFactory?.CreateLogger <BitmexApiSocketService>()) { }
public BitmexApiSocketService(IBitmexAuthorization bitmexAuthorization, IExpiresTimeProvider expiresTimeProvider, ISignatureProvider signatureProvider, IBitmexApiSocketProxy bitmexApiSocketProxy) { _bitmexAuthorization = bitmexAuthorization; _expiresTimeProvider = expiresTimeProvider; _signatureProvider = signatureProvider; _bitmexApiSocketProxy = bitmexApiSocketProxy; _actions = new Dictionary <string, IList <BitmexApiSubscriptionInfo> >(); _bitmexApiSocketProxy.DataReceived += BitmexApiSocketProxyDataReceived; }
public MainWindowViewModel() { _bitmexAuthorization = new BitmexAuthorization() { BitmexEnvironment = BitmexEnvironment.Test }; _bitmexApiService = BitmexApiService.CreateDefaultApi(_bitmexAuthorization); BuyCmd = new DelegateCommand(Buy); SellCmd = new DelegateCommand(Sell); Size = 1; }
public BitmexApiSocketService(IBitmexAuthorization bitmexAuthorization, IExpiresTimeProvider expiresTimeProvider, ISignatureProvider signatureProvider, IBitmexApiSocketProxy bitmexApiSocketProxy, ILogger <BitmexApiSocketService>?logger = null) { _bitmexAuthorization = bitmexAuthorization; _expiresTimeProvider = expiresTimeProvider; _signatureProvider = signatureProvider; _bitmexApiSocketProxy = bitmexApiSocketProxy; _logger = logger ?? NullLogger <BitmexApiSocketService> .Instance; _bitmexApiSocketProxy.MessageReceived += MessageReceived; }
public override void TestInitialize() { _bitmexAuthorization = Substitute.For <IBitmexAuthorization>(); var container = new UnityContainer(); container.AddNewExtension <BitmexNetUnityExtension>(); container.RegisterInstance <IBitmexAuthorization>(_bitmexAuthorization); Sut = container.Resolve <IBitmexApiSocketService>(); _bitmexAuthorization.BitmexEnvironment.Returns(BitmexEnvironment.Test); _bitmexAuthorization.Key.Returns(ConfigurationManager.AppSettings["Key"]); _bitmexAuthorization.Secret.Returns(ConfigurationManager.AppSettings["Secret"]); }
public MainWindowViewModel() { _bitmexAuthorization = new BitmexAuthorization { BitmexEnvironment = BitmexEnvironment.Test }; _bitmexApiService = BitmexApiService.CreateDefaultApi(_bitmexAuthorization); _bitmexApiSocketService = BitmexApiSocketService.CreateDefaultApi(_bitmexAuthorization); BuyCmd = new DelegateCommand(Buy); SellCmd = new DelegateCommand(Sell); StartLoadSymbolsCmd = new DelegateCommand(StartLoad, CanStart); Size = 1; Instruments = new ObservableCollection <InstrumentModel>(); OrderUpdates = new ObservableCollection <OrderUpdateModel>(); BindingOperations.EnableCollectionSynchronization(Instruments, _syncObj); BindingOperations.EnableCollectionSynchronization(OrderUpdates, _syncObjOrders); }
public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization, IExpiresTimeProvider expiresTimeProvider, ISignatureProvider signatureProvider) { _bitmexAuthorization = bitmexAuthorization; _expiresTimeProvider = expiresTimeProvider; _signatureProvider = signatureProvider; _httpClient = new HttpClient { BaseAddress = new Uri($"https://{Environments.Values[_bitmexAuthorization.BitmexEnvironment]}") }; //_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); //_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); //_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml")); //_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/javascript")); //_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/javascript")); //_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); }
public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization, IExpiresTimeProvider expiresTimeProvider, ISignatureProvider signatureProvider, ILogger <BitmexApiProxy>?logger = null) { _bitmexAuthorization = bitmexAuthorization; _expiresTimeProvider = expiresTimeProvider; _signatureProvider = signatureProvider; _logger = logger ?? NullLogger <BitmexApiProxy> .Instance; _httpClient = new HttpClient { BaseAddress = new Uri($"https://{Environments.Values[_bitmexAuthorization.BitmexEnvironment]}") }; _httpClient.DefaultRequestHeaders.Add("api-key", _bitmexAuthorization.Key ?? string.Empty); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml")); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/javascript")); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/javascript")); }
public MainWindowViewModel() { if (IsTest) { _bitmexAuthorization = new BitmexAuthorization { BitmexEnvironment = BitmexEnvironment.Test } } ; else { _bitmexAuthorization = new BitmexAuthorization { BitmexEnvironment = BitmexEnvironment.Prod } }; _bitmexApiSocketService = BitmexApiSocketService.CreateDefaultApi(_bitmexAuthorization); BuyCmd = new DelegateCommand(Buy); SellCmd = new DelegateCommand(Sell); BuyLimitCmd = new DelegateCommand(BuyLimit); SellLimitCmd = new DelegateCommand(SellLimit); CancleCmd = new DelegateCommand(CancleOrder); ChaseCmd = new DelegateCommand(ChaseOrder); StartLoadSymbolsCmd = new DelegateCommand(StartLoad, CanStart); Size = 1; Instruments = new ObservableCollection <InstrumentModel>(); OrderUpdates = new ObservableCollection <OrderUpdateModel>(); OrderBookL2_25 = new ObservableCollection <OrderBookModel>(); BidWall = new List <OrderBookModel>(); BidDepthChart = new List <DepthChartData>(); AskWall = new List <OrderBookModel>(); AskDepthChart = new List <DepthChartData>(); BindingOperations.EnableCollectionSynchronization(Instruments, _syncObj); BindingOperations.EnableCollectionSynchronization(OrderUpdates, _syncObjOrders); BindingOperations.EnableCollectionSynchronization(OrderBookL2_25, _syncObjOrderBookL2_25); /* * BindingOperations.EnableCollectionSynchronization(BidWall, _syncBidWall); * BindingOperations.EnableCollectionSynchronization(BidDepthChart, _syncBidDepthChart); * BindingOperations.EnableCollectionSynchronization(AskWall, _syncAskWall); * BindingOperations.EnableCollectionSynchronization(AskDepthChart, _syncAskDepthChart);*/ }
private void CreateServices() { try { _bitmexAuthorization = new BitmexAuthorization() { BitmexEnvironment = BitmexEnvironment.Prod, Key = "Your_API_Key", Secret = "Your_API_Secret" }; _bitmexApiService = BitmexApiService.CreateDefaultApi(_bitmexAuthorization); _bitmexApiSocketService = BitmexApiSocketService.CreateDefaultApi(_bitmexAuthorization); _bitmexApiSocketService.Connect(); } catch (Exception e) { Console.WriteLine(e); } }
public override void TestInitialize() { _bitmexAuthorization = Substitute.For <IBitmexAuthorization>(); var container = new UnityContainer(); container.AddNewExtension <BitmexNetUnityExtension>(); container.RegisterInstance <IBitmexAuthorization>(_bitmexAuthorization); Sut = container.Resolve <IBitmexApiSocketService>(); var config = new ConfigurationBuilder() .AddJsonFile("appsettings.test.json") .Build(); var key = config.GetValue <string>("Key"); var secret = config.GetValue <string>("Secret"); var env = config.GetValue <string>("Environment"); _bitmexAuthorization.BitmexEnvironment.Returns(Enum.Parse(typeof(BitmexEnvironment), env)); _bitmexAuthorization.Key.Returns(key); _bitmexAuthorization.Secret.Returns(secret); }
//private long ID = 0; // TESTING //private static readonly ManualResetEvent ExitEvent = new ManualResetEvent(false); //private static readonly string API_KEY = "QbpGewiOyIYMbyQ-ieaTKfOJ"; //private static readonly string API_SECRET = ""; // TESTLONG [51091] : "QbpGewiOyIYMbyQ-ieaTKfOJ" // TESTSHORT [170591] : "xEuMT-y7ffwxrvHA2yDwL1bZ" public Form1() { InitializeComponent(); InitForm(); _bitmexAuthorizationA = new BitmexAuthorization { BitmexEnvironment = BitmexEnvironment.Test }; _bitmexAuthorizationB = new BitmexAuthorization { BitmexEnvironment = BitmexEnvironment.Test }; PrepareConnections(/*(double)NUDMaxExp.Value, (double)NUDLeverage.Value, (int)NUDDepth.Value, (int)NUDZonesize.Value, (double)NUDMinProfit.Value*/); bs = new BindingSource(); dGV.AutoGenerateColumns = false; dGV.AutoSize = true; dGV.AllowUserToAddRows = false; dGV.AllowUserToDeleteRows = false; dGV.AllowUserToResizeColumns = false; dGV.AllowUserToResizeRows = false; dGV.DataSource = bs; DataGridViewColumn column = new DataGridViewTextBoxColumn(); column.DataPropertyName = "Account"; column.Name = "Account"; dGV.Columns.Add(column); column = new DataGridViewTextBoxColumn(); column.DataPropertyName = "OrderQty"; column.Name = "OrderQty"; dGV.Columns.Add(column); column = new DataGridViewTextBoxColumn(); column.DataPropertyName = "ClOrdId"; column.Name = "ClOrdId"; column.Visible = false; //this.dataGridView1.Columns["CustomerID"].Visible = false; dGV.Columns.Add(column); }
public MainWindowViewModel() { _key = "TGILaGzUbldGjQcsDkDolY8M"; _secret = "hF32jD-OsGPxcTqY6sPxwvNEVpqJMgirxOTnME5t7J6sjqH4"; _bitmexAuthorization = new BitmexAuthorization { BitmexEnvironment = BitmexEnvironment.Test, Key = _key, Secret = _secret }; _bitmexApiSocketService = BitmexApiSocketService.CreateDefaultApi(_bitmexAuthorization); BuyCmd = new DelegateCommand(Buy); SellCmd = new DelegateCommand(Sell); StartLoadSymbolsCmd = new DelegateCommand(StartLoad, CanStart); Size = 1; Instruments = new ObservableCollection <InstrumentModel>(); OrderUpdates = new ObservableCollection <OrderUpdateModel>(); OrderBookL2 = new ObservableCollection <OrderBookModel>(); BindingOperations.EnableCollectionSynchronization(Instruments, _syncObj); BindingOperations.EnableCollectionSynchronization(OrderUpdates, _syncObjOrders); BindingOperations.EnableCollectionSynchronization(OrderBookL2, _syncObjOrderBookL2); }
public static IBitmexApiService CreateDefaultApi(IBitmexAuthorization bitmexAuthorization) { return(new BitmexApiService(bitmexAuthorization)); }
protected BitmexApiService(IBitmexAuthorization bitmexAuthorization) { _bitmexApiProxy = new BitmexApiProxy(bitmexAuthorization); }
public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization) { _bitmexAuthorization = bitmexAuthorization; }
public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization, ILogger <BitmexApiProxy>?logger = null) : this(bitmexAuthorization, new ExpiresTimeProvider(), new SignatureProvider(), logger) { }
public static IBitmexApiService CreateDefaultApi(IBitmexAuthorization bitmexAuthorization, object syncObjMain) { return(new BitmexApiService(bitmexAuthorization, syncObjMain)); }
public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization) : this(bitmexAuthorization, new ExpiresTimeProvider(), new SignatureProvider()) { }
public BitmexApiSocketService(IBitmexAuthorization bitmexAuthorization, IBitmexApiSocketProxy bitmexApiSocketProxy) : this(bitmexAuthorization, new ExpiresTimeProvider(), new SignatureProvider(), bitmexApiSocketProxy) { }
public BitmexApiService(IBitmexAuthorization bitmexAuthorization) { _bitmexAuthorization = bitmexAuthorization; }
public async Task <TResult> Execute <TParams, TResult>(IBitmexAuthorization bitmexAuthorization, ApiActionAttributes <TParams, TResult> apiAction, TParams @params) { return(JsonConvert.DeserializeObject <TResult>(await _bitmexApiProxy.RequestAsync(bitmexAuthorization, ToHttpMethod(apiAction.Method), apiAction.Action, @params))); }
public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization, INonceProvider nonceProvider, ISignatureProvider signatureProvider) { _bitmexAuthorization = bitmexAuthorization; _nonceProvider = nonceProvider; _signatureProvider = signatureProvider; }
public static IBitmexApiSocketService CreateDefaultApi(IBitmexAuthorization bitmexAuthorization) { return(new BitmexApiSocketService(bitmexAuthorization, NullLoggerFactory.Instance)); }
protected BitmexApiService(IBitmexAuthorization bitmexAuthorization, object syncObjMain) { _bitmexApiProxy = new BitmexApiProxy(bitmexAuthorization); _syncObjMain = syncObjMain; }