我必须解释别人的代码,因为我缺乏Python技能而陷入困境。下面是代码。我试图调试他的代码,但由于它试图拉动的数据大小,我的计算机一直在崩溃(或者它可能是我的带宽堵塞)。所以我决定请你帮我猜猜发生了什么事。
class efficiency_ratio(CustomFactor):
inputs = [USEquityPricing.close, USEquityPricing.high, USEquityPricing.low]
window_length = 252
def compute(self, today, assets, out, close, high, low):
lb = self.window_length
e_r = np.zeros(len(assets), dtype=np.float64)
a=np.array(([high[1:(lb):1]-low[1:(lb):1],abs(high[1:(lb):1]-close[0:(lb-1):1]),abs(low[1:(lb):1]-close[0:(lb-1):1])]))
b=a.T.max(axis=1)
c=b.sum(axis=1)
e_r=abs(close[-1]-close[0]) /c
out[:] = e_r
因此,您可以看到我们有一个名为" efficiency_ratio"的课程。 inputs = [USEquityPricing.close,USEquityPricing.high,USEquityPricing.low]这通过API连接到数据库
输入是" USEquityPricing.close"我相信这是不同股票的股票价格可追溯到252天。我相信这是二维表,无论是列是股票名称(你能否确认我的怀疑是否正确?),行每个日期可以追溯到252天。表格大致如下所示。
继续...... def compute(自我,今天,资产,出局,收盘,高位,低位):前四位应该只是一种形式。但是最后三个,接近,高,低对应于上面提到的3个输入,除了它受到252个数据点的约束。
a,这是我完全迷失的地方。什么会高[1:(lb):1]"创建?这是如何运作的?我试着用Print函数来理解。但我的基于web的python平台严重扭曲输出以适应屏幕大小。