首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不重复的情况下计算DataFrame上的操作?

如何在不重复的情况下计算DataFrame上的操作?
EN

Stack Overflow用户
提问于 2020-05-27 01:55:25
回答 1查看 40关注 0票数 1

因此,我正在尝试制作一个交易算法,到目前为止,只与一家公司合作,它运行良好。本质上,它是2日和14日移动均线的交叉。到目前为止,代码如下:

代码语言:javascript
运行
复制
import pandas as pd
import pandas_datareader as web
import datetime as dt
import yfinance as yf
import numpy as np

start = dt.datetime(2018, 1, 1)
end = dt.datetime(2020, 1, 1)
d = web.DataReader('AMD', 'yahoo', start, end)

d['sma50'] = np.round(d['Close'].rolling(window=2).mean(), decimals=2)
d['sma200'] = np.round(d['Close'].rolling(window=14).mean(), decimals=2)
d['200-50'] = d['sma200'] - d['sma50']
d
_buy = -2
d['Crossover_Long'] = np.where(d['200-50'] < _buy, 1, 0)
d['Crossover_Long_Change']=d.Crossover_Long.diff()
d['buy'] = np.where(d['Crossover_Long_Change'] == 1, 'buy', 'n/a')
d['sell'] = np.where(d['Crossover_Long_Change'] == -1, 'sell', 'n/a')
pd.set_option('display.max_rows', 5093)
d.drop(['High', 'Low', 'Close', 'Volume', 'Open'], axis=1, inplace=True)
d.dropna(inplace=True)
#make 2 dataframe
d.set_index(d['Adj Close'], inplace=True)
buy_price = d.index[d['Crossover_Long_Change']==1]
sell_price = d.index[d['Crossover_Long_Change']==-1]
d['Crossover_Long_Change'].value_counts()
profit_loss = (sell_price - buy_price)*10
commision = buy_price*.01
position_value = (buy_price + commision)*10
percent_return = (profit_loss/position_value)*100
percent_rounded = np.round(percent_return, decimals=2)
prices = { 
    "Buy Price" : buy_price,
    "Sell Price" : sell_price,
    "P/L" : profit_loss,
    "Return": percent_rounded
}
df = pd.DataFrame(prices)
print(df)
print(d)

然后,如果我想通过多个公司,并执行以下操作:

代码语言:javascript
运行
复制
stocks = ['AMD', 'BA', 'URI']
start = dt.datetime(2018, 1, 1)
end = dt.datetime(2020, 1, 1)
d = web.DataReader(stocks, 'yahoo', start, end)

我会收到一个问题,因为我需要为每个公司创建一个单独的数据框架,然后在本质上重写每个公司的代码。有没有办法绕过这一点,这样我就可以通过任何数量的公司,而不必重写整个代码,这样我就不会收到错误?有没有一种方法可以组合数据帧,这样就不必为每个数据帧创建一列?

EN

回答 1

Stack Overflow用户

发布于 2020-05-27 02:16:56

将股票设置为元组b/c有时可以解决我的问题

耽误您时间,实在对不起

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62028377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档