コード例 #1
0
ファイル: Adaptor.cs プロジェクト: BertiFuchsi/GanovenFutter
        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));
        }
コード例 #2
0
ファイル: Adaptor.cs プロジェクト: BertiFuchsi/GanovenFutter
        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));
        }
コード例 #3
0
ファイル: Adaptor.cs プロジェクト: BertiFuchsi/GanovenFutter
 public static void LoadHistTradesFromFile()
 {
     CurrentTrades = (GV8APIDATA)XmlHandler.DeSerializeItem(Settings.Instance.FilePath.DataFilePath, "CurrentTrades" + ".data", typeof(GV8APIDATA));
 }
コード例 #4
0
        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");
        }