以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  [求助]请教如何编写  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=30417)

--  作者:saintlucifer
--  发布时间:2012/11/6 9:46:21
--  [求助]请教如何编写

这是RSI的写法:

 

INPUT : N1(4,1,20),X(35,0,40),Y(73,60,100);

LC := REF(CLOSE,1);

RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100,COLORYELLOW;

 

因为close在当根k线未走完(例如15分钟k线的时候,在当前15分钟周期内都是变动的),如果我想记录RSI在当根k线里面,出现的高值与低值,应该如何编写,就是如何在上面RSI函数里面,把close置换成high或者low?


--  作者:jinzhe
--  发布时间:2012/11/6 9:51:02
--  编译任何程序直接报错“C++ runtime error”

如果需要记录15分钟之内的RSI变化值,这个得要VBA了吧


--  作者:every
--  发布时间:2012/11/6 9:52:19
--  

INPUT : N1(4,1,20),X(35,0,40),Y(73,60,100);

LC := REF(high,1);

RSI1:SMA(MAX(high-LC,0),N1,1)/SMA(ABS(high-LC),N1,1)*100,COLORYELLOW;


--  作者:saintlucifer
--  发布时间:2012/11/6 9:59:38
--  
3楼的方法是不行的,因为在sma函数里面直接改成high,会导致rsi数值错误的,我试过了
--  作者:saintlucifer
--  发布时间:2012/11/6 10:02:07
--  
以下是引用jinzhe在2012-11-6 9:51:02的发言:

如果需要记录15分钟之内的RSI变化值,这个得要VBA了吧

 

我就是不想用vba,能否把sma函数改变一下,例如现在是4天周期的rsi,就先引用前三天周期的rsi,然后结合当天high或者low,来算出当天rsi的高低点呢?


--  作者:jinzhe
--  发布时间:2012/11/6 10:16:34
--  
两个概念了,你需要的是RSI的高低点,而不是RSI.HIGH
--  作者:saintlucifer
--  发布时间:2012/11/6 10:34:17
--  
已自行解决,只要分解sma函数就行了,谢谢大家~
--  作者:jinzhe
--  发布时间:2012/11/6 10:43:02
--  
把解决的代码发上来看看哈
--  作者:saintlucifer
--  发布时间:2012/11/6 11:07:51
--  

INPUT : N1(4,1,20),X(35,0,40),Y(73,60,100);

LC := REF(CLOSE,1);

RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100,COLORYELLOW;

 

RSI_H_01 := ((MAX(HIGH - LC,0) + (N1 - 1) * REF(SMA(MAX(CLOSE - LC,0),N1,1),1))) / N1;
RSI_H_02 := ((ABS(HIGH - LC) + (N1 - 1) * REF(SMA(ABS(CLOSE - LC),N1,1),1))) / N1;
RSI_L_01 := ((MAX(LOW - LC,0) + (N1 - 1) * REF(SMA(MAX(CLOSE - LC,0),N1,1),1))) / N1;
RSI_L_02 := ((ABS(LOW - LC) + (N1 - 1) * REF(SMA(ABS(CLOSE - LC),N1,1),1))) / N1;

RSI_HIGH : RSI_H_01 / RSI_H_02 * 100,COLORRED;
RSI_LOW : RSI_L_01 / RSI_L_02 * 100,COLORWHITE;