Back to Community
help with volume spike purchasing formula

Someone help an amateur figure this out?

I'm not sure why my if statement isn't working, towards the bottom:

def initialize(context):  
    context.aapl = sid(24)  
    #can only go long - no shorting  
    set_long_only()  
    #portfolio can only have 1 share of AAPL at a time  
    set_max_position_size(symbol('AAPL'), max_shares=1)  
def handle_data(context, data):  
    #the sume of the prior 11 minutes volume, excluding the most recent minute  
    hist = data.history(sid(24), 'volume', 10, '1m')  
    vol_10 = hist[0:10].sum()  
    #volume of the most recent minute  
    vol_1 = data.current(sid(24), 'volume')  
    #define current trading day low price  
    day_low = data.history(sid(24), 'low', 1, '1d')  
    #define current price  
    current_price = data.current(sid(24), 'price')  
    #define cost basis  
    cost_basis = context.portfolio.positions[context.aapl].cost_basis  
    #define current position  
    current_position = context.portfolio.positions[context.aapl].amount  
    #if most recent minute volume is > 25% of the prior 10 minutes total volume  
    #and the current price is within 5 minutes of the low price  
    #for the day, buy 1 share of AAPL  
    if vol_1 > vol_10 *.25 and current_price == day_low:  
        order(('AAPL'), 1)  
    #if position opened, simultaneously open stop loss order at .999% of cost basis  
    if current_position > 0:  
        order(('AAPL'), -1, style=StopOrder(cost_basis *.999))  

It's basically placing an order when current minute volume is greater than past 10 minutes volume *.25 and price is at the low of the day. Also, simultaneously placing a stop loss order at .001% below cost basis.

Another: I wanted to place an order if the volume spike is within 5 minutes of the day's low price, not just at the low price, but couldn't figure out how.