import numpy as np
import pandas as pd
import scipy.stats as stats
import time
from quantopian.pipeline import Pipeline
from quantopian.pipeline import CustomFactor
from quantopian.pipeline.data import morningstar
from quantopian.pipeline.factors import EWMA, Latest, SimpleMovingAverage
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.algorithm import attach_pipeline, pipeline_output
class AvgDailyDollarVolumeTraded(CustomFactor):
inputs = [USEquityPricing.close, USEquityPricing.volume]
def compute(self, today, assets, out, close_price, volume):
out[:] = np.mean(close_price * volume, axis=0)
def initialize(context):
pipe = Pipeline()
attach_pipeline(pipe, 'PipeX')
dollar_volume = AvgDailyDollarVolumeTraded(window_length=20)
pipe.add(dollar_volume, 'dollar_volume')
plausable_volume = (dollar_volume > 1e2)
sma_200 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=200)
plausable_price = (sma_200 > 5)
pipe.set_screen(plausable_volume | plausable_price)
pipe.add(plausable_volume, 'plausable_volume')
pipe.add(plausable_price, 'plausable_price')
return pipe
set_commission(commission.PerShare(cost=0.0075, min_trade_cost=1.00))
def before_trading_start(context, data):
context.output = pipeline_output('PipeX')
context.plausable_volume = context.output[context.output['plausable_volume']]
context.plausable_price = context.output[context.output['plausable_price']]
context.stocks = context.plausable_volume.index.union(context.plausable_price.index)
def handle_data(context, data):
for stock in context.stocks:
MA10X = data.history(stock, 'close', 10, '1d').mean()
MA20X = data.history(stock, 'close', 20, '1d').mean()
MA50X = data.history(stock, 'close', 50, '1d').mean()
MA10 = MA10X[stock].mean()
MA20 = MA20X[stock].mean()
MA50 = MA50X[stock].mean()
So yeah... "TypeError: 'float' object has no attribute '__getitem__'". I have a suspicion it has something to do with the fact I'm passing a list of objects and I get a dataframe instead of a series. Still pretty new to coding and trying to understand. Any help would be appreciated!