Ejemplo n.º 1
0
def Main():
    if len(sys.argv) <= 1:
        print("Argument required: create, watch, buy, sell, stats")
    else:
        if sys.argv[1] == 'create':
            if len(sys.argv) < 3:
                print("Invalid arguments. `python main.py create 5000`")
            else:
                watcher = Watcher(filename='data/portfolio',
                                  hyperparameters=hyperparameters)
                watcher.create(balance=float(sys.argv[2]))

        elif sys.argv[1] == 'watch':
            watcher = Watcher(filename='data/portfolio',
                              hyperparameters=hyperparameters)
            watcher.start()

        elif sys.argv[1] == 'buy':
            # main.py buy 20 AMD 81.26
            if len(sys.argv) < 5:
                print("Invalid arguments. `python main.py buy 20 AMD 81.26`")
            else:
                executor = Executor(filename='data/portfolio',
                                    hyperparameters=hyperparameters)
                print(
                    executor.buy(symbol=sys.argv[3],
                                 count=int(sys.argv[2]),
                                 value=float(sys.argv[4])))

        elif sys.argv[1] == 'sell':
            # main.py sell 20 AMD 81.26
            if len(sys.argv) < 5:
                print("Invalid arguments. `python main.py sell 20 AMD 81.26`")
            else:
                executor = Executor(filename='data/portfolio',
                                    hyperparameters=hyperparameters)
                print(
                    executor.sell(symbol=sys.argv[3],
                                  count=int(sys.argv[2]),
                                  value=float(sys.argv[4])))

        elif sys.argv[1] == 'stats':
            watcher = Watcher(filename='data/portfolio',
                              hyperparameters=hyperparameters)
            watcher.stats()

        elif sys.argv[1] == 'sim':
            from Sim import Sim
            from Analysis import Analysis

            sim = Sim(period='1y',
                      timedelay=100,
                      window=100,
                      timestep=1,
                      budget=5000,
                      stockPicks=5,
                      avoidDowntrends=True,
                      sellAllOnCrash=False,
                      **hyperparameters)
            stats = sim.run()

            analysis = Analysis(stats=stats,
                                positions=sim.portfolio.holdings,
                                prices=sim.downloader.prices)
            analysis.chart('data/best_optimized_3y.png')
            output, advanced_stats = analysis.positionStats()
            print(output)

            g = sim.portfolio.holdings.copy().groupby('label').sum()
            g['profits_pct'] = (g['current_price'] - g['purchase_price']
                                ) / g['purchase_price'] * 100
            print(g)

        elif sys.argv[1] == 'test':
            from Sim import Sim
            from Analysis import Analysis

            sim = Sim(period='1y',
                      timedelay=100,
                      window=100,
                      timestep=1,
                      budget=5000,
                      stockPicks=5,
                      avoidDowntrends=True,
                      sellAllOnCrash=False,
                      **hyperparameters)
            #stats  = sim.run()
            for n in range(0, 15):
                sim.tick()

            analysis = Analysis(stats=stats,
                                positions=sim.portfolio.holdings,
                                prices=sim.downloader.prices)
            analysis.chart('data/best_optimized_3y.png')
            output, advanced_stats = analysis.positionStats()
            print(output)

            g = sim.portfolio.holdings.copy().groupby('label').sum()
            g['profits_pct'] = (g['current_price'] - g['purchase_price']
                                ) / g['purchase_price'] * 100
            print(g)

        elif sys.argv[1] == 'check':
            watcher = Watcher(filename='data/portfolio',
                              hyperparameters=hyperparameters)
            watcher.check(sys.argv[2])
        else:
            print("Unknown command")