在阿火帖子上看到这个:
十、在小周期级别上记录大周期指标的实际走势的方法
这里以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等指标是否也可以用同样方法编写
这个地方是吧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;
您代码现在碰到了什么问题?要做什么。
指标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分钟走势,我自己试着编了代码但是加载出来不对不知道哪里的问题
请您仔细看你一楼的范例。理解原理和代码逻辑。而不是浅尝而止。
1,stkindi引用的数据位置不对。
2.引用的结果拆分不对。
自己对比下一楼和您自己写的代码
原指标:
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算的不对还是哪里,具体怎么改?