Exemple #1
0
 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}"));
 }
Exemple #2
0
        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);
        }
Exemple #3
0
 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;
 }
Exemple #5
0
 public MainWindowViewModel()
 {
     _bitmexAuthorization = new BitmexAuthorization()
     {
         BitmexEnvironment = BitmexEnvironment.Test
     };
     _bitmexApiService = BitmexApiService.CreateDefaultApi(_bitmexAuthorization);
     BuyCmd            = new DelegateCommand(Buy);
     SellCmd           = new DelegateCommand(Sell);
     Size = 1;
 }
Exemple #6
0
 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;
 }
Exemple #7
0
        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"]);
        }
Exemple #8
0
 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);
 }
Exemple #9
0
        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"));
        }
Exemple #10
0
        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);
     }
 }
Exemple #13
0
        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);
        }
Exemple #14
0
        //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);
        }
Exemple #16
0
 public static IBitmexApiService CreateDefaultApi(IBitmexAuthorization bitmexAuthorization)
 {
     return(new BitmexApiService(bitmexAuthorization));
 }
Exemple #17
0
 protected BitmexApiService(IBitmexAuthorization bitmexAuthorization)
 {
     _bitmexApiProxy = new BitmexApiProxy(bitmexAuthorization);
 }
Exemple #18
0
 public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization)
 {
     _bitmexAuthorization = bitmexAuthorization;
 }
Exemple #19
0
 public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization, ILogger <BitmexApiProxy>?logger = null) : this(bitmexAuthorization, new ExpiresTimeProvider(), new SignatureProvider(), logger)
 {
 }
Exemple #20
0
 public static IBitmexApiService CreateDefaultApi(IBitmexAuthorization bitmexAuthorization, object syncObjMain)
 {
     return(new BitmexApiService(bitmexAuthorization, syncObjMain));
 }
Exemple #21
0
 public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization) : this(bitmexAuthorization, new ExpiresTimeProvider(), new SignatureProvider())
 {
 }
 public BitmexApiSocketService(IBitmexAuthorization bitmexAuthorization, IBitmexApiSocketProxy bitmexApiSocketProxy) : this(bitmexAuthorization, new ExpiresTimeProvider(), new SignatureProvider(), bitmexApiSocketProxy)
 {
 }
Exemple #23
0
 public BitmexApiService(IBitmexAuthorization bitmexAuthorization)
 {
     _bitmexAuthorization = bitmexAuthorization;
 }
Exemple #24
0
 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)));
 }
Exemple #25
0
 public BitmexApiProxy(IBitmexAuthorization bitmexAuthorization, INonceProvider nonceProvider, ISignatureProvider signatureProvider)
 {
     _bitmexAuthorization = bitmexAuthorization;
     _nonceProvider       = nonceProvider;
     _signatureProvider   = signatureProvider;
 }
Exemple #26
0
 public static IBitmexApiSocketService CreateDefaultApi(IBitmexAuthorization bitmexAuthorization)
 {
     return(new BitmexApiSocketService(bitmexAuthorization, NullLoggerFactory.Instance));
 }
Exemple #27
0
 protected BitmexApiService(IBitmexAuthorization bitmexAuthorization, object syncObjMain)
 {
     _bitmexApiProxy = new BitmexApiProxy(bitmexAuthorization);
     _syncObjMain    = syncObjMain;
 }