private List<DataAroundEvent> ProcessNoneEvents()
      {
          var eventARgs = GiveMeEvents();

          // initial events for none event should be all weekdays
          //if (!canProcessArgs(eventARgs))
          //    return null;

          //var eventDates = eventARgs.Events;
          var eventDates = GiveMeInitialScannerEvents();    //TODO: Generate all weekedays
          RetrieveEventDataDelegate retrieveDataForEvents = () => getData(
                      earliestDate_: eventDates.OrderBy(x => x.Date).First().Date.AddDays(-126d),
                      insertNan_: false,
                      displayAnyError_: true
                      );

          var filteredEventDates = EventFilterBuilder(eventDates, retrieveDataForEvents);
          if (!canProcessPostFilteredEventDates(filteredEventDates))
              return null;
          var eventBuilder = new EventFilterBuilder { eventDates = eventDates.Select(ev => ev.Date).ToArray() };
          var filteredEvents =
               eventBuilder.GenerateFilteredEvents(GiveMeEventSelectorVM().BuildEventsPostFilterGroup(retrieveDataForEvents));

          var list = new List<DataAroundEvent>();
          foreach (var filteredEvent in filteredEvents)
          {
              var instrument = filteredEvent.Item1;
              var eventDate = filteredEvent.Item2;
              var rawData = filteredEvent.Item3;

              list.Add(new DataAroundEvent(eventDate, instrument, rawData, eventARgs.NumberOfPointsAroundEvent));
          }

          // need to hook up to the control and then display the list of events back to the view
          GiveMeEventSelectorVM().RefreshEventDatesControlList(filteredEventDates);

          return list;
      }
예제 #2
0
        public void ShouldFilterRSIEvents()
        {
            var eventDates = new DateTime[]
            {
                new DateTime(2015, 01, 30),
                new DateTime(2015, 02, 27),
                new DateTime(2015, 03, 31),
                new DateTime(2015, 04, 30),
                new DateTime(2015, 05, 29),
                new DateTime(2015, 06, 30),
                new DateTime(2015, 07, 31),
                new DateTime(2015, 08, 31),
                new DateTime(2015, 09, 30),
                new DateTime(2015, 10, 30),                
            };
            var cc = new SI.Strategy.SeasonalityAnalysis.MultiProductParser.SeasonalityPlugin2();
            cc.Create();

            // set up instrument for testing
            cc.SetUpWrapper(ParserType.CMT_Yield, "UST1_2");
           

            var postFilter1 = EventFilterBuilder.RSIRise(FilterOperator.Greater, 30, 5, retrieveDataForEvents);            

            // set up filter group            
            var filterTopGroup = new EventsPostFilterGroup();
            filterTopGroup.AddFilterToGroup(postFilter1);            
            filterTopGroup.LogicalOp = LogicalOperator.And;

            var eventBuilder = new EventFilterBuilder {eventDates = eventDates};
            var filteredEventDates = eventBuilder.GenerateFilteredDates(filterTopGroup);

            Assert.That(filteredEventDates.Any(), Is.True);
            Assert.That(filteredEventDates.First(), Is.EqualTo(new DateTime(2015,09,30)));
        }