惊喜?是的,伴随着兴奋与激动。 独特思想下的特殊时刻,经过一宿一个白天的思考,终于解开了答案---虽然不那么的尽善尽美,也能够交上满意的答卷了。 请回顾上一篇文章---《引用2日自定义周期数据的算法研究》,当时只运用了REFX函数向右1日的取值,没有对MOD函数进一步的运用。就在刚才,灵光一现,为什么不进行嵌套运算呢? 是的,答案为大家奉上: 思路步骤: 第一,首先使用取模函数MOD,将数据进行平均分组,并且只用一个语句完成收盘价的取值、赋值; 第二,引入任意算法中,完成结果输出。 算法流程: 1.输出自定义周期的基本数据 {2日自定义周期} K位:= C2:=IF(MOD(K位,2)=1,REFX(C,1),IF(MOD(K位,2)=0,C,DRAWNULL)); {4日自定义周期} K位:= C4:=IF(MOD(K位,4)=1,REFX(C,3),IF(MOD(K位,4)=2,REFX(C,2),IF(MOD(K位,4)=3,REFX(C,1),IF(MOD(K位,4)=0,C,DRAWNULL)))); {6日自定义周期} K位:= C6:=IF(MOD(K位,6)=1,REFX(C,5),IF(MOD(K位,6)=2,REFX(C,4),IF(MOD(K位,6)=3,REFX(C,3),IF(MOD(K位,6)=4,REFX(C,2),IF(MOD(K位,6)=5,REFX(C,1),IF(MOD(K位,6)=0,C,DRAWNULL)))))); 依此类推, 不但可以获取收盘价格,更可以获取全部基本数据---H,O,L,VOL 等; 而且,有了此算法,可以对数据进行任意周期的自定义了。 ---比如: 6分钟、9分钟、12分钟等等,均可以用于3分钟周期中一并显示; ---再如: 2日周期、3日周期、4日周期、6日周期、…等等,均可以在日K线一个周期之下,一并统一显示所有。 唯一的美中不足,就是到此刻还无法使用变量来实现基本数据的取值与赋值。 2.引入至算法中进行运算 例一: {在日线周期下,显示2日自定义周期的MACD} K位:= C2:=IF(MOD(K位,2)=1,REFX(C,1),IF(MOD(K位,2)=0,C,DRAWNULL)); {下述是引入的 MACD的代码,参数部分在引入公式MACD时,自动填入上方的表格里。} DIF2:EMA(C2,SHORT*2)-EMA(C2,LONG*2); DEA2:EMA(DIF2,MID*2); MACD2:(DIF2-DEA2)*2,COLORSTICK; 例二: {在日线周期下,显示4日自定义周期的MACD} K位:= C4:=IF(MOD(K位,4)=1,REFX(C,3),IF(MOD(K位,4)=2,REFX(C,2),IF(MOD(K位,4)=3,REFX(C,1),IF(MOD(K位,4)=0,C,DRAWNULL)))); {下述是引入的 MACD的代码,参数部分在引入公式MACD时,自动填入上方的表格里。} DIF4:EMA(C4,SHORT*4)-EMA(C4,LONG*4); DEA4:EMA(DIF4,MID*4); MACD4:(DIF4-DEA4)*2,COLORSTICK; 例三: {在日线周期下,显示6日自定义周期的MACD} K位:= C6:=IF(MOD(K位,6)=1,REFX(C,5),IF(MOD(K位,6)=2,REFX(C,4),IF(MOD(K位,6)=3,REFX(C,3),IF(MOD(K位,6)=4,REFX(C,2),IF(MOD(K位,6)=5,REFX(C,1),IF(MOD(K位,6)=0,C,DRAWNULL)))))); {下述是引入的 MACD的代码,参数部分在引入公式MACD时,自动填入上方的表格里。} DIF6:EMA(C6,SHORT*6)-EMA(C6,LONG*6); DEA6:EMA(DIF6,MID*6); MACD6:(DIF6-DEA6)*2,COLORSTICK; 例四: 有了基本数据,可以进行任何计算了--- 2日、4日、6日自定义周期的5日移动平均线如下 MA(C2,5*2); MA(C4,5*4); MA(C6,5*6); 均可一并在一个日K线的周期下呈现。 ![]() 在日K线一个周期下一并显示 今日、2日、4日、6日的MACD效果图 写在结尾:江丰鱼的文章在今日头条首发,文中代码均可运行。 |
|