楼主: wqf_cufe
18942 11

[问答] 如何用R来进行股票交易回测?程序讨论 [推广有奖]

  • 4关注
  • 16粉丝

已卖:4079份资源

教授

89%

还不是VIP/贵宾

-

威望
0
论坛币
4283 个
通用积分
6.5000
学术水平
10 点
热心指数
17 点
信用等级
13 点
经验
565 点
帖子
730
精华
0
在线时间
2236 小时
注册时间
2009-5-26
最后登录
2021-12-29

楼主
wqf_cufe 发表于 2014-11-17 10:45:45 |AI写论文
300论坛币
最近在网上看到一篇一个博客,里面有篇文章叫《两条均线打天下》。里面大量列举了如何用R来实现交易回测。其中有部分R的code,但是在信号那块没有给出具体的程序。我很喜欢作者的这个回测系统的显示,很简洁美观。所以想用自己的指标数据来做一个这样的R回测。但是水平不够,所以向大家请教写法。最好能和这篇文章的一样。链接如下:http://blog.fens.me/finance-stock-ma/


我的设想是,在我的数据里有002613这只股票的开盘,收盘,最高,最低,以及两个自选指标的signal(均为0,1变量)。

我的策略是,“买入策略”出现1时买入50%的仓位,然后10天内再次出现此信号可以忽略(此处很难用code实现貌似)。
[size=13.63636302948px]“买入策略2”出现1时买入20%的仓位,同样,10天内再次出现此信号可以忽略。
[size=13.63636302948px]

[size=13.63636302948px]两个策略的平仓策略均为盈利20%就平仓。
[size=13.63636302948px]

  1. #交易信号
  2. > Signal<-function(cdata,pdata){} #代码省略
  3. > tdata<-Signal(cdata,pdata)
  4. > tdata<-tdata[which(as.Date(row.names(tdata)) head(tdata)
  5.             Value op
  6. 2010-01-04 132.45  B
  7. 2010-01-22 125.50  S
  8. 2010-02-17 126.33  B
  9. 2010-03-09 125.55  S
  10. 2010-03-11 127.60  B
  11. 2010-04-08 127.61  S

  12. #模拟交易
  13. #参数:交易信号,本金,持仓比例,手续费比例
  14. > trade<-function(tdata,capital=100000,position=1,fee=0){} #代码省略
  15. > result1<-trade(tdata,100000)

  16. # 查看每笔交易
  17. > head(result1$ticks)
  18.             Value op     cash amount     asset     diff
  19. 2010-01-04 132.45  B     0.25    755 100000.00     0.00
  20. 2010-01-22 125.50  S 94752.75      0  94752.75 -5247.25
  21. 2010-02-17 126.33  B     5.25    750  94752.75     0.00
  22. 2010-03-09 125.55  S 94167.75      0  94167.75  -585.00
  23. 2010-03-11 127.60  B   126.55    737  94167.75     0.00
  24. 2010-04-08 127.61  S 94175.12      0  94175.12     7.37

  25. # 盈利的交易
  26. > head(result1$rise)
  27.             Value op     cash amount    asset     diff
  28. 2010-03-11 127.60  B   126.55    737 94167.75     0.00
  29. 2010-04-08 127.61  S 94175.12      0 94175.12     7.37
  30. 2010-07-22 127.47  B   108.79    633 80797.30     0.00
  31. 2010-08-12 128.30  S 81322.69      0 81322.69   525.39
  32. 2010-09-09 126.36  B   120.40    632 79979.92     0.00
  33. 2010-11-16 142.24  S 90016.08      0 90016.08 10036.16

  34. # 亏损的交易
  35. > head(result1$fall)
  36.             Value op     cash amount     asset     diff
  37. 2010-01-04 132.45  B     0.25    755 100000.00     0.00
  38. 2010-01-22 125.50  S 94752.75      0  94752.75 -5247.25
  39. 2010-02-17 126.33  B     5.25    750  94752.75     0.00
  40. 2010-03-09 125.55  S 94167.75      0  94167.75  -585.00
  41. 2010-04-09 128.76  B    51.56    731  94175.12     0.00
  42. 2010-04-12 128.36  S 93882.72      0  93882.72  -292.40
复制代码
我的数据集在附件里,谢谢! 002613.zip (10.47 KB) 本附件包括:
  • 002613.csv

[size=13.63636302948px]



关键词:股票交易 如何用 Finance Result amount 股票交易 文章 程序 如何 博客
已有 1 人评分学术水平 热心指数 收起 理由
ryoeng + 1 + 1 鼓励积极发帖讨论

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

本帖被以下文库推荐

沙发
line_us 发表于 2014-11-17 10:57:07
支持一下。

藤椅
wqf_cufe 发表于 2014-11-17 11:25:04
line_us 发表于 2014-11-17 10:57
支持一下。
谢谢!!!

板凳
wqf_cufe 发表于 2014-11-18 08:24:54
翻一倍悬赏中,谢谢!!!

报纸
komomowa 学生认证  发表于 2015-1-12 03:22:04
楼主你好,> trade<-function(tdata,capital=100000,position=1,fee=0){} #代码省略,其中的代码省略的部分可以分享一下么

地板
xingjing 发表于 2015-1-12 14:59:16
看他的视频就有源码了呀,不过这个只是测试,还不是实盘交易。

7
yuchenli123 发表于 2015-2-12 23:07:42
谢谢!!谢谢!!

8
ryoeng 在职认证  发表于 2015-2-15 02:59:36
提示: 作者被禁止或删除 内容自动屏蔽

9
大兵哥 发表于 2015-3-17 17:24:15
tdata<-tdata[which(as.Date(row.names(tdata)) head(tdata) 这句正确怎么写

10
perl-fe 发表于 2015-4-21 20:50:44
大兵哥 发表于 2015-3-17 17:24
tdata
估计不正确

使用Quantmod的lag(),next(),可以前后几日对HOLC操作,来比较10日后问题

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 01:55