from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.filters import QTradableStocksUS
import talib as tb
import numpy as np
from quantopian.pipeline.factors import EWMA
from quantopian.pipeline.factors import CustomFactor
import pandas as pd
class MACDHISTO(CustomFactor):
#inputs=[USEquityPricing.close]
#window_length=200
def compute(self, today, assets, out, close):
ema12 = pd.stats.moments.ewma(close, span=12)
ema26 = pd.stats.moments.ewma(close, span=26)
signal = pd.stats.moments.ewma(ema12[-10:] - ema26[-10:], span=9)
out[:] = (ema12[-1] - ema26[-1]) - signal[-1]
class MACD_HISTO_STD(CustomFactor):
inputs=[USEquityPricing.close]
#window_length=200
def compute(self, today, assets, out, close):
ema12 = pd.stats.moments.ewma(close, span=12)
ema26 = pd.stats.moments.ewma(close, span=26)
signal = pd.stats.moments.ewma(ema12[-100:] - ema26[-100:], span=9)
#out[:] = pd.rolling(70).std(ema12[-100:] - ema26[-100:] - signal[-100:])
df=ema12[-100:] - ema26[-100:] - signal[-100:]
out[:]=np.std(df,ddof=1)
def make_pipeline():
universe=QTradableStocksUS()
'''
ewma12=EWMA(inputs=[USEquityPricing.close], window_length=12, decay_rate=0.5)
ewma26=EWMA(inputs=[USEquityPricing.close], window_length=26, decay_rate=0.5)
signal_input=ewma12-ewma26
#signal=EWMA(inputs=signal_input, window_length=9, decay_rate=0.5)
'''
histo=MACDHISTO(inputs=[USEquityPricing.close], window_length=26, mask=universe)
std=MACD_HISTO_STD(inputs=[USEquityPricing.close], window_length=100, mask=universe)
pipe = Pipeline(
columns={
'histo':histo,
'std':std
},
screen=universe
)
return pipe
result = run_pipeline(make_pipeline(), '2015-04-05', '2015-5-12')
result.head()