我有以下代码来给出信号(1或0)
问题是我有一份股票收盘价的清单,。。。。等] 我现在所做的是手动更改每个股票的stock=df[]
您能建议如何为此创建一个函数吗? 此外,df['Signal']对于每个。。例如,df['SPY']将产生df['SPYsignal']
我对python太陌生了,已经尝试过错误,希望你能指导我,谢谢
# I am doing this for all my tickers, this is inefficient
# Only wanted to do it for selected columns so I should begin with List = [['SPY','TLT']] yes?
stock = df['SPY']
df['avg'] = stock.shift(1).rolling(window=5).mean()
df['LongEntry'] = stock > df.avg
df['LongExit'] = stock < df.avg
df['PositionLong'] = np.nan
df.loc[df.LongEntry,'PositionLong'] = 1
df.loc[df.LongExit, 'PositionLong'] = 0
df['SPYSignal'] = df.PositionLong
df['SPYSignal'].fillna(method='ffill')
df['SPYSignal'].fillna(0, inplace = True)
print (df['SPYSignal'])
stock = df['TLT']
df['avg'] = stock.shift(1).rolling(window=5).mean()
df['LongEntry'] = stock > df.avg
df['LongExit'] = stock < df.avg
df['PositionLong'] = np.nan
df.loc[df.LongEntry,'PositionLong'] = 1
df.loc[df.LongExit, 'PositionLong'] = 0
df['TLTSignal'] = df.PositionLong
df['TLTSignal'].fillna(method='ffill')
df['TLTSignal'].fillna(0, inplace = True)
print (df['TLTSignal'])
数据帧示例
SPY TLT
100 200
102 202
105 208
106 205
108 210
期望输出
SPY TLT SPYSignal TLTSignal
100 200 0 1
102 202 1 0
105 208 0 0
106 205 1 0
108 210 0 1
我会用这样的方式:
这段代码循环遍历每一个
'SPY', 'TLT', ...
字符串,并像以前手动操作一样对它们进行处理我希望我没有弄错你的问题
相关问题 更多 >
编程相关推荐