def main_func(self, cutoff): StocksController = NasdaqController(True) list_of_tickers = StocksController.getList() currentDate = datetime.datetime.strptime( date.today().strftime("%Y-%m-%d"), "%Y-%m-%d") start_time = time.time() for x in tqdm(list_of_tickers): d = (self.find_anomalies_two(self.getData(x), cutoff)) if d['Dates']: for i in range(len(d['Dates'])): if self.days_between(str(currentDate)[:-9], str(d['Dates'][i])) <= 3: self.customPrint(d, x)
def main_func(self, cutoff): StocksController = NasdaqController(True) list_of_tickers = StocksController.getList() currentDate = datetime.datetime.strptime( date.today().strftime("%Y-%m-%d"), "%Y-%m-%d") start_time = time.time() manager = multiprocessing.Manager() positive_scans = manager.list() with parallel_backend('loky', n_jobs=multiprocessing.cpu_count()): Parallel()(delayed(self.parallel_wrapper)(x, cutoff, currentDate, positive_scans) for x in tqdm(list_of_tickers) ) print("\n\n\n\n--- this took %s seconds to run ---" % (time.time() - start_time)) return positive_scans
def main_func(self): positive_scans = True StocksController = NasdaqController(True) list_of_tickers = StocksController.getList() currentDate = datetime.datetime.strptime( date.today().strftime("%Y-%m-%d"), "%Y-%m-%d") start_time = time.time() if (config.SEND_EMAIL): EmailResults.SendMessage("Bot started working", "BOT LOG", config.send_to_log_email) pass else: print("Bot started working") manager = multiprocessing.Manager() positive_scans = manager.list() if (config.RUN_BOT): with parallel_backend('loky', n_jobs=multiprocessing.cpu_count()): Parallel()(delayed(self.parallel_wrapper)(x, currentDate, positive_scans) for x in tqdm(list_of_tickers, miniters=1)) else: #This is to debug main process with just one stock self.parallel_wrapper("TSLA", currentDate, positive_scans) body = "" if (os.path.isfile(R'data\botAnalysisHistory.csv')): yesterdays_score = Testing.backTestYesterdaysResults() body = "Yesterdays score was a " + str(yesterdays_score) + "!" body += "\n---This bot took " + str( (time.time() - start_time) / 60) + " Minutes to run.---" if (config.SEND_EMAIL): EmailResults.SendMessage(body, "BOT LOG", config.send_to_log_email) else: print(body) print(len(positive_scans)) #self.writeToCsv(positive_scans) return positive_scans
autopct='%1.1f%%', shadow=True, startangle=90, textprops={ 'fontsize': 17, 'weight': 'bold' }) plt.title('Calls vs. Puts') print(spacer) # get all stock tickers #from get_all_tickers import get_tickers as gt #list_of_tickers = gt.get_tickers(NYSE=True, NASDAQ=True, AMEX=True) StocksController = NasdaqController(True) list_of_tickers = StocksController.getList() tickerList = [] r_item = [ 'A', 'ON', 'IT', 'FOR', 'AT', 'ARE', 'BE', 'ALL', 'SO', 'GO', 'OR', 'CAN', 'HE', 'NOW', 'OUT', 'AN', 'HAS', 'BY', 'ONE', 'SEE', 'GOOD', 'BIG', 'ANY', 'NEW', 'AM', 'NEXT', 'WELL', 'PUMP', 'EVER', 'RUN', 'VERY', 'PLAY', 'DD', 'POST', 'ELSE', 'LOVE', 'TELL', 'BEST', 'LIFE', 'HOPE', 'TWO', 'NICE', 'BIT', 'MAN', 'TRUE', 'FUN', 'LOW', 'TECH', 'CAR', 'STAY', 'EOD', 'JOB', 'FLAT', 'OLD', 'RTX', 'HOME', 'OW', 'JOE', 'BEAT', 'WOW', 'X', 'ATH', 'SAVE', 'EAT', 'HUGE', 'PER', 'LIVE', 'CARE', 'PEAK', 'TURN', 'PLUS', 'HEAR', 'GAIN', 'BRO', 'RH', 'JUST', 'NEED', 'KNOW' ]
def main(): spacer = "\n\n************************************\n\n" reddit = praw.Reddit(client_id=secret.client_id, client_secret=secret.client_secret, user_agent=secret.user_agent) start = time.time() print(spacer) subreddit = reddit.subreddit("wallstreetbets") print("Accessing: " + subreddit.display_name.upper()) print("Getting posts / comments from " + subreddit.display_name.upper()) print(spacer) masterSET = [] commentCounter = 0 toolbar_width = 25 # setup toolbar sys.stdout.write("[%s]" % (" " * toolbar_width)) sys.stdout.flush() # return to start of line, after '[' sys.stdout.write("\b" * (toolbar_width + 1)) for submission in subreddit.hot(limit=25): # .hot, .new for sub in submission.title.upper().split(" "): masterSET.append(sub) commentCounter += 1 submission.comments.replace_more(limit=25) for comment in submission.comments.list(): for sub2 in comment.body.upper().split(" "): masterSET.append(sub2) commentCounter += 1 sys.stdout.write("-") sys.stdout.flush() sys.stdout.write("]\n") # this ends the progress bar print("Analyzing") print(spacer) callCount = sum('CALL' in s for s in masterSET) putCount = sum('PUT' in s for s in masterSET) print("Call Count: " + str(callCount)) print("Put Count: " + str(putCount)) print("Total Comments Analyzed: " + str(commentCounter)) sentiment = "WSB is " print(spacer) if (callCount > putCount): sentiment += "BULLISH by " + \ str(round(100*(callCount/(callCount + putCount)), 1)) + "%" else: sentiment += "BEARISH by " + \ str(round(100*(putCount/(callCount + putCount)), 1)) + "%" print(sentiment) """ slices = [callCount, putCount] names = ['Calls', 'Puts'] colors = ['springgreen', 'lightcoral'] plt.figure(0) plt.pie(slices, labels=names, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90, textprops={'fontsize': 17, 'weight': 'bold'}) plt.title('Calls vs. Puts') """ print(spacer) # get all stock tickers # from get_all_tickers import get_tickers as gt # list_of_tickers = gt.get_tickers(NYSE=True, NASDAQ=True, AMEX=True) StocksController = NasdaqController(True) list_of_tickers = StocksController.getList() tickerList = [] r_item = [ 'A', 'ON', 'IT', 'FOR', 'AT', 'ARE', 'BE', 'ALL', 'SO', 'GO', 'OR', 'CAN', 'HE', 'NOW', 'OUT', 'AN', 'HAS', 'BY', 'ONE', 'SEE', 'GOOD', 'BIG', 'ANY', 'NEW', 'AM', 'NEXT', 'WELL', 'PUMP', 'EVER', 'RUN', 'VERY', 'PLAY', 'DD', 'POST', 'ELSE', 'LOVE', 'TELL', 'BEST', 'LIFE', 'HOPE', 'TWO', 'NICE', 'BIT', 'MAN', 'TRUE', 'FUN', 'LOW', 'TECH', 'CAR', 'STAY', 'EOD', 'JOB', 'FLAT', 'OLD', 'RTX', 'HOME', 'OW', 'JOE', 'BEAT', 'WOW', 'X', 'ATH', 'SAVE', 'EAT', 'HUGE', 'PER', 'LIVE', 'CARE', 'PEAK', 'TURN', 'PLUS', 'HEAR', 'GAIN', 'BRO', 'RH', 'JUST', 'NEED', 'KNOW' ] main_list = [ item for item in masterSET if item in list_of_tickers if item not in r_item ] most_occur = Counter(main_list).most_common(12) mainFrame = pd.DataFrame(most_occur) mainFrame.columns = ['Ticker', 'Frequency'] # temp = mainFrame.plot(kind='bar', x='Ticker', y='Frequency') plt.figure(figsize=(15, 7)) dateformat = date.today().strftime("%B %d, %Y") # dateformat = "July 24, 2020" ax = sb.barplot(x='Ticker', y='Frequency', data=mainFrame) plt.title("WSB DAILY: THE MOST POPULAR TICKERS ON R/WSB TODAY", fontsize=20) annotation = ('--------- Summary ---------\n' + sentiment + '\nCalls: ' + str(callCount) + '\nPuts: ' + str(putCount) + '\nAnalyzed ' + str(commentCounter) + ' comments' + '\nToday is: ' + dateformat + '\n---------------------------') plt.text(0.9, 0.5, annotation, horizontalalignment='center', verticalalignment='top', transform=ax.transAxes) plt.subplots_adjust(left=0.06, bottom=0.07, right=0.97, top=0.94, wspace=None, hspace=None) print(spacer) end = time.time() print("Run time: " + str(round(end - start, 2)) + " seconds") fileTitle = datetime.today().strftime('"%m-%d-%Y"') fileTitle = fileTitle[1:-1] plt.savefig('history/' + fileTitle + '.png')