internal static void AddTradeMode(OrderRequestParameters parameters, IList <SettingItem> settings, OKExTradeMode?tradeMode = null, int index = 0) { var isCryptoSymbol = parameters.Symbol.SymbolType == SymbolType.Crypto; var items = new List <SelectItem>(); if (isCryptoSymbol) { items.Add(new SelectItem(loc._("Cash"), (int)OKExTradeMode.Cash)); } items.Add(new SelectItem(loc._("Cross"), (int)OKExTradeMode.Cross)); items.Add(new SelectItem(loc._("Isolated"), (int)OKExTradeMode.Isolated)); var defaultTradeMode = tradeMode ?? (isCryptoSymbol ? OKExTradeMode.Cash : OKExTradeMode.Cross); settings.Add(new SettingItemSelectorLocalized(TRADE_MODE_TYPE, new SelectItem("", (int)defaultTradeMode), items) { Text = loc._("Trade mode"), SortIndex = index }); if (isCryptoSymbol) { settings.Add(new SettingItemSelector(MARGIN_CURRENCY, parameters.Symbol.Product.Id, new List <string>() { parameters.Symbol.Product.Id, parameters.Symbol.QuotingCurrency.Id }, index) { Text = loc._("Margin currency"), Relation = new SettingItemRelationVisibility(TRADE_MODE_TYPE, new SelectItem(loc._("Cross"), (int)OKExTradeMode.Cross)) }); } }
public override IList <SettingItem> GetOrderSettings(OrderRequestParameters parameters, FormatSettings formatSettings) { var settings = base.GetOrderSettings(parameters, formatSettings); if (parameters.Type == RequestType.PlaceOrder) { if (parameters.Symbol.SymbolType != SymbolType.Options) { OKExOrderTypeHelper.AddTradeMode(parameters, settings); if (parameters.Symbol.SymbolType == SymbolType.Crypto) { OKExOrderTypeHelper.AddReduceOnly(settings); } else if (parameters.Symbol.SymbolType != SymbolType.Options) { OKExOrderTypeHelper.AddOrderBehaviour(settings); } } OKExOrderTypeHelper.AddComment(settings, string.Empty); } return(settings); }
private static SettingItem CreatePriceBasedSettingItem(OrderRequestParameters parameters, string name, double value, int index) { if (double.IsNaN(value)) { value = 0; } double increment = 1; int decimalPlaces = 0; var variableTick = parameters.Symbol.FindVariableTick(0); if (variableTick != null) { increment = variableTick.TickSize; decimalPlaces = variableTick.Precision; } return(new SettingItemDouble(name, value, index) { Minimum = 0, Maximum = double.MaxValue, Increment = increment, DecimalPlaces = decimalPlaces, }); }
public async Task <OrdersResponseModel> GetOrdersForAdmin(OrdersRequestModel requestModel) { OrderRequestParameters parameters = requestModel.MapToRequestParameters(); (List <Order> orders, int count) = await _orderRepository.GetByParmeters(parameters); List <OrderModel> orderModels = orders.Select(item => new OrderModel(item)).ToList(); OrdersResponseModel response = new OrdersResponseModel() { OrderModels = orderModels, Count = count }; return(response); }
/*sample parameter:{"CustomerId":"1","UserId":"2","OrderId":3}*/ public async Task <IHttpActionResult> GetCustomerCurrentOrders([FromBody] OrderRequestParameters parameters) { if (parameters != null) { var result = parameters.OrderId > 0 ? await _service.GetCustomerCurrentOrders(parameters.CustomerId, parameters.UserId, parameters.OrderId) : await _service.GetCustomerCurrentOrders(parameters.CustomerId, parameters.UserId); if (result == null) { NotFound(); } return(Ok(result)); } return(BadRequest()); }
public OrderRequestParameters MapToRequestParameters() { OrderRequestParameters parameters = new OrderRequestParameters(); if (Page != 0) { parameters.Page = Page; } if (PageSize != 0) { parameters.PageSize = PageSize; } if (!string.IsNullOrWhiteSpace(KeyWord)) { parameters.KeyWord = KeyWord; } return(parameters); }
public async Task <(List <Order>, int)> GetByParmeters(OrderRequestParameters parameters) { int skipCount = (parameters.Page - 1) * parameters.PageSize; SqlBuilder sqlBuilder = new SqlBuilder(); SqlBuilder.Template countExpression = sqlBuilder.AddTemplate( $@"SELECT COUNT (DISTINCT Orders.Id) FROM Orders LEFT JOIN AspNetUsers ON Orders.ApplicationUserId = AspNetUsers.Id /**where**/"); SqlBuilder.Template itemsExpression = sqlBuilder.AddTemplate( $@"SELECT * FROM (SELECT DISTINCT Orders.* FROM Orders LEFT JOIN AspNetUsers ON Orders.ApplicationUserId = AspNetUsers.Id /**where**/ /**orderby**/) AS FilteredOrders LEFT JOIN AspNetUsers ON FilteredOrders.ApplicationUserId = AspNetUsers.Id WHERE FilteredOrders.ApplicationUserId NOT IN (SELECT AspNetUsers.Id FROM AspNetUsers WHERE AspNetUsers.IsRemoved = 1)"); if (!string.IsNullOrWhiteSpace(parameters.KeyWord)) { parameters.KeyWord = parameters.KeyWord.ToLower(); sqlBuilder.Where($@"LOWER(AspNetUsers.FirstName + ' ' + AspNetUsers.FirstName + ' ' + AspNetUsers.UserName ) LIKE '%' + @KeyWord + '%'"); } int count = await _connection.ExecuteScalarAsync <int>(countExpression.RawSql, parameters); sqlBuilder.OrderBy($"Orders.Id OFFSET @Skip ROWS FETCH NEXT @PageSize ROWS ONLY"); List <Order> result = await _connection.QueryAsync <Order, ApplicationUser, Order>(itemsExpression.RawSql, (order, applicationUser) => { order.ApplicationUser = applicationUser; return(order); }, parameters) as List <Order>; return(result, count); }
internal static void AddStopLoss(OrderRequestParameters parameters, IList <SettingItem> settings, OKExSLTPType type = OKExSLTPType.Market, int index = 0) { settings.Add(new SettingItemSelectorLocalized(STOP_LOSS_TYPE, new SelectItem("", (int)type), new List <SelectItem>() { new SelectItem(loc._("Market"), (int)OKExSLTPType.Market), new SelectItem(loc._("Limit"), (int)OKExSLTPType.Limit), }) { Text = loc._("Stop loss type"), SortIndex = index }); var triggerPriceSI = CreatePriceBasedSettingItem(parameters, STOP_LOSS_TRIGGER_PRICE, parameters.Symbol.Last, index); triggerPriceSI.Text = loc._("SL trigger price"); triggerPriceSI.Relation = new SettingItemRelationVisibility(STOP_LOSS_TYPE, new SelectItem("Market", (int)OKExSLTPType.Market), new SelectItem("Limit", (int)OKExSLTPType.Limit)); var priceSI = CreatePriceBasedSettingItem(parameters, STOP_LOSS_PRICE, parameters.Symbol.Last, index); priceSI.Text = loc._("SL price"); priceSI.Relation = new SettingItemRelationVisibility(STOP_LOSS_TYPE, new SelectItem("Limit", (int)OKExSLTPType.Limit)); settings.Add(triggerPriceSI); settings.Add(priceSI); }
public async Task <(List <Order>, int)> GetByParmeters(OrderRequestParameters parameters) { IQueryable <Order> orders = _dbSet.Include(item => item.ApplicationUser); orders = orders.Where(item => !item.ApplicationUser.IsRemoved); if (!string.IsNullOrWhiteSpace(parameters.KeyWord)) { orders = orders.Where(item => item.ApplicationUser.UserName.Contains(parameters.KeyWord) || item.ApplicationUser.FirstName.Contains(parameters.KeyWord) || item.ApplicationUser.LastName.Contains(parameters.KeyWord)); } int count = await orders.CountAsync(); int countToSkip = (--parameters.Page) * parameters.PageSize; orders = orders.Skip(countToSkip).Take(parameters.PageSize); List <Order> response = await orders.ToListAsync(); return(response, count); }
public override double GetFillPrice(OrderRequestParameters parameters) { return(default);