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));
        }
Esempio n. 3
0
 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));
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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());
            }
        }
Esempio n. 9
0
        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();
                }
            }
        }
Esempio n. 10
0
        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)));
        }
Esempio n. 11
0
        public bool UpdateTrade(TradeViewModel tradeViewModel)
        {
            var trade = mapViewTradeToDbTradeModel(tradeViewModel);

            _booksDealersRepository.UpdateTrade(trade);
            return(_booksDealersRepository.Save());
        }
Esempio n. 12
0
        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;
                }
            }
        }
Esempio n. 13
0
 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 };
        }
Esempio n. 15
0
        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)));
        }
Esempio n. 16
0
 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);
 }
Esempio n. 17
0
        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"));
        }
Esempio n. 18
0
        public override bool IsIncluded(TradeViewModel trade)
        {
            if (!double.TryParse(ArgumentValue, out double value))
            {
                return(false);
            }

            return(trade.ADX >= value);
        }
Esempio n. 19
0
        /// <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));
        }
Esempio n. 20
0
        public IActionResult UpdateTrade([FromBody] TradeViewModel trade, int id)
        {
            var updated = _tradeService.UpdateTrade(trade);

            if (updated)
            {
                return(NoContent());
            }
            return(NotFound());
        }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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));
        }
Esempio n. 24
0
        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));
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
 //  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();
 }
Esempio n. 27
0
 //  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();
 }
Esempio n. 28
0
        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));
        }
Esempio n. 29
0
        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));
        }
Esempio n. 30
0
        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);
        }