【发布时间】:2020-11-21 18:25:14
【问题描述】:
我正在学习使用 Pandas 探索交易策略。我听到的算法交易的“Hello World”是移动平均线交叉,其中较短的滚动平均值高于或低于较长的滚动平均值,以分别确定多头和空头头寸。
universe = sorted(os.listdir(f'{os.getcwd()}/Data'))
for u in range(len(universe)):
universe[u] = universe[u][:-4]
df = pd.DataFrame()
df2 = pd.DataFrame()
df3 = pd.DataFrame()
df4 = pd.DataFrame()
for s in universe:
df[s] = pd.read_csv(f'Data/{s}.csv', index_col='Date')['Adj Close']
df2[s] = df[s].rolling(50).mean()
df3[s] = df[s].rolling(200).mean()
df4[s] = np.where((df2[s] > df3[s]), 1, 0)
对于 df4,我在 np.where 的真实条件下只有一个 1 来表示 Long。但是我将如何使用另一个条件 np.where((df2[s]
另外,我可能有这样一种情况,即它只在数据中发生一次,但将该信号保持为“1”或“-1”,直到另一个信号将其注册为 0。
所以我想我真的不知道如何在 Pandas DF 中应用 If-else 条件。
非常感谢您的帮助,谢谢
获取样本数据:
ticker = ['STT', 'TROW', 'BIIB', 'ADP', 'COG', 'EMR', 'USB', 'UA', 'AXP', 'WYNN']
for t in ticker:
try:
pdr.DataReader(t, data_source='yahoo', start=datetime(2000,1,1), end=datetime(2020,1,1)).to_csv(f'Data/{t}.csv')
except KeyError:
pass
【问题讨论】:
-
请在reproducible way 中提供示例数据。否则人们将无法测试。
-
好的,我对我的原始帖子进行了编辑以获取示例数据
标签: python-3.x pandas algorithmic-trading