在掌握了公式语言的一些常用编写方法之后,进阶之路在哪里呢?它们分别是公式分支、公式循环、公式数组、公式迭代和公式接口,只有进一步学习这些高级编程技巧,才能真正达到编写中所思便所得的自如境界。在这其中,比较难以理解的是公式迭代,但一旦掌握将会为我们解决很多过去无法解决的问题。

公式迭代就是公式语言中的迭代算法,迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

我们在做证券分析时常常会用到迭代算法,比如:

EMA求指数平滑移动平均。

用法:

EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N)

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

今日指数平滑移动平均线等于昨日指数平滑移动平均线乘上(N-1)加上近日收盘价乘2,然后再除以N+1。涉及迭代的问题还包括SMA、DMA、MEMA等。所谓迭代,就是用上一周期的数值来计算本周期的数值。迭代公式就是指用现在的值,代到一个公式里面,算出下一个值再用下一个值代入公式,如此往复地代。

以EMA为例:

e:=(2*c+(n-1)*e)/(n+1);

我们只需按照其原理直接写入就可以了,简单吧!下面就来分析一下为什么可以这么写?赋值符号“:=”左边的e表示本周期的数值,而右边的e由于还没有赋值,仍保持为上一周期的数值,也就是说e还维持着上次计算的结果,它等同于ref(e,1)。

那么,计算第一天的时候,e的数值是多少呢?其初始变量设为0?显然如此设定是不正确,因为e等于0的话,计算结果就等于close/n,这当然不是第一天的均值,因此我们需要作如下说明,完整的写法要这样:

{ema}

INPUT:n(5,0,1000);

VARIABLE:e=0;

e:if(barpos=1,c,(2*c+(n-1)*e)/(n+1));

当计算第一天的时候,e等于收盘价,后面的等于指数平滑移动平均。

迭代应用实例1:MACD(平滑异同平均线)

{macd}

INPUT:long(26,20,100),short(12,5,40),m(9,2,60);

VARIABLE:e=0,e1=0,dea=0;

e:=if(barpos=1,c,(2*c+(short-1)*e)/(short+1));

e1:=if(barpos=1,c,(2*c+(long-1)*e1)/(long+1));

diff:e-e1;

dea:(2*diff+(m-1)*dea)/(m+1);

macd:2*(diff-dea),colorstick;

迭代应用实例2:

我们在学习成本分布原理的时候,常会看到下面一段文字:

成本分布原理:

投资者一般对股票平均成本感兴趣,移动平均MA、指数平滑移动平均EMA等算法都是计算股票平均成本的算法,但是这些算法没有考虑到成交量对平均成本的影响。例如,假设最近一段时间某股票在10-20元间波动,其平均价MA为15元,但观察其成交量发现在20元附近成交量巨大,而在10元附近成交量较少,我们认为其平均成本显然应该比15元更高才合理。为此我们可以引入换收率移动平均概念;以当天的换手率作为平滑因子计算指数平滑移动平均,用公式来表示为:

Y=(1-A)*Y'+A*C

其中A表示换手率,C表示收盘价,Y和Y'分别表示今日平均价和昨日平均价。

加权平均的计算方法是:∑aX,其中X位待统计数值,a为X占总量的比例。当日的平均成本Y可以表示为两个部分,当日买入的和以前买入的,当日买入的成本为收盘价C,以前买入的成本为Y',而当日买入的占总流通盘的比例为换收率A,而以前买入的则占1-A,因此今日的加权平均成本为(1-A)*Y'+A*C。因此,用这个公式更能反映股票的真实成本。

查阅指标函数,我们找到了这样一个函数:

DMA求动态移动平均。

用法:

DMA(X,A),求X的A日动态移动平均。

算法: 若Y=DMA(X,A)

则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1。

例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价

显然DMA(CLOSE,VOL/CAPITAL)就是成本分布中的加权平均成本(1-A)*Y'+A*C。

用迭代可以这样表述:

VARIABLE:y=0;

a:=vol/capital;

y:if(barpos=1,c,(1-a)*y+a*c);

迭代应用实例3:

有一求助贴

请问老师如何定义可以一直递归到开盘第一天的递归函数?

本文来自:理想论坛 www.55188.com 作者:天赢 浏览:164次

________________________________________

如何有递归函数需要一个公式 F: IF (是开盘日前一日 就返回发行价,((流通盘- vol)* REF(F,1)+close*vol)/流通盘);   可以一直递归到开盘第一天的

https://www.55188.com/viewthread.php?tid=4086339&page=1#pid84240961

这个命题用迭代可以完美的解决,同样的命题用C语言写,迭代的运算速度会大大超过递归。说到运算速度,有人会问迭代算法用在公式语言中会不会很慢,答案是否定的。无论是分析家还是在使用某些循环公式慢如蜗牛的大智慧,既是在不联网、不下载本地数据的情况下,使用迭代运算速度都非常的快。

好了,上面提到过在公式语言中用到迭代的还有SMA、DMA、MEMA、TMA等,现在就可以自己来动手试试,就算留道算术题吧,成功了!那么恭喜你---您进阶了!

注:二楼给出了SMA、DMA、MEMA、TMA的迭代公式写法。

c语言递推公式原理,【图】指标高手的进阶之-公式迭代(原理及应用)_迭代法怎么求收敛阶,牛顿切线法迭代公式,迭代公式,迭代算法,递推公式_指标编写互助答疑论坛_理想论坛 - 股票论坛...相关推荐

  1. python 源代码 macd双底 高 低_MACD双底背离_选股公式,炒股软件,炒股公式,股票软件,股票公式_指标编写互助答疑论坛_理想论坛 - 股票论坛...

    请老师将以下公式双MACD背离时间不超过30天,写个选股,谢谢了 STICKLINE(100,90,0,5,0),COLOR666600; XIAO1:=REF((LOW+OPEN+CLOSE+HIG ...

  2. php 教师批改作业代码,【图】请老师改一下_请老师修改文章的敬辞,请老师批改作业用敬语,请老师修改作文怎么说_指标编写互助答疑论坛_理想论坛 - 股票论坛...

    大智慧用波神凯线指标主图 (也许比你这个好用) INPUT:年(8,0,100),月(1,1,12),日(1,1,31),年2(8,0,100),月2(1,1,12),日2(1,1,31),做多吗(1 ...

  3. 软件测试的指标成功率靠谱吗,【图】怎么样才能测试公式的成功率?_股票公式,股票,炒股,股票软件,炒股软件_指标编写互助答疑论坛_理想论坛 - 股票论坛...

    只要你的选股指标中选股符号是:XG(如果是别的选股符号,你可以将它改成"XG"符号) 就可以在原选股代码下面加上下面这段代码,就可以在副图上显示你手上选股指标的成功率了. 注:本例 ...

  4. c语言反推三角函数,【图】MACD反推公式的问题_反三角函数公式大全,年龄问题的所有公式,配套问题公式大全,反导数公式大全,拉氏反变换公式_指标编写互助答疑论坛_理想论坛 - 股票论坛...

    MACD是常用的公式,这两天心血来潮就反推一下各曲线走平时的对应价格,但是发现DEA走平价格与交叉价格是一样的?从原理上来讲,似乎不应该一样,不知是不是自己搞错了?向老师请教.(写的比较简略,稍加修改 ...

  5. php股票公式,【图】请老师帮忙编写个选股公式_股票公式,选股公式,股票论坛,炒股软件,股票指标_指标编写互助答疑论坛_理想论坛 - 股票论坛...

    EMA13:=EMA(C,13); EMA21:=EMA(C,21); EMA34:=EMA(C,34); EMA60:=MA(C,60); VA2:=(2*CLOSE+HIGH+LOW)/4; VA ...

  6. matlab日线转周线的做法,【图】请问如何才能把日线选股公式改成周线选股公式_金叉_指标编写互助答疑论坛_理想论坛 - 股票论坛...

    请问如何才能把日线选股公式改成周线选股公式,谢谢. 如下面3个日线选股公式如何才能改成周线选股公式: (一). MTM:=C-REF(C,1); DX:=100*EMA(EMA(MTM,6),6)/E ...

  7. matlab输入矢量场求散度,微波仿真论坛_附录 COMSOL Multiphysics的MATLAB矢量计算基础.doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp电子工程/通信技术&nbsp>&nbsp天线/微波/雷达 微波仿真论坛_附录 COMSOL ...

  8. 软件技术论坛_新一代三维GIS软件技术论坛在南宁召开

    10月24日上午,新一代三维GIS软件技术论坛在南宁召开.论坛围绕新一代三维GIS技术的应用展开,来自多个领域的专家就新一代三维技术应用的最新进展情况.取得的成效及对未来工作进行探讨.论坛由超图集团平 ...

  9. 游戏开发论坛_国内游戏开发站点与论坛

    用户下载APP习惯: 1.周末为用户一周下载的高峰期 2.20点-22点为用户一天的下载高峰 76%的应用下载行为来源于第三方引用商店 希望成为策划的同志应该培养的习惯. 1. 浏览,对于大量的资料要 ...

最新文章

  1. 框架模式与设计模式之区别
  2. Linux之复制、移动文件及目录命令
  3. 【腾讯Bugly干货分享】Android Linker 与 SO 加壳技术
  4. LVM基本应用 扩展及缩减实现
  5. 【2012百度之星资格赛】J:百度的新大厦
  6. mysql lock not wait_【MySQL】关于MySQL出现lock wait timeout exceeded 的解决方案
  7. POJ-1149(网络流)
  8. python画蜡烛致敬烈士_Python量化交易-绘制蜡烛图 !这个图不像你的钱哦!
  9. MySQL空间索引简单使用
  10. 分布式服务框架选型:面对Dubbo,阿里巴巴为什么选择了HSF?
  11. iOS面试题:Socket原理
  12. 一台服务器能承载多少用户_干货系列三:一台服务器能承载多少人同时访问?...
  13. table.render 中 cols 属性 【【问题】】
  14. 爬取今日头条街拍美女图片
  15. 华为云弹性云服务器助力打造更安全可靠、灵活高效的云空间
  16. 用于说明卷积神经网络(ConvNet)的Python脚本
  17. 大数据三维可视化展示系统的应用分析
  18. WHT, SLANT, Haar
  19. linux人脸识别终端是什么意思,瑞芯微如何看待天波首发得RV1109 Linux人脸识别终端...
  20. 2017湖湘杯Writeup

热门文章

  1. 计算机文化基础在线作业答案,2016春华东石油《计算机文化基础》第一阶段在线作业.doc...
  2. 教小白白Hue安装部署
  3. HBase的实现基础 Google Bigtable论文中文翻译
  4. 大家小心~~财付通故意留下bug给骗子留下后门
  5. C/C++ _beginthreadex 多线程操作
  6. Python:实现tower of hanoi河内塔算法(附完整源码)
  7. 最好用的截图软件Faststone Capture 6.9 安装包及注册码
  8. NSString中 initwithformat与stringwithformat区别
  9. Cow Contest POJ - 3660 Floyd算法,关系链图
  10. hdu 4022 Bombing