public void EnqueueUpdateDealsLog(int botID) { if (!IsNeedSendUserDealsLog(botID)) { return; } var res = _dictBotIdConnId.FirstOrDefault(a => a.Key == botID); if (res.Key == 0) { return; //not found } int connId = res.Value; CUserDealsLogUpdate udl = new CUserDealsLogUpdate(); lock (_client.UserDealsPosBox.DictUserDealsLog) { if (_client.UserDealsPosBox.DictUserDealsLog.ContainsKey(botID)) { var userDealsLog = _client.UserDealsPosBox.DictUserDealsLog[botID]; foreach (var kvp in userDealsLog) { udl.DictLog[kvp.Key] = new List <CUserDeal>(); foreach (var v in kvp.Value) { CUserDeal userDeal = v; string instrument = kvp.Key; //userDeal.Decimals = _client.Instruments.GetDecimals(instrument); int decimals = _client.Instruments.GetDecimals(instrument); userDeal.PriceSt = v.Price.ToString("N0" + decimals); //userDeal.PriceSt = _client.Instruments. udl.DictLog[kvp.Key].Add(userDeal); } } } } _bqTraderData.Add(new CTradingData { ConnId = connId, Data = (object)udl, Event = enmTradingEvent.UserUpdateDealsLog } ); //CUserD }
/// <summary> /// Update deal's history log /// </summary> /// <param name="instrument"></param> /// <param name="rd"></param> private void UpdateDealsData(string instrument, CRawUserDeal rd) { CUserDeal userDeal = null; long timeMili = 0; CUserDeal dealWithSameId = null; int botId = (int)(rd.Ext_id_buy > 0 ? rd.Ext_id_buy : rd.Ext_id_sell); lock (DictUserDealsLog) { if (!DictUserDealsLog.ContainsKey(botId)) { DictUserDealsLog[botId] = new Dictionary <string, List <CUserDeal> >(); } if (!DictUserDealsLog[botId].ContainsKey(instrument)) { DictUserDealsLog[botId][instrument] = new List <CUserDeal>(); } dealWithSameId = DictUserDealsLog[botId][instrument].FirstOrDefault(a => a.ReplId == rd.ReplId); //deal doesn't have the same id if (dealWithSameId == null) { EnmDealDir dd = rd.Ext_id_buy > 0 ? EnmDealDir.Buy : EnmDealDir.Sell; userDeal = new CUserDeal { ReplId = rd.ReplId, Amount = rd.Amount, Moment = rd.Moment, Price = rd.Price, BuySell = dd, Fee = rd.Fee_buy + rd.Fee_sell, DealId = rd.Id_Deal //2018-06-13 }; DictUserDealsLog[botId][instrument].Add((CUserDeal)userDeal); // Plaza2Connector.TriggerRecalculateBot(botId, EnmBotEventCode.OnUserDeal, timeMili = CUtilTime.GetUnixTimestampMillis(userDeal.Moment); LatestDealsData.Update(botId, instrument, new CLatestTradeData { Dt_timestamp_ms = timeMili, ReplId = rd.ReplId, Dt = rd.Moment } ); CDBUserDeal dbUSerDeal = new CDBUserDeal(); CUtil.CopyObjProperties(userDeal, dbUSerDeal); dbUSerDeal.Instrument = instrument; dbUSerDeal.account_trade_Id = (int)botId; dbUSerDeal.stock_exch_id = UserDealsPosBoxClient.StockExchId; //StockExchangeId; dbUSerDeal.ReplId = rd.ReplId; dbUSerDeal.DealId = rd.Id_Deal; //2018-05-31 dbUSerDeal.Fee = rd.Fee_buy + rd.Fee_sell; //2018-05-31 UserDealsPosBoxClient.UpdateDBUserDealsLog(dbUSerDeal); } } }