楼主: 017911
1658 5

[问答] R语言选股器制作问题 [推广有奖]

  • 0关注
  • 0粉丝

小学生

28%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
49 点
帖子
5
精华
0
在线时间
3 小时
注册时间
2011-9-25
最后登录
2017-9-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

请问这样的R选股代码应如何写?因为TA不是只用股价的资料,而是重覆调用


N1:=10;

N2:=21;


AP:=(HIGH+CLOSE+LOW)/3;

ESA:=EMA(AP,N1); //取AP值的N1天的EMA数据,以下如此类推

D := EMA(ABS(AP - ESA), N1);

CI := (AP - ESA) / (0.015 * D);

TCI := EMA(CI, N2);


WT1:TCI; //TCI作為WT1的值

WT2:MA(WT1,4);


选股条件为WT1>WT2(出现金叉)AND WT1<-53。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 Close Lose High EMA

沙发
skyfx 发表于 2017-9-20 22:15:42 |只看作者 |坛友微信交流群
就一列一列地算呗,没有难度。

使用道具

藤椅
017911 发表于 2017-9-21 12:02:39 |只看作者 |坛友微信交流群
skyfx 发表于 2017-9-20 22:15
就一列一列地算呗,没有难度。
针对一个股票才懂,在整个市场都运算一遍便不懂写。最后我想是输出一个清单/列表

library(quantmod)
getSymbols("GOOG")
chartSeries(GOOG['2007-03-30/2016-12-31'],theme="white")
WT1 = EMA(((GOOG[,2]+GOOG[,3]+GOOG[,4])/3 - EMA((GOOG[,2]+GOOG[,3]+GOOG[,4])/3,N=10)) / (0.015 * EMA(abs((GOOG[,2]+GOOG[,3]+GOOG[,4])/3 - EMA((GOOG[,2]+GOOG[,3]+GOOG[,4])/3,N=10)), N=10)), N=21)
WT2=SMA(WT1,n=4)
addTA(WT1,col="blue")
addTA(WT2,col="red")

使用道具

板凳
017911 发表于 2017-9-21 15:11:58 |只看作者 |坛友微信交流群
有没有方法LIST中不是指定某几只股票,而是交易所中的所有股票?求指教~~~
  1. library(quantmod)
  2. stocks <- c("AAPL", "GOOG", "FB")
  3. stockEnv <- new.env()
  4. symbols <- getSymbols(stocks, src='yahoo', env=stockEnv)
  5. for (stock in ls(stockEnv)){
  6.         getSymbols(stock)
  7.         ##chartSeries(stockEnv[[stock]], theme="white", name=stock,subset='last 30 days')
  8.         WT1 <- EMA(((stockEnv[[stock]][,2]+stockEnv[[stock]][,3]+stockEnv[[stock]][,4])/3 - EMA((stockEnv[[stock]][,2]+stockEnv[[stock]][,3]+stockEnv[[stock]][,4])/3,N=10)) / (0.015 * EMA(abs((stockEnv[[stock]][,2]+stockEnv[[stock]][,3]+stockEnv[[stock]][,4])/3 - EMA((stockEnv[[stock]][,2]+stockEnv[[stock]][,3]+stockEnv[[stock]][,4])/3,N=10)), N=10)), N=21)
  9.         WT2 <- SMA(WT1,n=4)
  10.         if(tail(WT1,1)>=tail(WT2,1) & tail(WT1,1)<=-53){
  11.                 print(stock)}
  12. }
复制代码

使用道具

报纸
017911 发表于 2017-9-21 22:28:37 |只看作者 |坛友微信交流群
skyfx 发表于 2017-9-20 22:15
就一列一列地算呗,没有难度。
很有难度吧?

使用道具

地板
skyfx 发表于 2017-9-24 12:24:29 |只看作者 |坛友微信交流群
随便想想就至少有2种方法,看你熟悉哪种,都一样
第一种,by,按股票切块,然后写个函数算你那些指标,用transform加新列,返回就是一个list
第二种,用dplyr包,group_by,自动按股票切块,然后直接mutate加列,算出来是一个data.frame
都是最基本的操作

使用道具

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

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

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

GMT+8, 2024-4-27 07:36