Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from zipline.api import order_value, record, symbol
- import matplotlib.pyplot as plt
- def initialize(context):
- context.i = 0
- context.asset = symbol('AAPL')
- def handle_data(context, data):
- # Skip first 300 days to get full windows
- context.i += 1
- if context.i < 300:
- return
- # Compute averages
- # data.history() has to be called with the same params
- # from above and returns a pandas dataframe.
- short_mavg = data.history(context.asset, 'price', bar_count=100, frequency="1d").mean()
- long_mavg = data.history(context.asset, 'price', bar_count=300, frequency="1d").mean()
- volume = data.current(context.asset, 'volume')
- if(75 > volume):
- order_value(context.asset, 10000)
- if(274 > 206):
- order_value(context.asset, -10000)
- # Save values for later inspection
- record(AAPL=data.current(context.asset, 'price'),
- short_mavg=short_mavg,
- long_mavg=long_mavg)
- def analyze(context, perf):
- print(perf.sortino)
- print(perf.portfolio_value)
- fig = plt.figure()
- ax1 = fig.add_subplot(211)
- perf.portfolio_value.plot(ax=ax1)
- ax1.set_ylabel('portfolio value in $')
- ax2 = fig.add_subplot(212)
- perf['AAPL'].plot(ax=ax2)
- perf[['short_mavg', 'long_mavg']].plot(ax=ax2)
- perf_trans = perf.ix[[t != [] for t in perf.transactions]]
- buys = perf_trans.ix[[t[0]['amount'] > 0 for t in perf_trans.transactions]]
- sells = perf_trans.ix[
- [t[0]['amount'] < 0 for t in perf_trans.transactions]]
- ax2.plot(buys.index, perf.short_mavg.ix[buys.index],
- '^', markersize=10, color='m')
- ax2.plot(sells.index, perf.short_mavg.ix[sells.index],
- 'v', markersize=10, color='k')
- ax2.set_ylabel('price in $')
- plt.legend(loc=0)
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement