public async Task <OrderInfo> GetOrderInfo(long accountLogin, long orderId) { var accountModel = await _tradingAccountsService.GetAccountModelByLogin(accountLogin); var order = accountModel.PendingOrders.FirstOrDefault(order => order.Id == orderId); if (order is null) { return(null); } return(new OrderInfo { Id = order.Id, Direction = order.TradeSide.ToString(), SymbolName = order.Symbol.Name, Comment = order.Comment, Volume = MonetaryConverter.FromMonetary(order.Volume), HasStopLoss = order.IsStopLossEnabled, StopLossInPips = order.StopLossInPips, HasTakeProfit = order.IsTakeProfitEnabled, TakeProfitInPips = order.TakeProfitInPips, HasTrailingStop = order.IsTrailingStopLossEnabled, HasExpiry = order.IsExpiryEnabled, Expiry = order.ExpiryTime, Type = order.Type.ToString(), LimitRange = Convert.ToInt64(order.LimitRangeInPips), Price = order.Price }); }
public async Task GetSymbols(string accountLogin) { if (string.IsNullOrWhiteSpace(accountLogin)) { return; } var accountModel = await _tradingAccountsService.GetAccountModelByLogin(Convert.ToInt64(accountLogin)); await Clients.Caller.SendAsync("Symbols", new { accountLogin, Symbols = accountModel.Symbols.Where(symbol => symbol.Data.TradingMode == ProtoOATradingMode.Enabled).Select(symbol => new { symbol.Name, symbol.Bid, symbol.Ask, symbol.Id, symbol.PipSize, MinVolume = MonetaryConverter.FromMonetary(symbol.Data.MinVolume), MaxVolume = MonetaryConverter.FromMonetary(symbol.Data.MaxVolume), StepVolume = MonetaryConverter.FromMonetary(symbol.Data.StepVolume), }) }); }
public async Task <PositionInfo> GetPositionInfo(long accountLogin, long positionId) { var accountModel = await _tradingAccountsService.GetAccountModelByLogin(accountLogin); var position = accountModel.Positions.FirstOrDefault(position => position.Id == positionId); if (position is null) { return(null); } return(new PositionInfo { Id = position.Id, Direction = position.TradeSide.ToString(), SymbolName = position.Symbol.Name, Comment = position.Comment, Volume = MonetaryConverter.FromMonetary(position.Volume), HasStopLoss = position.IsStopLossEnabled, StopLossInPips = position.StopLossInPips, HasTakeProfit = position.IsTakeProfitEnabled, TakeProfitInPips = position.TakeProfitInPips, HasTrailingStop = position.IsTrailingStopLossEnabled, IsMarketRange = position.IsMarketRange }); }
public static long LotsToUnitsMonetary(double volumeInLots, long lotsInUnitsMonetary) { var lotsInUnits = MonetaryConverter.FromMonetary(lotsInUnitsMonetary); var volumeInUnits = volumeInLots * lotsInUnits; return(MonetaryConverter.ToMonetary(volumeInUnits)); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is null) { return(0); } var monetary = System.Convert.ToInt64(value); return(MonetaryConverter.FromMonetary(monetary)); }
public static double UnitsMonetaryToLots(long volumeInUnitsMonetary, long lotsInUnitsMonetary) { var lotsInUnits = MonetaryConverter.FromMonetary(lotsInUnitsMonetary); return(MonetaryConverter.FromMonetary(volumeInUnitsMonetary) / lotsInUnits); }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return(value == null ? 0 : MonetaryConverter.ToMonetary(System.Convert.ToInt64(value))); }