public async Task <bool> TryInsertAsync(ITradingInstrument tradingInstrument)
        {
            using (var conn = new SqlConnection(_connectionString))
            {
                try
                {
                    if (null != await conn.QueryFirstOrDefaultAsync <TradingInstrumentEntity>(
                            $"SELECT * FROM {TableName} WHERE TradingConditionId=@tradingConditionId AND Instrument=@assetPairId",
                            new
                    {
                        tradingConditionId = tradingInstrument.TradingConditionId,
                        assetPairId = tradingInstrument.Instrument
                    }))
                    {
                        return(false);
                    }

                    await conn.ExecuteAsync(
                        $"insert into {TableName} ({GetColumns}) values ({GetFields})",
                        _convertService.Convert <ITradingInstrument, TradingInstrumentEntity>(tradingInstrument));
                }
                catch (Exception ex)
                {
                    _log?.WriteWarningAsync(nameof(AssetPairsRepository), nameof(TryInsertAsync),
                                            $"Failed to insert a trading instrument with assetPairId {tradingInstrument.Instrument} and tradingConditionId {tradingInstrument.TradingConditionId}", ex);
                    return(false);
                }

                return(true);
            }
        }
示例#2
0
文件: FplService.cs 项目: alpo-8/MT
        private (decimal MarginInit, decimal MarginMaintenance) GetMargins(ITradingInstrument tradingInstrument,
                                                                           decimal volumeForCalculation, decimal marginRate, bool isWarnCheck = false)
        {
            var(marginInit, marginMaintenance) = _tradingInstrumentsCache.GetMarginRates(tradingInstrument, isWarnCheck);

            return(volumeForCalculation * marginRate * marginInit,
                   volumeForCalculation *marginRate *marginMaintenance);
        }
 public async Task UpdateAsync(ITradingInstrument tradingInstrument)
 {
     using (var conn = new SqlConnection(_connectionString))
     {
         await conn.ExecuteAsync(
             $"update {TableName} set {GetUpdateClause} where TradingConditionId=@TradingConditionId AND Instrument=@Instrument",
             _convertService.Convert <ITradingInstrument, TradingInstrumentEntity>(tradingInstrument));
     }
 }