public static void GetCurrentTrades(string traderName, string companyName, DateTime fromDate, DateTime toDate) { XmlDocument query = XmlQueryGenerator.CurrentTrades(traderName, companyName, fromDate, toDate); string ret = ExcecuteQuery(query, "CurrentTrades"); CurrentTrades = (GV8APIDATA)XmlHandler.DeSerializeItem(ret, typeof(GV8APIDATA)); }
public static void GetHistTrades(string traderName, string companyName, string brokerName, DateTime fromDate, DateTime toDate) { // @@@ cannot be used with GV 8.8 only GV 8.12; we use RWE web service (TradeService) XmlDocument query = XmlQueryGenerator.HistTrades(traderName, companyName, brokerName, fromDate, toDate); string ret = ExcecuteQuery(query, "HistTrades"); HistTrades = (GV8APIDATA)XmlHandler.DeSerializeItem(ret, typeof(GV8APIDATA)); }
public static void LoadHistTradesFromFile() { CurrentTrades = (GV8APIDATA)XmlHandler.DeSerializeItem(Settings.Instance.FilePath.DataFilePath, "CurrentTrades" + ".data", typeof(GV8APIDATA)); }
public static void HistTradeRequest(string traderName, string companyName, string brokerName, string instrumentName, string commodityName, string firstSeqName, DateTime fromDate, DateTime toDate) { int nrFilter = 0; MarketDataRequest request; request = new MarketDataRequest(); // @@@ filter inputs for reasonable values, i.e. warning for many days etc... request.DataType = MarketDataTypeEnum.Deals; request.FilterRules = new FilterRule[ (traderName == "All"? 0 : 1) + (companyName == "All"? 0 : 1) + (brokerName == "All"? 1 : 1) + (instrumentName == "All" && commodityName == "All"? 0 : 1) + (firstSeqName == "All" ? 0 : 1) + + 1]; // +1 Dates// @@@ how to filter for gas as commodity // Date Filter DateFilterRule dateFilter = new DateFilterRule(); dateFilter.StartDate = fromDate; dateFilter.EndDate = toDate; request.FilterRules[nrFilter] = dateFilter; nrFilter+=1; // Trader Filter if(traderName != "All") { TraderNameFilterRule traderFilter = new TraderNameFilterRule(); traderFilter.Action = FilterRuleActionEnum.Add; traderFilter.TraderName = traderName; request.FilterRules[nrFilter] = traderFilter; nrFilter += 1; } // Instrument Filter == Product, e.g. NBP, not tenor! // We introduced Commodity which is a collection of intruments; setting an Instrument Type will supersede the Commodity if (instrumentName != "All") { InstrumentsFilterRule instrumentsFilter = new InstrumentsFilterRule(); InstrumentFilterRule[] iGroup = new InstrumentFilterRule[1]; // @@@ extend >1 later InstrumentFilterRule iRule = new InstrumentFilterRule(); iRule.Action = FilterRuleActionEnum.Add; iRule.InstrumentName = instrumentName; iGroup[0] = iRule; instrumentsFilter.InstrumentRules = iGroup; request.FilterRules[nrFilter] = instrumentsFilter; nrFilter += 1; } else if (commodityName != "All") { List<string> _instNames; if (CommodityGrouper.CommodityClassList.Contains(commodityName)) { _instNames = TP_SetupData.Commodities.Values.Where(k => k.CommodityClass == commodityName).Select(k => k.InstName).ToList(); } else if (CommodityGrouper.CommodityList.Contains(commodityName)) { _instNames = TP_SetupData.Commodities.Values.Where(k => k.Commodity == commodityName).Select(k => k.InstName).ToList(); } else { throw new ArgumentOutOfRangeException("Commodity = " + commodityName + " unknown."); } InstrumentsFilterRule instrumentsFilter = new InstrumentsFilterRule(); InstrumentFilterRule[] iGroup = new InstrumentFilterRule[_instNames.Count]; InstrumentFilterRule iRule; for (int i = 0; i < _instNames.Count; i++) { iRule = new InstrumentFilterRule(); iRule.Action = FilterRuleActionEnum.Add; iRule.InstrumentName = _instNames[i]; iGroup[i] = iRule; } instrumentsFilter.InstrumentRules = iGroup; request.FilterRules[nrFilter] = instrumentsFilter; nrFilter += 1; } // FirstSqeuenceName Filter, e.g. Sep-16, Win 16-17, ... if (firstSeqName != "All") { SequenceFilterRule iRule = new SequenceFilterRule(); // multiple not possible iRule.Action = FilterRuleActionEnum.Add; iRule.SequenceItemName = firstSeqName; request.FilterRules[nrFilter] = iRule; nrFilter += 1; } // Company Filter if (companyName != "All") { CompaniesFilterRule companiesFilter = new CompaniesFilterRule(); CompanyFilterRule[] cGroup = new CompanyFilterRule[1]; // @@@ extend >1 later (possible?) CompanyFilterRule cRule = new CompanyFilterRule(); cRule.Action = FilterRuleActionEnum.Add; cRule.CompanyName = companyName; cGroup[0] = cRule; companiesFilter.CompanyRules = cGroup; request.FilterRules[nrFilter] = companiesFilter; nrFilter += 1; } // Broker Filter BrokersFilterRule brokersFilter= new BrokersFilterRule(); BrokerFilterRule[] bGroup; BrokerFilterRule bRule; if (brokerName == "All") { //char[] firstLetters = "SPI".ToCharArray(); //bGroup = new BrokerFilterRule[firstLetters.Length]; //for (int i = 0; i < firstLetters.Length; i++) //{ // bRule = new BrokerFilterRule(); // bRule.Action = FilterRuleActionEnum.Add; // bRule.CombineBrokers = true; // bRule.BrokerName = firstLetters[i].ToString(); // bGroup[i] = bRule; //} bGroup = new BrokerFilterRule[1]; bRule = new BrokerFilterRule(); bRule.Action = FilterRuleActionEnum.Add; bRule.CombineBrokers = true; bRule.BrokerName = ""; bGroup[0] = bRule; } else { bGroup = new BrokerFilterRule[1]; bRule = new BrokerFilterRule(); bRule.Action = FilterRuleActionEnum.Add; bRule.CombineBrokers = true; bRule.BrokerName = brokerName; bGroup[0] = bRule; } brokersFilter.BrokerRules = bGroup; request.FilterRules[nrFilter] = brokersFilter; nrFilter += 1; DealsServiceSoapClient api = new DealsServiceSoapClient(); MarketDataResponse response = api.GetDeals(request); Debugger.AddDebugLine("Query executed."); // convert data into our structure Deal[] deals = response.Deals.Deals; GV8APIDATA data = new GV8APIDATA(); data.TRADE = new TradeData[deals.Length]; for(int i = 0; i < deals.Length; i++) { TradeData tpDeal = new TradeData(); TrayportDeal srcDeal = (TrayportDeal)deals[i]; tpDeal.TradeID = srcDeal.DealId; tpDeal.DateTime = srcDeal.DealDate; tpDeal._DateTime = tpDeal.DateTime.ToString("s", System.Globalization.CultureInfo.InvariantCulture); tpDeal.Price = srcDeal.Price; tpDeal.Volume = srcDeal.Quantity; tpDeal.INSTSPECIFIER = new InstspecifierData(); tpDeal.INSTSPECIFIER.InstID = srcDeal.InstrumentId; tpDeal.INSTSPECIFIER.InstName = srcDeal.InstrumentName; tpDeal.INSTSPECIFIER.FirstSequenceID = srcDeal.FirstSequenceId; tpDeal.INSTSPECIFIER.FirstSequenceItemName = srcDeal.FirstSequenceItemName; tpDeal.INSTSPECIFIER.SecondSequenceItemName = srcDeal.SecondSequenceItemName; tpDeal.InitiatorCompany = srcDeal.InitiatorCompany; //@@@ name or ID? check tpDeal.InitiatorBroker = srcDeal.InitiatorBroker; // @@@ tpDeal.InitiatorTrader= srcDeal.InitiatorTrader; // @@@ tpDeal.InitiatorAction = srcDeal.InitiatorAction; // @@@ tpDeal.AggressorCompany = srcDeal.AggressorCompany; //@@@ tpDeal.AggressorBroker = srcDeal.AggressorBroker; // @@@ tpDeal.AggressorTrader = srcDeal.AggressorTrader; // @@@ tpDeal.AggressorAction = srcDeal.AggressorAction; // @@@ tpDeal.LastUpdate = srcDeal.LastUpdate; tpDeal._LastUpdate = tpDeal.LastUpdate.ToString("s", System.Globalization.CultureInfo.InvariantCulture); tpDeal.InitiatorUser = srcDeal.InitiatorUser; //@@@ tpDeal.AggressorUser = srcDeal.AggressorUser; //@@@ tpDeal.ManualDeal = srcDeal.ManualDeal.HasValue? srcDeal.ManualDeal.Value : false; tpDeal._ManualDeal = srcDeal.ManualDeal.HasValue ? srcDeal.ManualDeal.Value.ToString() : null; tpDeal.VoiceDeal = srcDeal.VoiceDeal.HasValue ? srcDeal.VoiceDeal.Value : false; tpDeal._VoiceDeal = srcDeal.VoiceDeal.HasValue ? srcDeal.VoiceDeal.Value.ToString() : null; tpDeal.InitSleeve = srcDeal.InitSleeve.HasValue ? srcDeal.InitSleeve.Value : false; tpDeal._InitSleeve = srcDeal.InitSleeve.HasValue ? srcDeal.InitSleeve.Value.ToString() : null; tpDeal.AggSleeve = srcDeal.AggSleeve.HasValue ? srcDeal.AggSleeve.Value : false; tpDeal._AggSleeve = srcDeal.AggSleeve.HasValue ? srcDeal.AggSleeve.Value.ToString() : null; tpDeal.PNC = srcDeal.PNC.HasValue ? srcDeal.PNC.Value : false; tpDeal._PNC = srcDeal.PNC.HasValue ? srcDeal.PNC.Value.ToString() : null; /* 3 more I cannot find in the normal TP responses for current trades: * tpDeal.INSTSPECIFIER.e = srcDeal.ExchangeDealId.HasValue ? srcDeal.ExchangeDealId.Value : 0; * private string sCoTAOriginField; * private string sCoTADeliveryPointField; */ data.TRADE[i] = tpDeal; } Adaptor.HistTrades = data; string name = "HistTrades"; Trayport_API.XmlHandler.Save2Data(XmlHandler.SerializeToXml(request).OuterXml, name + ".query"); // @@@skip writing? excessive .... //Trayport_API.XmlHandler.Save2Data(XmlHandler.SerializeToXml(data).OuterXml, name + ".data"); }