def runstrategy(index, fncodearr, div): start = div[index][0] end = div[index][1] for i in range(start, end + 1): inst = fncodearr[i][1] fname = fncodearr[i][0] fromMonth = 1 fromDay = 1 toMonth = 2 toDay = 24 start_time = datetime.datetime(1990, fromMonth, fromDay, 00, 00) end_time = datetime.datetime(2017, toMonth, toDay, 00, 00) barFilter = csvfeed.CHINAEquitiesRTH(start_time, end_time) dirpath = './data/monk/' feed = yahoofeed.Feed() path = None market = marketsession.CHASE() feed.setBarFilter(barFilter) path = dirpath + fname feed.addBarsFromCSV(inst, path, market=market) predicate = month.MONTH() eventProfiler = eventprofiler.Profiler(predicate, 1, 1) eventProfiler.run(feed, 2, True) for k, v in predicate.get().iteritems(): if 'z' in v and 'd' in v: rate = v['z'] / (v['d'] + v['z'] + 0.0) if (v['z'] + v['d']) > 10 and rate > 0.8: print k, v, rate
def runstrategy(index,fncodearr,div, dirpath, freq, q, period): start = div[index][0] end = div[index][1] for i in range(start,end + 1): inst = fncodearr[i][1] fname = fncodearr[i][0] fromMonth = 1 fromDay = 1 toMonth = 2 toDay = 24 start_time = datetime.datetime(2001,fromMonth,fromDay,00,00) end_time = datetime.datetime(2020,toMonth,toDay,00,00) barFilter = csvfeed.CHINAEquitiesRTH(start_time,end_time) baseinfo = instinfo.InstrumentInfo('data/stockinfo.csv') instfiles = [fncodearr[i]] feed = yahoofeed.Feed(frequency=freq) path = None market = marketsession.CHASE() feed.setBarFilter(barFilter) path = dirpath + fname feed.addBarsFromCSV(inst, path,market=market) predicate = macdseg.MacdSeg(feed, baseinfo, q) eventProfiler = eventprofiler.Profiler(predicate, 1, 1) eventProfiler.run(feed, 2, True) dump = utils.DumpFeature(predicate, instfiles, dirpath, period) dump.ToDump()
def testNoEvents(self): feed = yahoofeed.Feed() feed.addBarsFromCSV("orcl", common.get_data_file_path("orcl-2000-yahoofinance.csv")) predicate = Predicate([]) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) self.assertEqual(eventProfiler.getResults().getEventCount(), 0)
def testOneEvent(self): feed = yahoofeed.Feed() feed.addBarsFromCSV("orcl", common.get_data_file_path("orcl-2000-yahoofinance.csv")) predicate = Predicate([datetime.date(2000, 1, 11)]) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) self.assertEqual(eventProfiler.getResults().getEventCount(), 1) self.assertEqual(eventProfiler.getResults().getValues(0)[0], 1.0) self.assertEqual(round(eventProfiler.getResults().getValues(5)[0], 5), round(1.016745541, 5))
def main(plot): instruments = ["AA", "AES", "AIG"] feed = googlefinance.build_feed(instruments, 2008, 2009, ".") predicate = BuyOnGap(feed) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) results = eventProfiler.getResults() print "%d events found" % (results.getEventCount()) if plot: eventprofiler.plot(results)
def main(plot): instruments = ["MSFT", "AA"] feed = yahoofinance.build_feed(instruments, 2008, 2014, "data") predicate = BuyOnGap(feed) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) results = eventProfiler.getResults() print "%d events found" % (results.getEventCount()) if plot: eventprofiler.plot(results)
def main(plot): instruments = ["IBM", "AES", "AIG"] feed = quandl.build_feed("WIKI", instruments, 2008, 2009, ".") predicate = BuyOnGap(feed) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) results = eventProfiler.getResults() print("%d events found" % (results.getEventCount())) if plot: eventprofiler.plot(results)
def main(plot): symbols = ["IBM", "AES", "AIG"] priceCurrency = "USD" feed = quandl.build_feed("WIKI", symbols, priceCurrency, 2008, 2009, ".") instruments = ["%s/%s" % (symbol, priceCurrency) for symbol in symbols] predicate = BuyOnGap(feed, instruments) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) results = eventProfiler.getResults() print("%d events found" % (results.getEventCount())) if plot: eventprofiler.plot(results)
def main(plot): instrument = "n225" # Load the bar feed from the CSV file feed = yahoofeed.Feed() feed.addBarsFromCSV(instrument, r".\Data\n225.csv") predicate = BuyOnGap(feed) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) results = eventProfiler.getResults() print("%d events found" % (results.getEventCount())) if plot: eventprofiler.plot(results)
def testEventsOnBoundary(self): feed = yahoofeed.Feed() feed.addBarsFromCSV("orcl", common.get_data_file_path("orcl-2000-yahoofinance.csv")) dates = [] dates.append(datetime.date(2000, 1, 3)) dates.append(datetime.date(2000, 1, 4)) dates.append(datetime.date(2000, 1, 5)) dates.append(datetime.date(2000, 1, 6)) dates.append(datetime.date(2000, 1, 7)) dates.append(datetime.date(2000, 1, 10)) dates.append(datetime.date(2000, 12, 22)) dates.append(datetime.date(2000, 12, 26)) dates.append(datetime.date(2000, 12, 27)) dates.append(datetime.date(2000, 12, 28)) dates.append(datetime.date(2000, 12, 29)) predicate = Predicate(dates) eventProfiler = eventprofiler.Profiler(predicate, 5, 5) eventProfiler.run(feed, True) self.assertEqual(eventProfiler.getResults().getEventCount(), 0)
def main(plot, argv): # Get Parameters period = 'day' try: opts, args = getopt.getopt(argv, "h:p:", ["day="]) except getopt.GetoptError: print 'test.py -d <time>' sys.exit(2) for opt, arg in opts: if opt == '-h': print 'test.py -t <time> -o <outputfile>' sys.exit() elif opt in ("-p", "--period"): period = arg # Train Data # fromMonth = 1 # fromDay = 1 # toMonth = 12 # toDay = 24 # start_time = datetime.datetime(2001,fromMonth,fromDay,00,00) # end_time = datetime.datetime(2019,toMonth,toDay,00,00) fromMonth = 9 fromDay = 1 toMonth = 12 toDay = 24 start_time = datetime.datetime(2015, fromMonth, fromDay, 00, 00) end_time = datetime.datetime(2019, toMonth, toDay, 00, 00) barFilter = csvfeed.CHINAEquitiesRTH(start_time, end_time) baseinfo = instinfo.InstrumentInfo('data/stockinfo.csv') freq = bar.Frequency.DAY dirpath = './data/dayk/' if period == 'week': dirpath = './data/week/' freq = bar.Frequency.WEEK if period == 'month': dirpath = './data/monk/' freq = bar.Frequency.MONTH if period == '15min': dirpath = './data/15mink/' freq = bar.Frequency.MIN15 if period == '30min': dirpath = './data/30mink/' freq = bar.Frequency.MIN30 fs = FileUtils('', '', '') codearr = fs.os_walk(dirpath) fncodearr = parseinst(codearr, 'ALL') feed = yahoofeed.Feed(frequency=freq) instfiles = fncodearr instfiles = [("ZS000001.csv", "ZS000001")] insts = [] # LOG CONFIGURE q = Queue() logging.config.dictConfig(log.d) path = None for ele in instfiles: inst = ele[1] fname = ele[0] market = marketsession.CHASE() feed.setBarFilter(barFilter) path = dirpath + fname feed.addBarsFromCSV(inst, path, market=market) insts.append(inst) lp = threading.Thread(target=logger_thread, args=(q, )) lp.daemon = True lp.start() predicate = macdseg.MacdSeg(feed, baseinfo, q) eventProfiler = eventprofiler.Profiler(predicate, 1, 1) eventProfiler.run(feed, 2, True) dump = utils.DumpFeature(predicate, instfiles, dirpath, period) dump.ToDump() q.put(None)