public ActionResult Admin(int employeeid) { List <TradeViewModel> Tradeviewmodellist = new List <TradeViewModel>(); List <Trade> employeetradelist = TradeService.GetByEmployee(employeeid); using var context = new SqlLiteContext(); List <Trade> tradelist = context.Trades.ToList(); foreach (Trade t in tradelist) { TradeViewModel tvm = new TradeViewModel(); tvm.TradeId = t.TradeId; tvm.EmployeeId = employeeid; tvm.Name = t.Name; tvm.Connected = false; foreach (Trade te in employeetradelist) { if (t.TradeId == te.TradeId) { tvm.Connected = true; } } Tradeviewmodellist.Add(tvm); } var sortedlist = Tradeviewmodellist.OrderBy(foo => foo.Name).ToList(); var model = new BindEmployeeTradeViewModel(sortedlist); return(View(model)); }
public async Task BuyQuantity_SufficientFunds() { // Arrange var cxlToken = new CancellationToken(); var exchangeApi = ExchangeServiceHelper.GetExchangeService(); var exchangeService = new WpfExchangeService(exchangeApi); var tradeViewModel = new TradeViewModel(exchangeService, new DebugLogger()); var symbols = await exchangeService.GetSymbols24HourStatisticsAsync(Exchange.Test, cxlToken); var trx = symbols.Single(s => s.Name.Equals("TRXBTC")); var account = new Account(new Interface.Model.AccountInfo { User = new Interface.Model.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; account = await exchangeService.GetAccountInfoAsync(Exchange.Test, account.AccountInfo.User, cxlToken); var selectedAsset = account.Balances.Single(ab => ab.Asset.Equals("TRX")); tradeViewModel.SetSymbols(symbols.ToList()); tradeViewModel.SetAccount(account); tradeViewModel.SetSymbol(selectedAsset); tradeViewModel.QuoteAccountBalance.Free = 0.00012693M; // Act tradeViewModel.BuyQuantityCommand.Execute(75); // Assert Assert.IsTrue(tradeViewModel.Quantity.Equals(10)); }
public async Task <IActionResult> PostAsync([FromForm] TradeViewModel formData) { try { Trade trade = JsonConvert.DeserializeObject <Trade>(formData.Model); trade.EntyDate = DateTime.Now; trade.UpdateDate = DateTime.Now; var uploads = Path.Combine(_hostingEnvironment.WebRootPath, "uploads"); if (!Directory.Exists(uploads)) { Directory.CreateDirectory(uploads); } trade.SyllbusFileName = formData.syllabussfile?.FileName; var filePath = Path.Combine(uploads, formData.syllabussfile?.FileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { await formData.syllabussfile.CopyToAsync(fileStream); } trade.PlanFileName = formData.planfile?.FileName; var filePath2 = Path.Combine(uploads, trade.PlanFileName); using (var fileStream = new FileStream(filePath2, FileMode.Create)) { await formData.planfile.CopyToAsync(fileStream); } if (_tradeService.Insert(trade)) { return(Ok(trade)); } } catch (System.Exception e) { throw e; } return(Ok(null)); }
public override bool IsIncluded(TradeViewModel trade) { bool up = false; bool includeFlat = true; if (!string.IsNullOrWhiteSpace(ArgumentValue)) { includeFlat = false; } switch (trade.DailyTrend) { case TrendType.Flat: return(includeFlat); case TrendType.Up: case TrendType.SoftUp: case TrendType.HardUp: up = true; break; } return(trade.Direction == TradeDirection.Long ? up : !up); }
public async Task <IViewComponentResult> InvokeAsync(int id) { TradeViewModel tradeView = new TradeViewModel(); using (var db = new ApplicationDbContext()) { tradeView.Trade = db.Trades.Where(t => t.Id == id).Single(); } GetTrade getTrade = new GetTrade(); if (tradeView.Trade != null) { tradeView.Trade.Amount = decimal.Round(tradeView.Trade.Amount, tradeView.Trade.AmountDecimal); tradeView.Trade.TakeProfitPrice = decimal.Round(tradeView.Trade.TakeProfitPrice, tradeView.Trade.PriceDecimal); tradeView.Trade.BuyPrice = decimal.Round(tradeView.Trade.BuyPrice, tradeView.Trade.PriceDecimal); tradeView.CurrentPrice = decimal.Round(await getTrade.CurrentPrice(tradeView.Trade.Market), tradeView.Trade.PriceDecimal); tradeView.CurrentPercentage = tradeView.CurrentPrice - tradeView.Trade.BuyPrice != 0 ? decimal.Round((tradeView.CurrentPrice - tradeView.Trade.BuyPrice) / tradeView.Trade.BuyPrice * 100, 2) : 00.00m; tradeView.BelowZeroPercent = tradeView.CurrentPercentage < 0 ? true : false; tradeView.VisualPercentage = tradeView.CurrentPercentage != 0 ? getTrade.VisualPercent(tradeView.Trade.BuyPrice - (tradeView.Trade.BuyPrice * (tradeView.CurrentPercentage / 100 * 2)), tradeView.Trade.TakeProfitPrice, tradeView.Trade.BuyPrice, tradeView.CurrentPrice) : 00.00m; tradeView.VisualPercentage = tradeView.VisualPercentage < 0 ? tradeView.VisualPercentage * -1m : tradeView.VisualPercentage; tradeView.VisualPercentage = tradeView.VisualPercentage > 100 ? 100m : tradeView.VisualPercentage; return(View(tradeView)); } else { return(await InvokeAsync(id)); } }
public async Task Quantity_and_Price_and_StopPrice_NoTrim() { // Arrange var cxlToken = new CancellationToken(); var exchangeApi = ExchangeServiceHelper.GetExchangeService(); var exchangeService = new WpfExchangeService(exchangeApi); var tradeViewModel = new TradeViewModel(exchangeService); var symbols = await exchangeService.GetSymbols24HourStatisticsAsync(cxlToken); tradeViewModel.SetSymbols(symbols.ToList()); var trx = tradeViewModel.Symbols.Single(s => s.Name.Equals("TRXBTC")); tradeViewModel.SelectedSymbol = trx; var quantity = 294m; var price = 1.12345678m; // Act tradeViewModel.Quantity = quantity; tradeViewModel.Price = price; tradeViewModel.StopPrice = price; // Assert Assert.AreEqual(tradeViewModel.Quantity, quantity.Trim(trx.QuantityPrecision)); Assert.AreEqual(tradeViewModel.Price, price.Trim(trx.PricePrecision)); Assert.AreEqual(tradeViewModel.StopPrice, price.Trim(trx.PricePrecision)); }
public async Task SetAccount() { // Arrange var cxlToken = new CancellationToken(); var exchangeApi = ExchangeServiceHelper.GetExchangeService(); var exchangeService = new WpfExchangeService(exchangeApi); var tradeViewModel = new TradeViewModel(exchangeService); var symbols = await exchangeService.GetSymbols24HourStatisticsAsync(cxlToken); var trx = symbols.Single(s => s.Name.Equals("TRXBTC")); tradeViewModel.SetSymbols(symbols.ToList()); var account = new Account(new Interface.AccountInfo { User = new Interface.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; account = await exchangeService.GetAccountInfoAsync(account.AccountInfo.User.ApiKey, account.AccountInfo.User.ApiSecret, cxlToken); // Act tradeViewModel.SetAccount(account); // Assert Assert.AreEqual(tradeViewModel.Account, account); Assert.AreEqual(tradeViewModel.SelectedOrderType, null); Assert.IsNull(tradeViewModel.SelectedSymbol); }
public async Task<ActionResult<TradeViewModel>> Add(TradeViewModel tradeViewModel) { try { if (!ModelState.IsValid) return CustomResponse(ModelState); if (tradeViewModel.Value >= 1000000 && tradeViewModel.Sector.Description == "Public") { tradeViewModel.Category = await _categoryRepository.GetCategoryByInitials("B"); } else if (tradeViewModel.Value >= 1000000 && tradeViewModel.Sector.Description == "Private") { tradeViewModel.Category = await _categoryRepository.GetCategoryByInitials("C"); } else { tradeViewModel.Category = await _categoryRepository.GetCategoryByInitials("A"); } //await _tradeService.Add(_mapper.Map<Trade>(tradeViewModel)); await _tradeRepository.AddTradeWithSector(_mapper.Map<Trade>(tradeViewModel)); return CustomResponse(tradeViewModel); } catch (Exception ex) { throw new Exception(ex.ToString()); } }
public async Task OrderTypes_SelectedSymbol() { // Arrange var cxlToken = new CancellationToken(); var exchangeApi = ExchangeServiceHelper.GetExchangeService(); var exchangeService = new WpfExchangeService(exchangeApi); var tradeViewModel = new TradeViewModel(exchangeService); var symbols = await exchangeService.GetSymbols24HourStatisticsAsync(cxlToken); var trx = symbols.Single(s => s.Name.Equals("TRXBTC")); tradeViewModel.SetSymbols(symbols.ToList()); tradeViewModel.SelectedSymbol = trx; // Act var orderTypes = tradeViewModel.OrderTypes; // Assert Assert.AreEqual(tradeViewModel.SelectedSymbol, trx); var missing = InterfaceExtensions.OrderExtensions.OrderTypes().Except(tradeViewModel.OrderTypes).ToList(); foreach (var orderType in missing) { if (orderType != InterfaceExtensions.OrderExtensions.GetOrderTypeName(Interface.OrderType.StopLoss) && orderType != InterfaceExtensions.OrderExtensions.GetOrderTypeName(Interface.OrderType.TakeProfit)) { Assert.Fail(); } } }
public async Task SellQuantity() { // Arrange var cxlToken = new CancellationToken(); var exchangeApi = ExchangeServiceHelper.GetExchangeService(); var exchangeService = new WpfExchangeService(exchangeApi); var tradeViewModel = new TradeViewModel(exchangeService); var symbols = await exchangeService.GetSymbols24HourStatisticsAsync(cxlToken); var trx = symbols.Single(s => s.Name.Equals("TRXBTC")); var account = new Account(new Interface.AccountInfo { User = new Interface.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; account = await exchangeService.GetAccountInfoAsync(account.AccountInfo.User.ApiKey, account.AccountInfo.User.ApiSecret, cxlToken); var selectedAsset = account.Balances.Single(ab => ab.Asset.Equals("TRX")); tradeViewModel.SetSymbols(symbols.ToList()); tradeViewModel.SetAccount(account); tradeViewModel.SetSymbol(selectedAsset); // Act tradeViewModel.SellQuantityCommand.Execute(75); // Assert Assert.IsTrue(tradeViewModel.Quantity.Equals((selectedAsset.Free * 0.75m).Trim(trx.QuantityPrecision))); }
public bool UpdateTrade(TradeViewModel tradeViewModel) { var trade = mapViewTradeToDbTradeModel(tradeViewModel); _booksDealersRepository.UpdateTrade(trade); return(_booksDealersRepository.Save()); }
public async Task <IActionResult> MarketOrder(TradeViewModel model) { // if tripwire tripped cancel if (!_tripwire.TradingEnabled()) { _logger.LogError("Tripwire tripped, exiting MarketOrder()"); this.FlashError($"Trading not enabled"); return(RedirectToAction("Trade", new { market = model.Market })); } (var success, var error) = Utils.ValidateOrderParams(_settings, model.Order, null, marketOrder: true); if (!success) { return(FlashErrorAndRedirect("Trade", model.Market, error)); } var user = await GetUser(required : true); // lock process of performing trade lock (_userLocks.GetLock(user.Id)) { try { //TODO: move this to a ViaRpcProvider in /Services (like IWalletProvider) var via = new ViaJsonRpc(_settings.AccessHttpUrl); (var side, var error2) = Utils.GetOrderSide(model.Order.Side); if (error2 != null) { return(BadRequest(error2)); } Order order; if (!_settings.MarketOrderBidAmountMoney) { order = via.OrderMarketQuery(user.Exchange.Id, model.Market, side, model.Order.Amount, _settings.TakerFeeRate, "viafront", _settings.MarketOrderBidAmountMoney); } else { order = via.OrderMarketQuery(user.Exchange.Id, model.Market, side, model.Order.Amount, _settings.TakerFeeRate, "viafront"); } // send email: order created var amountUnit = _settings.Markets[model.Market].AmountUnit; this.FlashSuccess($"Market Order Created ({order.market} - {order.side}, Amount: {order.amount} {amountUnit})"); return(RedirectToAction("Trade", new { market = model.Market })); } catch (ViaJsonException ex) { if (ex.Err == ViaError.PUT_MARKET__BALANCE_NOT_ENOUGH) { this.FlashError($"Market Order Failed (balance too small)"); return(RedirectToAction("Trade", new { market = model.Market, side = model.Order.Side, amount = model.Order.Amount })); } if (ex.Err == ViaError.PUT_MARKET__NO_ENOUGH_TRADER) { this.FlashError($"Market Order Failed (insufficient market depth)"); return(RedirectToAction("Trade", new { market = model.Market, side = model.Order.Side, amount = model.Order.Amount })); } throw; } } }
public async Task <ActionResult <Trade> > setOfferToTrade(TradeViewModel tradeViewModel) { if (tradeViewModel is null) { throw new ArgumentNullException(nameof(tradeViewModel)); } return(await _businessLayer.setOfferToTrade(tradeViewModel)); }
public TestTradesView() { InitializeComponent(); model = new TradeModel(); viewModel = new TradeViewModel(model); grdTest.ItemsSource = new [] { viewModel }; }
public IActionResult UserInspectTrades(string id, string market) { var user = GetUser(required: true).Result; var userInspect = _userManager.FindByIdAsync(id).Result; ViewData["userid"] = id; return(View(TradeViewModel.Construct(user, userInspect, market, null, null, null, _settings))); }
public override bool IsIncluded(TradeViewModel trade) { return(trade.Direction == TradeDirection.Long ? trade.UpCrossRecentIndex > -1 && trade.UpCrossPriorIndex > -1 && trade.UpCrossRecentValue > trade.UpCrossPriorValue && trade.UpCrossRecentPrice <trade.UpCrossPriorPrice : trade.DownCrossRecentIndex> -1 && trade.DownCrossPriorIndex > -1 && trade.DownCrossRecentValue < trade.DownCrossPriorValue && trade.DownCrossRecentPrice > trade.DownCrossPriorPrice); }
public async Task Buy_Fails_PlaceOrder() { // Arrange var cxlToken = new CancellationToken(); var exchangeApi = ExchangeServiceHelper.GetExchangeService(ExchangeServiceType.PlaceOrderException); var exchangeService = new WpfExchangeService(exchangeApi); var tradeViewModel = new TradeViewModel(exchangeService); var symbols = await exchangeService.GetSymbols24HourStatisticsAsync(cxlToken); var trx = symbols.Single(s => s.Name.Equals("TRXBTC")); var account = new Account(new Interface.AccountInfo { User = new Interface.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; account = await exchangeService.GetAccountInfoAsync(account.AccountInfo.User.ApiKey, account.AccountInfo.User.ApiSecret, cxlToken); var selectedAsset = account.Balances.Single(ab => ab.Asset.Equals("TRX")); tradeViewModel.SetSymbols(symbols.ToList()); tradeViewModel.SetAccount(account); tradeViewModel.SetSymbol(selectedAsset); tradeViewModel.QuoteAccountBalance.Free = 0.00012693M; tradeViewModel.SelectedOrderType = "Limit"; tradeViewModel.Quantity = 200m; tradeViewModel.Price = 0.00000900M; tradeViewModel.QuoteAccountBalance.Free = 200m * 0.00000900M; var tradeObservable = Observable.FromEventPattern <TradeEventArgs>( eventHandler => tradeViewModel.OnTradeNotification += eventHandler, eventHandler => tradeViewModel.OnTradeNotification -= eventHandler) .Select(eventPattern => eventPattern.EventArgs); Exception ex = null; tradeObservable.Subscribe(args => { if (args.HasException) { ex = args.Exception; } }); // Act tradeViewModel.BuyCommand.Execute(null); // Assert Assert.IsNotNull(ex); Assert.IsTrue(ex.Message.Contains("failed to place order")); }
public override bool IsIncluded(TradeViewModel trade) { if (!double.TryParse(ArgumentValue, out double value)) { return(false); } return(trade.ADX >= value); }
/// <summary> /// This accepts a TradeViewModel which has the player id and /// the card the player offered up. sets active to true. /// </summary> /// <param name="tradeViewModel"></param> /// <returns></returns> public async Task <ActionResult <Trade> > setUpATrade(TradeViewModel tradeViewModel) { Trade trade = new Trade(); trade.postPlayer = tradeViewModel.playerId; trade.postPlayerCardOffer = tradeViewModel.playerCardOffer; trade.active = true; return(await _gameRepositoryLayer.setUpATrade(trade)); }
public IActionResult UpdateTrade([FromBody] TradeViewModel trade, int id) { var updated = _tradeService.UpdateTrade(trade); if (updated) { return(NoContent()); } return(NotFound()); }
public async Task Sell_Pass() { // Arrange var cxlToken = new CancellationToken(); var exchangeApi = ExchangeServiceHelper.GetExchangeService(); var exchangeService = new WpfExchangeService(exchangeApi); var tradeViewModel = new TradeViewModel(exchangeService, new DebugLogger()); var symbols = await exchangeService.GetSymbols24HourStatisticsAsync(Exchange.Test, cxlToken); var trx = symbols.Single(s => s.Name.Equals("TRXBTC")); var account = new Account(new Core.Model.AccountInfo { User = new Core.Model.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; account = await exchangeService.GetAccountInfoAsync(Exchange.Test, account.AccountInfo.User, cxlToken); var selectedAsset = account.Balances.Single(ab => ab.Asset.Equals("TRX")); tradeViewModel.SetSymbols(symbols.ToList()); tradeViewModel.SetAccount(account); tradeViewModel.SetSymbol(selectedAsset); tradeViewModel.QuoteAccountBalance.Free = 0.00012693M; tradeViewModel.SelectedOrderType = "Limit"; tradeViewModel.Quantity = tradeViewModel.BaseAccountBalance.Free; tradeViewModel.Price = 0.00000850M; var tradeObservable = Observable.FromEventPattern <TradeEventArgs>( eventHandler => tradeViewModel.OnTradeNotification += eventHandler, eventHandler => tradeViewModel.OnTradeNotification -= eventHandler) .Select(eventPattern => eventPattern.EventArgs); Exception ex = null; tradeObservable.Subscribe(args => { if (args.HasException) { ex = args.Exception; } }); // Act tradeViewModel.SellCommand.Execute(null); // Assert Assert.IsNull(ex); }
public override bool IsIncluded(TradeViewModel trade) { if (!double.TryParse(ArgumentValue, out double value)) { return(false); } return(trade.Direction == TradeDirection.Long ? trade.UpCrossRecentIndex > -1 && trade.UpCrossPriorIndex > -1 && Math.Abs(trade.UpCrossRecentPrice - trade.UpCrossPriorPrice) >= value : trade.DownCrossRecentIndex > -1 && trade.DownCrossPriorIndex > -1 && Math.Abs(trade.DownCrossRecentPrice - trade.DownCrossPriorPrice) >= value); }
public override bool IsIncluded(TradeViewModel trade) { if (!int.TryParse(ArgumentValue, out int value)) { return(false); } return(trade.Direction == TradeDirection.Long ? (trade.UpCrossRecentIndex != -1 && trade.UpCrossRecentIndex < value) : (trade.DownCrossRecentIndex != -1 && trade.DownCrossRecentIndex < value)); }
public override bool IsIncluded(TradeViewModel trade) { if (!int.TryParse(ArgumentValue, out int value)) { return(false); } return(trade.Direction == TradeDirection.Long ? trade.DownIdx < trade.UpIdx || (trade.DownIdx - trade.UpIdx <= value) : trade.DownIdx > trade.UpIdx || (trade.UpIdx - trade.DownIdx <= value)); }
public override bool IsIncluded(TradeViewModel trade) { if (!double.TryParse(ArgumentValue, out double value)) { return(false); } return(trade.Direction == TradeDirection.Long ? trade.MACD <-value : trade.MACD> value); }
// public NewTrade() { } public NewTrade(ApplicationUser user, TradeViewModel model) : base(user) { TradeNumber = model.Id; Model = model; Trade = true; Promo = true; Link = $"https://ptp.ua/trade/showcurrenttrades?trade=trade-{model.Id}"; Subject = "[Торги № " + TradeNumber + "] " + LocalText.Inst.Get("emailSubject", this.ToString(), "Нові торги", "Новые торги", user.Locale); Send = IsSend(user); // SendMessage(); }
// public NewTrade() { } /// <summary> /// Уведомление всех о новой заявке на покупку /// </summary> /// <param name="user"></param> /// <param name="trade"></param> public NewOrder(ApplicationUser user, TradeViewModel trade) : base(user) { TradeNumber = trade.Id; Model = trade; Trade = true; // Promo = true; Link = $"https://ptp.ua/trade/showcurrenttrades?trade=trade-{trade.Id}"; Subject = LocalText.Inst.Get("emailSubject", this.ToString(), "Нова заявка", "Новая заявка", user.Locale); Send = IsSend(user); //SendMessage(); }
public override bool IsIncluded(TradeViewModel trade) { if (!int.TryParse(ArgumentValue, out int value)) { return(false); } return(trade.Direction == TradeDirection.Long ? trade.H4Rsi <= value : trade.H4Rsi >= (100 - value)); }
public async Task <IActionResult> GetAllTrades() { var userId = this.GetUserId(); var trades = await _dbContext.Trades .Where(r => r.UserId == userId) .ToListAsync(); var vm = trades.Select(t => TradeViewModel.FromDataModel(t)).ToList(); return(Ok(vm)); }
public override bool IsIncluded(TradeViewModel trade) { var distanceFromLow = trade.EntryPrice - trade.Low; var distanceFromHigh = trade.High - trade.EntryPrice; var bullish = distanceFromLow > 0 && distanceFromHigh / distanceFromLow <= 0.33; var bearish = distanceFromHigh > 0 && distanceFromLow / distanceFromHigh <= 0.33; return(trade.Direction == TradeDirection.Long ? bullish : bearish); }