我从 Google Doc 帮助论坛复制了以下公式,了解如何使用 Google 表格计算 ATR。该公式适用于天数低于 20 的情况,对于天数高于 20 的情况,它会返回以下错误:
函数 ARRAY_ROW 参数 2 的行大小不匹配。预计:22。实际:21。
您能帮助我修复错误吗? 交易吸引了我进入谷歌表格和 Excel,目前以下内容超出了我的技能范围,我仍在使用 IF 语句。
论坛链接:https://productforums.google.com/forum/#!topic/docs/gENldwEI040;context-place=forum/docs
$B1 - 股票代码单元
40 - 周期(天)
=average(ARRAYFORMULA(query(query(transpose(abs(query({query({Googlefinance($B1,"High",today(),today()-(40)),Googlefinance($B1,"low",today(),today()-(40+6))},"select Col1,Col2,Col4 order by Col1 desc limit "&40&" "),query(Googlefinance($B1,"close",today(),today()- (40+6)),"select Col2 order by Col1 desc limit "&40&" offset 1 label Col2 'closeyest' ")}, "select Col2-Col3, Col2-Col4, Col3-Col4"))), "select max(Col"&join(",max(Col",row(indirect("A1:A"&40))&")")))))
这正在工作
=average(ARRAYFORMULA(query(query(transpose(abs(query({query({Googlefinance($B1,"High",today()-(100),today()),
Googlefinance($B1,"low",today()-(100),today())},
"select Col1,Col2,Col4 order by Col1 desc limit "&40&" "), query(Googlefinance($B1,"close",today()-(100),today()),
"select Col2 order by Col1 desc limit "&40&" offset 1 label Col2 'closeyest' ")},
"select Col2-Col3, Col2-Col4, Col3-Col4"))),
"select max(Col"&join(",
max(Col",row(indirect("A1:A"&40))&")")))))
我已将这两个公式定义为 Google Sheets 中的命名函数,然后使用 if 函数选取这两个公式中的任何一个来计算 ATR。这种方法的好处是,当您输入天数和符号时,您往往会获得更准确的 ATR 值,超过 30 天,第二个公式将接管并应用 40 天固定值进行回溯。