Hi,
I'm getting this error and don't understand why! Any ideas anyone?
My code is here:
import math
import talib as ta
import pandas as pd
import numpy as np
def initalise_context(sid, context):
historical_close = history(bar_count=365, frequency='1d', field='close_price')
daily_close = historical_close[sid]
def process_order(sid, order, context, close):
cash = context.portfolio.cash
context.notional = context.notional + context.portfolio.positions[sid].amount * close
datetime = pd.Timestamp(get_datetime()).tz_convert('US/Eastern')
if ( order.lower()[0][0] == 'b' ):
if ( context.notional < context.max_notional ):
number_of_shares = int(cash/close)
message = '{s}: {o} {n} @ {d}'
log.info( message.format( s=sid, o=order, n=number_of_shares, d=datetime ))
#order_percent(sid, 0.33, style=MarketOrder(exchange=IBExchange.SMART))
order(sid, number_of_shares)
context.notional = context.notional + close * number_of_shares
else:
if ( context.notional > context.min_notional ):
number_of_shares = context.portfolio.positions[sid].amount
message = '{s}: {o} {n} @ {d}'
log.info( message.format( s=sid, o=order, n=number_of_shares, d=datetime ))
#order_percent(sid, -0.33, style=MarketOrder(exchange=IBExchange.SMART))
order(sid, -number_of_shares)
context.notional = context.notional - close * number_of_shares
def initialize(context):
context.stocks = [symbol('AAPL'), symbol('MSFT')]
context.max_notional = 1000000.1
context.min_notional = 20000.0
context.notional = 0
context.day = None
def handle_data(context, data):
for sid in context.stocks:
close = data[sid].close_price
if context.portfolio.positions[sid].amount > 0:
process_order(sid, 'Sell', context, close)
if get_datetime().day == context.day:
return
context.day = get_datetime().day
initalise_context(sid, context)
process_order(sid, 'Buy', context, close)