diff --git a/catalyst/examples/dual_moving_average.py b/catalyst/examples/dual_moving_average.py index ff5dfc5e..363edba1 100644 --- a/catalyst/examples/dual_moving_average.py +++ b/catalyst/examples/dual_moving_average.py @@ -20,8 +20,8 @@ def initialize(context): def handle_data(context, data): # define the windows for the moving averages - short_window = 50 - long_window = 200 + short_window = 2 + long_window = 2 # Skip as many bars as long_window to properly compute the average context.i += 1 @@ -32,16 +32,18 @@ def handle_data(context, data): # moving average with the appropriate parameters. We choose to use # minute bars for this simulation -> freq="1m" # Returns a pandas dataframe. - short_mavg = data.history(context.asset, + short_data = data.history(context.asset, 'price', bar_count=short_window, - frequency="1m", - ).mean() - long_mavg = data.history(context.asset, + frequency="1T", + ) + short_mavg = short_data.mean() + long_data = data.history(context.asset, 'price', bar_count=long_window, - frequency="1m", - ).mean() + frequency="1T", + ) + long_mavg = long_data.mean() # Let's keep the price of our asset in a more handy variable price = data.current(context.asset, 'price') @@ -82,7 +84,6 @@ def handle_data(context, data): def analyze(context, perf): - # Get the base_currency that was passed as a parameter to the simulation exchange = list(context.exchanges.values())[0] base_currency = exchange.base_currency.upper() @@ -93,7 +94,7 @@ def analyze(context, perf): ax1.legend_.remove() ax1.set_ylabel('Portfolio Value\n({})'.format(base_currency)) start, end = ax1.get_ylim() - ax1.yaxis.set_ticks(np.arange(start, end, (end-start)/5)) + ax1.yaxis.set_ticks(np.arange(start, end, (end - start) / 5)) # Second chart: Plot asset price, moving averages and buys/sells ax2 = plt.subplot(412, sharex=ax1) @@ -104,9 +105,9 @@ def analyze(context, perf): ax2.set_ylabel('{asset}\n({base})'.format( asset=context.asset.symbol, base=base_currency - )) + )) start, end = ax2.get_ylim() - ax2.yaxis.set_ticks(np.arange(start, end, (end-start)/5)) + ax2.yaxis.set_ticks(np.arange(start, end, (end - start) / 5)) transaction_df = extract_transactions(perf) if not transaction_df.empty: @@ -136,28 +137,40 @@ def analyze(context, perf): ax3.legend_.remove() ax3.set_ylabel('Percent Change') start, end = ax3.get_ylim() - ax3.yaxis.set_ticks(np.arange(start, end, (end-start)/5)) + ax3.yaxis.set_ticks(np.arange(start, end, (end - start) / 5)) # Fourth chart: Plot our cash ax4 = plt.subplot(414, sharex=ax1) perf.cash.plot(ax=ax4) ax4.set_ylabel('Cash\n({})'.format(base_currency)) start, end = ax4.get_ylim() - ax4.yaxis.set_ticks(np.arange(0, end, end/5)) + ax4.yaxis.set_ticks(np.arange(0, end, end / 5)) plt.show() if __name__ == '__main__': run_algorithm( - capital_base=1000, - data_frequency='minute', - initialize=initialize, - handle_data=handle_data, - analyze=analyze, - exchange_name='bitfinex', - algo_namespace=NAMESPACE, - base_currency='usd', - start=pd.to_datetime('2017-9-22', utc=True), - end=pd.to_datetime('2017-9-23', utc=True), - ) + capital_base=1000, + data_frequency='minute', + initialize=initialize, + handle_data=handle_data, + analyze=analyze, + exchange_name='bitfinex', + algo_namespace=NAMESPACE, + base_currency='usd', + simulate_orders=True, + live=True, + ) + # run_algorithm( + # capital_base=1000, + # data_frequency='minute', + # initialize=initialize, + # handle_data=handle_data, + # analyze=analyze, + # exchange_name='bitfinex', + # algo_namespace=NAMESPACE, + # base_currency='usd', + # start=pd.to_datetime('2017-9-22', utc=True), + # end=pd.to_datetime('2017-9-23', utc=True), + # )