我正在尝试计算移动平均线(简单和指数),并且遇到了 simple_statistics gem,它非常适合我的需求。我正在尝试修改此链接中的代码:如何计算简单移动平均线)用于我的目的。
目标:我有一个这样的 JSON,它列出了一只股票在很长一段时间内的历史价格:
[
{
"Low": 8.63,
"Volume": 14211900,
"Date": "2012-10-26",
"High": 8.79,
"Close": 8.65,
"Adj Close": 8.65,
"Open": 8.7
},
为此,我想添加 20 天和 50 天平均值(以及其他所需的其他)的每一天的移动平均线(简单和指数 - simple_statistics gem 似乎很容易做到),因此每天都会出现这样的情况:
[
{
"Low": 8.63,
"Volume": 14211900,
"Date": "2012-10-26",
"High": 8.79,
"Close": 8.65,
"Adj Close": 8.65,
"Open": 8.7,
"SMA20":
"SMA50":
},
我更喜欢使用 yahoo_finance 和 simple_statistics gem,然后将输出附加到原始 JSON,因为我觉得一旦我获得了更好的理解,修改起来会更容易。
现在,我仍在阅读我将如何做到这一点(感谢任何帮助) 下面是我尝试计算 Microsoft 的 20 天简单移动平均线(不起作用)。这种方式(使用HistoricalQuotes_days)似乎假设开始日期是今天,这对我的总体目标不起作用。
require 'rubygems'
require 'yahoofinance'
require 'simple_statistics'
averages = {}
dates.each do |dates|
quotes = YahooFinance::get_HistoricalQuotes_days ( 'MSFT' , 20 ) start, finish
closes = quotes.collect { |quote| quote.close }
averages = closes.mean
end
谢谢
更新:我实际上不需要使用 YahooFinance gem,因为我已经拥有 JSON 中的数据。我不知道该怎么做是从 JSON 数组中提取,使用 simple_statistics gem 进行计算,然后将新数据添加到原始 JSON 中。