楼主: wqf_cufe
2233 3

[有偿编程] 100论坛币求助R均线交易系统优化测试 [推广有奖]

  • 4关注
  • 16粉丝

教授

89%

还不是VIP/贵宾

-

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

100论坛币
最近在网上买到一份用R做的系统交易策略的Code,但是在改编的过程中遇到了写循环的问题。
我的具体想法是,找出最优化的移动平均线的参数来指导交易。
我的参数为(5,10,20,30,60,120)

具体策略就是找出B点和S点,其中:

B点组合为:(以下均表示前者上穿后者)
(5,10) ,  (5,20) ,  (5, 30),  (5,60) ,  (5, 120) 共5种
(10,20) ,  (10, 30),  (10,60) ,  (10, 120) 共4种
(20, 30),  (20,60) ,  (20, 120) 共3种
(30,60) ,  (30, 120) 共2种
(60, 120) 共1种


B点组合共15种。


S点组合为:(以下均表示前者下穿后者)
(5,10) ,  (5,20) ,  (5, 30),  (5,60)  共4种
(10,20) ,  (10, 30),  (10,60) 共3种
(20, 30),  (20,60)  共2种
(30,60)  共1种


S点组合共10种。代码如下:
  1. library(combinat)
  2. x1 <- c(5, 10, 20, 30, 60, 120)
  3. y1 <- c(5, 10, 20, 30, 60, 120)
  4. z1 <- c()

  5. x2 <- c(5, 10, 20, 30, 60)
  6. y2 <- c(5, 10, 20, 30, 60)
  7. z2 <- c()

  8. permunation <- function(x,y,z){
  9.   for(i in 1:length(x)){

  10.     for(j in 2:length(y)){

  11.     z[[i]] <- cbind(x[[i]], y[[j]])
  12.     }
  13.   }

  14. z <- expand.grid(x,y)
  15. z <- unique(z)
  16. pd.new<-subset(z, Var1<Var2)
  17. return(pd.new)
  18. }

  19. comb1 <- permunation(x1,y1,z1)
  20. comb2 <- permunation(x2,y2,z2)
复制代码


综上,结合BS买卖点的策略一共有150种组合。我的策略是找出最优化的那个BS买卖点的参数。

我的部分代码如下:
  1. library(plyr)
  2. library(quantmod)
  3. library(TTR)
  4. library(ggplot2)
  5. library(scales)
  6. require(data.table)
  7. library(xts)
复制代码
  1. #Download stock data first
  2. startDate = as.Date("2012-01-01")
  3. endDate = as.Date("2014-11-21")
  4. data <- getSymbols("000752.SZ",auto.assign=FALSE, from = startDate, to = endDate)

  5. #Get Close price
  6. cdata<-data[,4]

  7. sDate<-as.Date("2012-01-01") #startdata
  8. eDate<-as.Date("2014-11-21") #enddate
  9. #################################
  10. #Moving AVERAGE Function
  11. ma<-function(cdata,mas=c(5, 10, 20, 30, 60, 120)){
  12.   ldata<-cdata
  13.   for(m in mas){
  14.     ldata<-merge(ldata,MA(cdata,m))
  15.   }
  16.   ldata<-na.locf(ldata, fromLast=TRUE)
  17.   names(ldata)<-c('Value',paste('ma',mas,sep=''))
  18.   return(ldata)
  19. }


  20. #Transaction Signals
  21. Signal<-function(cdata,pdata){
  22.   tmp<-''
  23.   tdata<-ddply(pdata[order(pdata$Index),],.(Index,Series),function(row){
  24.     if(row$Series==tmp) return(NULL)
  25.     tmp<<-row$Series
  26.   })
  27.   tdata<-data.frame(cdata[tdata$Index],op=ifelse(tdata$Series=='down','B','S'))
  28.   names(tdata)<-c("Value","op")
  29.   return(tdata)
  30. }
复制代码

[size=13.63636302948px]上面的代码需要修改的地方如下:1. ldata<-ma(cdata,c(5,10)) #选择滑动平均指标    ----> 这里是否需要写成循环?
2. pdata<-merge(ldata$ma10[which(ldata$ma5-ldata$ma10<0)],ldata$ma10[which(ldata$ma5-ldata$ma10<0)])
这里在选择买卖点时,ldata$ma10[which(ldata$ma5-ldata$ma10<0)]和ldata$ma10[which(ldata$ma5-ldata$ma10<0)]如何写一个循环来遍历上面的150种组合?因为这里涉及到买点卖点的参数不同的情况
3. 最后要找出tail(result2$ticks,1)中使得asset最大的那套参数。



请大家给出具体的code实现,而不是简单回答上面的问题,谢谢!!!

关键词:100论坛币 0论坛币 系统优化 交易系统 论坛币 中国 记录 如何 用户 中国 记录 如何 用户 交易系统
沙发
wqf_cufe 发表于 2014-11-24 07:12:55 |只看作者 |坛友微信交流群
顶一下自己的帖,等了一天多了。

使用道具

藤椅
741liujinyuan 在职认证  发表于 2017-11-10 16:31:58 |只看作者 |坛友微信交流群
你好,使用均线构建交易系统,首先应该避免对特定标的、特定行情进行过度优化,如果在测试历史行情时过度优化,那么这就是高度曲线匹配的系统,这将使该系统未来绩效的可信度大大降低。我不知道你是做商品期货,还是股票。不同的市场特性会有一些差异,应当区别对待。我看到你说:想找出最优化的移动平均线的参数来指导交易。这样不妥,不同的股票在不同的时间,最佳参数都不同。可以选择大一些的均线,最重要的是长期一致性的执行才是关键。

使用道具

板凳
741liujinyuan 在职认证  发表于 2017-11-10 16:35:50 |只看作者 |坛友微信交流群
你好,使用均线构建交易系统,首先应该避免对特定标的、特定行情进行过度优化,如果在测试历史行情时过度优化,那么这就是高度曲线匹配的系统,这将使该系统未来绩效的可信度大大降低。我不知道你是做商品期货,还是股票。不同的市场特性会有一些差异,应当区别对待。我看到你说:想找出最优化的移动平均线的参数来指导交易。这样不妥,不同的股票在不同的时间,最佳参数都不同。可以选择大一些的均线,最重要的是长期一致性的执行才是关键。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-23 23:27