Пример #1
0
def task_backtest():
    symbol = ["000001", "603993"]
    bars = bindata.BackTestData(bindata.raw)
    # Apply our current strategy on the chosen stock pool
    rfs = CurrentStrategy(symbol, bars)
    # specify constraints, here is the default one
    cons = Constraint()
    # specify a naive optimizer
    opt = NaiveOptimizer(cons)
    function_list = {}
    exec generate_signals in function_list
    # Create a portfolio
    portfolio = MarketOnClosePortfolio(symbol, bars, rfs, opt, initial_capital=1000000.0)
    exec generate_signals in function_list

    portfolio.strategy.sig_generator = function_list["generate_signals"]
    # Backtest our portfolio and store result in book

    book = portfolio.backtest_portfolio_external()
    ret = book.nav_to_json()
    print ret
    return json.dumps(ret)
Пример #2
0
def task_backtest(gearman_worker, gearman_job):
    symbol = ['000001', '603993']
    bars = bindata.BackTestData(bindata.raw)
    # Apply our current strategy on the chosen stock pool
    rfs = CurrentStrategy(symbol, bars)
    # specify constraints, here is the default one
    cons = Constraint()
    # specify a naive optimizer
    opt = NaiveOptimizer(cons)

    data = json.loads(gearman_job.data)
    function_list = {}
    signal_generator = compile(data["code"], '', 'exec')
    exec signal_generator in function_list

    # Create a portfolio
    portfolio = MarketOnClosePortfolio(symbol, bars, rfs, \
                opt, initial_capital=1000000.0)
    portfolio.strategy.sig_generator = function_list["generate_signals"]
    # Backtest our portfolio and store result in book
    book = portfolio.backtest_portfolio(worker=gearman_worker, job=gearman_job)
    ret = book.nav_to_json()
    return json.dumps(ret)
Пример #3
0
def task_backtest():
    symbol = ['000001', '603993']
    bars = bindata.BackTestData(bindata.raw)
    # Apply our current strategy on the chosen stock pool
    rfs = CurrentStrategy(symbol, bars)
    # specify constraints, here is the default one
    cons = Constraint()
    # specify a naive optimizer
    opt = NaiveOptimizer(cons)
    function_list = {}
    exec generate_signals in function_list
    # Create a portfolio
    portfolio = MarketOnClosePortfolio(symbol, bars, rfs, opt, \
        initial_capital=1000000.0)
    exec generate_signals in function_list

    portfolio.strategy.sig_generator = function_list["generate_signals"]
    # Backtest our portfolio and store result in book

    book = portfolio.backtest_portfolio_external()
    ret = book.nav_to_json()
    print ret
    return json.dumps(ret)
Пример #4
0
def task_backtest(gearman_worker, gearman_job):
    symbol = ['000001', '603993']
    bars = bindata.BackTestData(bindata.raw)
    # Apply our current strategy on the chosen stock pool
    rfs = CurrentStrategy(symbol, bars)
    # specify constraints, here is the default one
    cons = Constraint()
    # specify a naive optimizer
    opt = NaiveOptimizer(cons)

    data = json.loads(gearman_job.data)
    function_list = {}
    signal_generator = compile(data["code"], '', 'exec')
    exec signal_generator in function_list

    # Create a portfolio
    portfolio = MarketOnClosePortfolio(symbol, bars, rfs, \
                opt, initial_capital=1000000.0)
    portfolio.strategy.sig_generator = function_list["generate_signals"]
    # Backtest our portfolio and store result in book
    book = portfolio.backtest_portfolio(worker=gearman_worker, job=gearman_job)
    ret = book.nav_to_json()
    return json.dumps(ret)
# dff = pandas.DataFrame(df)
# dff.plot(x='Date', y='Open')

# print(df['Open'])

# plt.plot(df['Date'], df['Close'], linestyle='-', linewidth=1)
# plt.plot(df['Date'], df['Open'], linestyle='-', linewidth=1)
# plt.legend(['Close', 'Open'], loc='upper left')
#

mac = MovingAverageCrossStrategy(df, short_window=100, long_window=400)
signals = mac.generate_signals()

print(signals)

portfolio = MarketOnClosePortfolio(df, signals, initial_capital=10000)

print(portfolio)
\
# mavg = Series(df).rolling(window=40, center=False).mean()
# mavg = pd.rolling_mean(df['Close'], 40)
# mavg.plot(label='mavg')
# plt.legend()
# mavg = pd.rolling_mean(df['Close'], 40)
# print(mavg[-10:])

# This line is necessary for the plot to appear in a Jupyter notebook
# % matplotlib inline
# Control the default size of figures in this Jupyter notebook
# % pylab inline
# pylab.rcParams['figure.figsize'] = (15, 9)  # Change the size of plots