Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 829|回复: 0

请问如何使用VBA计算股票序列数据的收益率

[复制链接]
发表于 2022-9-22 08:17 | 显示全部楼层 |阅读模式


各位高手:

    本人最近学习利用VBA分析股票数据,遇到困难请教大家。如附件中所示:在D列有股票价格数据,在E列已经给出的买入点,需要自动确定对应每一个买入点之后的卖出点及收益率,规则情景如下:
(情景1)当股票价格从买入点开始上升超过10%的涨幅后,启动冲高回撤策略,即如果从最高点又下滑5%,则及时卖出,此时点的价格即为卖出价格;
(情景2)当股票价格从买入点开始一路下滑超过10%的跌幅时,及时卖出,此时点的价格即为卖出价格。
(情景3)当股票价格从买入点直到数据末尾仍未出现以上两种情景时,则以D列数据的最后一个价格作为卖出价格。
      以上三种卖出情景遵循“孰近优先”惯例。
      例如,在第一个买入点,E3单元格对应左侧的买入价格为24.42元,其后价格一路上扬至27.5元、30.2元,又开始下跌至29元、28.1元,在这一过程中30.2元相对于24.42元涨幅超过10%,并且是局部最高点,而28.1<30.2*0.95,因此可将28.1元看成是第一个风险点,此时在“风险点1”对应的G列的G7单元格写入-1。其后价格继续回落至20元,并且此时价格已经比初始买入价格24.42元跌幅超过10%,因此此时在“风险点2”对应的H列的H8单元格写入-1。而对于“卖出点”I列,除了最后一行外,都是G列和H列相加的结果。根据“孰近优先”惯例,真实的卖出点应该是第7行单元格对应的28.1元,最后在“盈亏”对应的J列的J7单元格写入:=(D7-D3)/D3=0.150696.
      同理,在第二个买入点,E10单元格对应左侧的买入价格为24.29元。一开始先出现了情景2,即出现跌幅超过10%的价格21.2元(第12行),因此尽管后面还出现了冲高29元(第16行)再回落至27.5元(第18行)的情景1,但是根据“孰近优先”惯例,真实的卖出点应该是第12行单元格对应的21.2元,最后在“盈亏”对应的J列的J12单元格写入:=(D12-D10)/D10=-0.12721.
      同理,在最后一个买入点E20单元格对应左侧的买入价格为24.5元,因为情景1和情景2都未来得及出现,数据就已结束,此时卖出点就确定为最后一个日期,即I列最后一行的数值永远为-1,在“盈亏”对应的J列的J22单元格写入:=(D22-D20)/D20=0.000816。

      请问如何通过VBA实现G列、H列、I列、J列的自动计算?
      非常感谢各位的关注!

分析股票数据的收益率.rar

7.69 KB, 下载次数: 0

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-18 03:44 , Processed in 0.216636 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表