如何使用R包的MACD函数?
我正在学习使用 R。我对提取股票数据并根据股票数据计算各种技术指标感兴趣。我的测试基准是 Google Finance。也就是说,我将我的结果与GF的结果进行核对。
在尝试实施某种 MACD 分析时,我注意到了一些事情。这些可能是我对文档的误解。我尝试了很多变体,但在某些情况下我无法与 Google 财经的数据达成一致。
library(quantmod)
为我提供了 MACD()
,它返回列 macd
和 signal
。
library(fTrading)
为我提供了 cdsTA()
和 cdoTA()
,它们返回 cdsTA
和 cdoTA分别。
我的测试股票是 IBM,希望此链接能够显示包含价格、成交量、慢速随机指标和带有直方图的 MACD 的图表。
正在加载将 IBM 的价格数据转换为 R 并生成上述 3 个函数的值 8、17、9 和 MACD()
我设置 percent=FALSE
给出以下结果输出。
MACD(close, 8, 17, 9, maType="EMA", percent=FALSE)
cdsTA(close, lag1 = 8, lag2 = 17, lag3 = 9)
cdoTA(close, lag1 = 8, lag2 = 17, lag3 = 9)
date close macd signal cdsTA cdoTA
2011-02-07 164.17 3.187365 3.208984 3.208984 -0.7673435
2011-02-08 166.05 3.246812 3.216549 3.216549 -0.7996041
2011-02-09 164.65 3.052187 3.183677 3.183677 -1.0496306
2011-02-10 164.09 2.780047 3.102951 3.102951 -1.3332292
2011-02-11 163.85 2.496591 2.981679 2.981679 -1.5867962
2011-02-14 163.22 2.168977 2.819138 2.819138 -1.8408138
2011-02-15 162.84 1.846701 2.624651 2.624651 -2.0507546
2011-02-16 163.40 1.640518 2.427824 2.427824 -2.1262626
2011-02-17 164.24 1.550798 2.252419 2.252419 -2.0854783
2011-02-18 164.84 1.517145 2.105364 2.105364 -1.9968608
如果您参考上面的谷歌财经图表,cdsTA 和 MACD 列是相同的,并且与谷歌的 EMA 数据非常吻合。 MACD()
的 macd al 值也非常接近 GF 的值。所以我得到
MACD - 信号 = 背离。
然而,cdoTA 还很遥远。我做错了什么?
I am learning to use R. I have an interest in pulling stock data and calculating various technical indicators on the stock data. My test benchmark is Google Finance. That is, I check my results with GF's results.
While trying to implement some sort of MACD analysis, I have noticed a couple of things. These are probably my misinterpretation of the documentation. I have tried many variations and I cannot get agreement with Google Finance's numbers in some cases.
library(quantmod)
gives me MACD()
, which returns columns macd
and signal
.
library(fTrading)
gives me cdsTA()
and cdoTA()
, which return cdsTA
and cdoTA
respectively.
My test stock is IBM, and hopefully this link will pull up a chart with prices, volume, slow stochastics and MACD with histogram.
Loading up IBM's price data into R and generating the values of the 3 functions above for the values 8, 17, 9 and for MACD()
I set percent=FALSE
gives me the following output.
MACD(close, 8, 17, 9, maType="EMA", percent=FALSE)
cdsTA(close, lag1 = 8, lag2 = 17, lag3 = 9)
cdoTA(close, lag1 = 8, lag2 = 17, lag3 = 9)
date close macd signal cdsTA cdoTA
2011-02-07 164.17 3.187365 3.208984 3.208984 -0.7673435
2011-02-08 166.05 3.246812 3.216549 3.216549 -0.7996041
2011-02-09 164.65 3.052187 3.183677 3.183677 -1.0496306
2011-02-10 164.09 2.780047 3.102951 3.102951 -1.3332292
2011-02-11 163.85 2.496591 2.981679 2.981679 -1.5867962
2011-02-14 163.22 2.168977 2.819138 2.819138 -1.8408138
2011-02-15 162.84 1.846701 2.624651 2.624651 -2.0507546
2011-02-16 163.40 1.640518 2.427824 2.427824 -2.1262626
2011-02-17 164.24 1.550798 2.252419 2.252419 -2.0854783
2011-02-18 164.84 1.517145 2.105364 2.105364 -1.9968608
If you refer to the google finance chart above, the columns cdsTA and macd are identical and agree closely with Google's EMA figures. MACD()
's value for macd al also pretty close to GF's. And so I get
macd - signal = divergence.
However, cdoTA is way off. What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你没有做错任何事。
cdoTA
代码不会将lag1
或lag2
传递给cdsTA
,因此它仅使用默认值 12 26.您可以定义自己的函数
CDOTA
:或者自己用
TTR::MACD
的结果进行减法。You're not doing anything wrong. The
cdoTA
code doesn't passlag1
orlag2
tocdsTA
, so it just uses the default values of 12 and 26.You can define your own function
CDOTA
:Or just do the subtraction yourself with the results from
TTR::MACD
.