private async Task PrepareForMarketShift(MarketInfo marketInfo) { await _bitmexApiService.Execute(BitmexApiUrls.Order.DeleteOrderAll, new OrderAllDELETERequestParams { Symbol = marketInfo.Market }); await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.ClosePositionByMarket(marketInfo.Market)); await SetLeverage(marketInfo.Market, marketInfo.Leverage); }
private void DeleteAllOrders() { var @params = new OrderAllDELETERequestParams() { Symbol = "XBTUSD" }; Container.Resolve <IBitmexApiService>().Execute(BitmexApiUrls.Order.DeleteOrderAll, @params).Wait(); Container.Resolve <IBitmexApiService>().Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.ClosePositionByMarket("XBTUSD")).Wait(); }
private static async Task PlayWithBitmex() { try { const string market = "XBTUSD"; var bitmexAuthorization = new BitmexAuthorization(); bitmexAuthorization.BitmexEnvironment = BitmexEnvironment.Test; bitmexAuthorization.Key = "wcZtcAiFMff8kLWaSLl8U877"; bitmexAuthorization.Secret = "uOtP5-0sEtiis5d1_Qv1-LW8FLsV3qW9Qsmsf_OWBXVzw-c3"; _bitmexApiService = BitmexApiService.CreateDefaultApi(bitmexAuthorization); await _bitmexApiService.Execute(BitmexApiUrls.Order.DeleteOrderAll, new OrderAllDELETERequestParams { Symbol = "BCHU18" }); var bitcoinOrderBook = await _bitmexApiService.Execute(BitmexApiUrls.OrderBook.GetOrderBookL2, new OrderBookL2GETRequestParams { Depth = 1, Symbol = market }); var currentPrice = Math.Round((bitcoinOrderBook[0].Price + bitcoinOrderBook[1].Price) / 2); var stopSellOrder = await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.CreateLimitStopOrder(market, 1500, 6500, 6467, OrderSide.Buy)); var positions = await _bitmexApiService.Execute(BitmexApiUrls.Position.GetPosition, new PositionGETRequestParams { Count = 50 }); var positionLeveragePostRequestParams = new PositionLeveragePOSTRequestParams(); positionLeveragePostRequestParams.Leverage = 50; positionLeveragePostRequestParams.Symbol = market; /*var positionDto = await bitmexApiService.Execute(BitmexApiUrls.Position.PostPositionLeverage, * positionLeveragePostRequestParams);*/ foreach (var position in positions) { await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.ClosePositionByMarket(market)); } var positionDto = await _bitmexApiService.Execute(BitmexApiUrls.Position.PostPositionLeverage, positionLeveragePostRequestParams); var initialOrder = await CreateLimitOrder(market, 1500, currentPrice, OrderSide.Sell); var round = Math.Round((decimal)initialOrder.Price * 0.9M, 0); var stopOrder = await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.CreateSimpleHidenLimit(market, 1500, round, OrderSide.Buy)); var stopLoss = await CreateLimitOrder(market, 1500, currentPrice + 40, OrderSide.Sell); } catch (Exception e) { Console.WriteLine(e); } }
public void should_close_short_martket_position_by_market() { // arrange var @params = OrderPOSTRequestParams.CreateSimpleMarket("XBTUSD", 3, OrderSide.Sell); var result = Sut.Execute(BitmexApiUrls.Order.PostOrder, @params).Result.Result; result.Should().NotBeNull(); result.OrdStatus.Should().Be("Filled"); result.OrderId.Should().NotBeNull(); // act var resultClosePostion = Sut.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.ClosePositionByMarket("XBTUSD")).Result.Result; // assert resultClosePostion.Should().NotBeNull(); resultClosePostion.OrderId.Should().NotBeNull(); }
public async Task <string> GoLong(MarketInfo marketInfo) { await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.ClosePositionByMarket(marketInfo.Market)); await SetLeverage(marketInfo.Market, marketInfo.Leverage); var buyPrice = await GetCurrentPrice(marketInfo.Market); var orderDto = await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.CreateSimpleLimit(marketInfo.Market, marketInfo.Quantity, buyPrice, OrderSide.Buy)); var stopPrice = Math.Round((decimal)orderDto.Price * 1.005M, 0); //await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.CreateSimpleHidenLimit(marketInfo.Market, marketInfo.Quantity, buyPrice - 50, OrderSide.Buy)); await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.CreateSimpleHidenLimit(marketInfo.Market, marketInfo.Quantity, stopPrice, OrderSide.Sell)); return($"Bought {orderDto.OrderQty} {marketInfo.Market} at {orderDto.Price}, stop order set to {stopPrice}"); }
private async Task PrepareForMarketShift(TradeInfo tradeInfo) { try { await _bitmexApiService.Execute(BitmexApiUrls.Order.DeleteOrderAll, new OrderAllDELETERequestParams { Symbol = tradeInfo.Symbol }); await _bitmexApiService.Execute(BitmexApiUrls.Order.PostOrder, OrderPOSTRequestParams.ClosePositionByMarket(tradeInfo.Symbol)); await SetLeverage(tradeInfo.Symbol, tradeInfo.Leverage); } catch (Exception e) { Logger.Error(e.ToString()); } }