Spaces:
Build error
Build error
| from flask import Flask, render_template, request | |
| from helper_script import get_tickers, get_data, plot_candlestick | |
| from update_database import update_database, get_last_update_time | |
| from bokeh.resources import INLINE | |
| import json | |
| app = Flask(__name__) | |
| # load patterns file | |
| with open("dataset/patterns.json") as f: | |
| patterns = json.load(f) | |
| # sort `patterns` by value | |
| patterns = dict(sorted(patterns.items(), key=lambda item: item[1])) | |
| last_update_time = get_last_update_time() | |
| def home(): | |
| global last_update_time | |
| pattern = request.args.get("pattern", None) | |
| if request.method == "POST": | |
| update_database() | |
| last_update_time = get_last_update_time() | |
| return render_template("index.html", patterns=patterns, selected=pattern, last_update_time=last_update_time) | |
| if pattern: | |
| return plot(pattern) | |
| else: | |
| return render_template("index.html", patterns=patterns, selected=False, last_update_time=last_update_time) | |
| def plot(pattern): | |
| print(pattern) | |
| plot_divs, plot_scripts = [], [] | |
| tickers = get_tickers(patterns[pattern]) | |
| print(len(tickers)) | |
| if len(tickers) == 0: | |
| return render_template("no_pattern_found.html", patterns=patterns, selected=pattern) | |
| else: | |
| for i, kode in enumerate(tickers): | |
| print(f"{kode}\t\t {i}/{len(tickers)}") | |
| df, nama = get_data(kode, patterns[pattern]) | |
| if len(df[["Open", "High", "Low", "Close"]].tail(3).drop_duplicates(keep=False)) > 0: | |
| plot_script, plot_div = plot_candlestick(df, nama, kode) | |
| plot_scripts.append(plot_script) | |
| plot_divs.append(plot_div) | |
| return render_template( | |
| "plot.html", | |
| patterns=patterns, | |
| selected=pattern, | |
| js_resources = INLINE.render_js(), | |
| css_resources = INLINE.render_css(), | |
| plot_divs = plot_divs, | |
| plot_scripts = plot_scripts, | |
| last_update_time=last_update_time | |
| ) | |
| if __name__ == "__main__": | |
| app.run(debug=True) |