我正在从csv文件将许多股票在特定日期的历史数据导入java。我的目标是使用一个Java程序在特定的日期买卖这些股票。该程序仅配置为使用一个ticker,但现在我希望将其扩展为使用数千个(超过数千个日期)。
我有两张表,一张包含股票行情和何时买卖,另一张(如下图所示)包含所有价格和历史信息。
如果在表1中,使用这两种方法,我在y日期有一个按x的指示,我希望当x的价格比购买价格下降80%时,我能卖出x。为了便于这种决策,对于我可能交易的每一个股票,我都有大约十年的历史数据。我在二号桌有上千万行。
我想能够引用我的每一列(市值,市盈率,贝塔…)使用股票代码和日期标识符。我想操纵我的数据,以(在爪哇)找到一个特定的股票价格在某个日期范围内的最小和最大的P/E。
我想我应该为每个ticker和date组合创建一个“数字键”。它是ticker中的每个字符,转换为ascii,连接并添加到日期中。我认为我可以使用这些作为索引数组的唯一标识符,但后来我意识到我没有一个好的方法来确定何时开始数据,何时结束。
哪种数据类型更适合这种情况?
最佳答案
使用一个HashMap
和一个结合了ticker和date的键不是更好吗?
类似于:
public class TickerDate {
private final String ticker;
private final Date date;
public TickerDate(String ticker, Date date) {
this.ticker = ticker;
this.date = date;
}
// .. getters
// equals + hashcode
}
在代码中肯定更容易理解。
另一种选择是使用番石榴中的
Table
,您不需要编写上面的TickerDate
类。关于java - 对没有int的数组进行双索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38575478/