以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  小周期级别上记录大周期指标的问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174201)

--  作者:casey
--  发布时间:2020/2/8 17:34:18
--  小周期级别上记录大周期指标的问题

在阿火帖子上看到这个:

十、在小周期级别上记录大周期指标的实际走势的方法

这里以1分钟引用3分钟的macd为例,常规方法只能在1分钟K线上显示3分钟K线的macd走势,至于3分钟内部每根1分钟K线的macd走势不知道

方法原理:获取上一根3分钟的diff、dea、macd,然后配合1分钟的CLOSE计算出实际的diff、dea、macd

第一步、首先在macd指标里加入以下2句:

   ema12: ema(c,12),linethick0;
   ema26: ema(c,26),linethick0;

第二步、复制以下代码即可

runmode:1;
em1:=stkindi(stklabel,\'macd.ema12\',0,17,-1);
em2:=stkindi(stklabel,\'macd.ema26\',0,17,-1);
ema12:=em1*11/13+c*2/13;
ema26:=25/27* em2 +c*2/27;

diff:ema12-ema26;
dea1:=stkindi(stklabel,\'macd.dea\',0,17,-1);
dea:dea1*4/5+diff/5;


求问:标红部分的数字是怎么计算出来的,其他指标如KD、RSI等指标是否也可以用同样方法编写


--  作者:wenarm
--  发布时间:2020/2/8 19:50:30
--  

这个地方是吧ema的算法拆解了。

算法:若Y=EMA(X,N),则Y=[2*X+(N-1)*Y\']/(N+1),其中Y\'表示上一周期Y值。

em1是当前周期对应的3分钟周期的上一根k的结果,即Y\'.  已知N=12,X=CLOSE。带入上面算法中即

Y=[2*CLOSE+(12-1)*EM1]/(12+1)=em1*11/13+c*2/13;

 


--  作者:casey
--  发布时间:2020/2/9 16:38:51
--  
麻烦老师帮忙看下哪里编写有问题
原指标:
LC := REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),13,1)/SMA(ABS(CLOSE-LC),13,1)*100,COLORBLACK;
RSI:SMA(RSI1,3,1),COLORRED;
TSL:SMA(RSI1,8,1),COLORCYAN;
MBL:SMA(RSI1,34,1),DOT,COLORYELLOW;
A:=SMA(MAX(CLOSE-LC,0),13,1);
B:=SMA(ABS(CLOSE-LC),13,1);

引用:
A3:=stkindi(stklabel,\'TDI.A\',0,17,-1);
B3:=stkindi(stklabel,\'TDI.B\',0,17,-1);
RSI3:=stkindi(stklabel,\'TDI.RSI\',0,17,-1);
TSL3:=stkindi(stklabel,\'TDI.TSL\',0,17,-1);
MBL3:=stkindi(stklabel,\'TDI.MBL\',0,17,-1);
LC := REF(CLOSE,1);
A1:=A3*12/13+MAX(CLOSE-LC,0)/13;
B1:=B3*12/13+ABS(CLOSE-LC)/13;
RSI1:=A1/B1*100;
RSI:RSI3*2/3+RSI1/3,COLORRED;
TSL:TSL3*7/8+RSI1/8,COLORCYAN;
MBL:MBL3*33/34+RSI1/34,DOT,COLORYELLOW;

--  作者:casey
--  发布时间:2020/2/9 16:41:32
--  
还有下面这个指标

VAr6:=(2*CLOSE+HIGH+LOW)/4;
VAR8:=LLV(LOW,34);
VAR11:=HHV(HIGH,34);
VAR12:EMA((VAr6-VAR8)/(VAR11-VAR8)*100,21);
VAR13:EMA(0.667*REF(VAR12,1)+0.333*VAR12,2);
生命线:EMA(VAR13,5); 

只需要改EMA部分还是其它部分也需要改麻烦老师告知下,谢谢

--  作者:casey
--  发布时间:2020/2/9 16:44:22
--  
还有下面这个指标只需要改EMA还是其他部分也要改麻烦老师告知一下,谢谢
VAr6:=(2*CLOSE+HIGH+LOW)/4;
VAR8:=LLV(LOW,34);
VAR11:=HHV(HIGH,34);
VAR12:EMA((VAr6-VAR8)/(VAR11-VAR8)*100,21);
VAR13:EMA(0.667*REF(VAR12,1)+0.333*VAR12,2);
生命线:EMA(VAR13,5);

--  作者:wenarm
--  发布时间:2020/2/9 19:11:01
--  

您代码现在碰到了什么问题?要做什么。


--  作者:casey
--  发布时间:2020/2/9 19:33:04
--  
把这两个指标改成上面的MACD这样
--  作者:casey
--  发布时间:2020/2/9 19:39:32
--  

指标1:

LC := REF(CLOSE,1);

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

RSI:SMA(RSI1,3,1),COLORRED;

TSL:SMA(RSI1,8,1),COLORCYAN;

MBL:SMA(RSI1,34,1),DOT,COLORYELLOW;

 

指标2:

VAR7:=(2*CLOSE+HIGH+LOW)/4;

VAR8:=LLV(LOW,34); V

AR11:=HHV(HIGH,34);

VAR12:EMA((VAR7-VAR8)/(VAR11-VAR8)*100,21);

VAR13:EMA(0.667*REF(VAR12,1)+0.333*VAR12,2);

生命线:EMA(VAR13,5);

这两个是原指标,想要跟上面例子MACD一样在1分钟引用3分钟走势,我自己试着编了代码但是加载出来不对不知道哪里的问题


--  作者:wenarm
--  发布时间:2020/2/9 20:11:44
--  

请您仔细看你一楼的范例。理解原理和代码逻辑。而不是浅尝而止。

1,stkindi引用的数据位置不对。

2.引用的结果拆分不对。

 

自己对比下一楼和您自己写的代码


--  作者:casey
--  发布时间:2020/2/9 20:30:58
--  

原指标:

LC := REF(CLOSE,1);

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

RSI:SMA(RSI1,3,1),COLORRED;

TSL:SMA(RSI1,8,1),COLORCYAN;

MBL:SMA(RSI1,34,1),DOT,COLORYELLOW;

A:=SMA(MAX(CLOSE-LC,0),13,1);

B:=SMA(ABS(CLOSE-LC),13,1);

 

引用:

A3:=stkindi(stklabel,\'TDI.A\',0,17,-1);

B3:=stkindi(stklabel,\'TDI.B\',0,17,-1);

RSI3:=stkindi(stklabel,\'TDI.RSI\',0,17,-1);

TSL3:=stkindi(stklabel,\'TDI.TSL\',0,17,-1);

MBL3:=stkindi(stklabel,\'TDI.MBL\',0,17,-1);

LC := REF(CLOSE,1);

A1:=A3*12/13+MAX(CLOSE-LC,0)/13;

B1:=B3*12/13+ABS(CLOSE-LC)/13;

RSI1:=A1/B1*100;

RSI:RSI3*2/3+RSI1/3,COLORRED;

TSL:TSL3*7/8+RSI1/8,COLORCYAN;

MBL:MBL3*33/34+RSI1/34,DOT,COLORYELLOW;

能不能具体点哪行不对,是SMA算的不对还是哪里,具体怎么改?