分享

麦语言编程学习方案

 安安书苑 2015-12-12
麦语言编程学习方案  发贴心情 Post By:2015/11/29 14:00:00    客户端:赢智V8.2  版本号:8.2.433 - 20151124
  

为什么要量化?

要让8姑娘根据你的想法执行交易,第一步必须学会与8姑娘交流的正确方式。这个沟通方式我们称之为量化。

就像女朋友说“我感冒了”,而你回以“多喝水”,那肯定是没得聊了。

跟8姑娘的沟通也是这个道理,你如果告诉8姑娘“K与D金叉时平空头开多头,K与D死叉时平多头开空头”。8姑娘肯定分分钟就不理你了。那正确的沟通方式应该是怎么样的呢?

既然你的交易条件里用到了K和D,那你就要先跟8姑娘沟通K和D分别是什么,然后一步一步讲,直到最后一个变量的定义表达式里只使用了H、O、L、C这些基础数据为止。因为只有这些基础数据对于8姑娘来说才不需要解释。 

D的值是通过对M2个K值计算加权平均得到的。

K的值是通过对M1个RSV值计算加权平均得到的。

RSV是收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。这里的所有定义都只是用了基础数据,所以到这里沟通就完成了。

那N、M1、M2你怎么没说呢?因为我写到参数列表里了,8姑娘会把参数列表里的数据理解为基础数据,所以不需要过多解释。如果我没写进去,那么就要在RSV前面,先告诉8姑娘这三个参数的取值了。 

通过这样一个过程,我们得到了8姑娘的工作流程,也就是我们说的模型。如下图:


图片点击可在新窗口打开查看此主题相关图片如下:2.1.png
图片点击可在新窗口打开查看

那8姑娘是如何根据模型工作的呢?我们就要看一下她的内心世界了,如下图:


图片点击可在新窗口打开查看此主题相关图片如下:2.2.png
图片点击可在新窗口打开查看

你应该大概能明白,为什么让女朋友多喝水的回答是多么愚蠢了吧?

你看到的K线图表是8姑娘表面意思,而在她的内心则是这张满是数字的表格,你能从这些数字里分辨出来哪个是你刚才说的高、低点吗?你让人家去找高点和低点,又不告诉找的规则,难怪8姑娘会不理你。


那我们要如何读懂8姑娘的内心世界呢?且容我慢慢道来。

         

0   发贴心情 Post By:2015/11/29 14:00:00    客户端:赢智V8.2  版本号:8.2.433 - 20151124
  

8姑娘内心的二维世界

我们刚才看到的表格,就是8姑娘内心的二维世界。

在这个世界里,每一列代表一个K线位置,每一行代表一个变量。

这个世界就被分割成了一个一个的小方格,在每个方格中都存储着一个数据。

横向来看,是以变量为单位的,在不同的K线位置上都有一个值,这些值共同组成了一个序列,这个序列的名称就是这一行的变量名称。

纵向来看,是以K线位置为单位的,一个K线位置上可以有很多变量,一个变量在一个K线位置上只存储一个数值。

这张表随着时间推移,横向向右扩展。随着变量个数的增加,纵向向下扩展。

在横向,有6个默认的变量序列,这是行情的基础数据。是8姑娘已经理解的,所以,我们在编写模型时拿来就能用。

你在模型里定义了一个新变量,就相当于给这张表格的一行取了一个名字,这张表也就向下扩展了一行。理论上,这张表格可以无限向下扩展。

除了系统默认的前6行,你自定义的所有变量都是衍生数据,从前6行的基础数据变换而来。


定义一个变量,除了要赋予他名字之外,还要给他思想,这才是变量存在的真正意义。

所谓的思想,简单一点说就是变量数据的计算公式。这个公式可以简单到只是一个常数,也可以非常复杂。

但是有一个要求,就是公式中用到的所有变量名称在前面都已经定义过了,不能在后面定义或者没有定义。

也就是说,你定义的第一个变量,一定是只用到了6个基础行情数据。


我们把模型加载到K线图的过程,对于8姑娘而言,就是扩展她内心世界的过程。先从上到下,再从左到右。


细心的朋友可能会问了,刚才那个KDJ指标,我平时看盘的时候是三条线啊,但是为什么在8姑娘的内心还有一个RSV呢?

这是一个悲伤的故事,仅是因为变量名称和表达式之间连接的方式不同。

RSV后面用到了:=连接,所以他并不像K、D、J这三个喊着金汤勺出生的家伙,他们是用:连接的。所以RSV只能在后台默默无闻的工作,被所有人所忽视。

对于一个复杂的模型,往往只有极少数的变量有机会显示出来,更多的变量只能存在于后台。

看来任何一个世界都不是绝对公平的。


好了,理解了8姑娘的内心世界,我们应该清楚跟她沟通的规则了,这也是我们编写模型需要遵守的基本规则:

1.系统对基础数据预留了变量名称,使用这些变量不需要事先定义。

2.定义一个变量首先要给他取一个名字,不能与前面出现过的任何一个名字重复,然后用:或者:=与后面的表达式连接,表达式用分号表示结束

3.表达式里,如果用到了衍生变量,必须在前面是已经定义过的。

你回头看一下,第一幅图中的2、4、5、6行是不是符合这三条规则?

 
[此贴子已经被作者于2015/11/29 14:18:25编辑过]

单帖管理 | 引用 回到顶部
帅哥哟,离线,有人找我吗?
1608040号模拟版用户
  3楼 个人资料 | 历史发帖


加好友 发短信
等级:中士 贴子:47 积分:0 注册:2015/8/12 22:11:00
  发贴心情 Post By:2015/11/29 14:00:00    客户端:赢智V8.2  版本号:8.2.433 - 20151124
  

解决编程实际问题

以上介绍的都是理念。下面我们解决一些编程中的实际问题。

所有的编程都可以归结解决以下三类问题:

第一,表达式问题以当前视角,给出变量的计算公式。所谓的当前视角,就是不考虑位置关系,把那个位置当作是当前位置。事实上,前面那张表中任何一个方格的数据,都是把这个方格所在列当成当前K线来解读的。

第二,逻辑判断问题。其实可以归结成表达式问题,但是考虑到逻辑判断比较重要,而且和纯计算数值的表达式略有些不同的,所以独立出来。

第三,定位问题。只有一个位置不需要确定,那就是当前,这里说的当前,是K线图上最后一根K线,不是前面说的当前视角。定位的结果是得到历史某个位置到当前的距离。定位的目的是到那个历史位置去取值,可以是逻辑值,也可以是数据值。当然定位还有另外一个作用,就是画线,这种情况我们之后再讨论。


 
[此贴子已经被作者于2015/11/29 14:29:10编辑过]

单帖管理 | 引用 回到顶部




  发贴心情 Post By:2015/11/29 14:00:00    客户端:赢智V8.2  版本号:8.2.433 - 20151124
  

表达式问题和逻辑判断问题

这两个问题都是比较简单的。关键点是以当前视角给出计算公式,不需要考虑计算公式之外的位置问题。

先来一个简单的例子:求当前K线最高价和最低价一半的价格。

这是一个和位置完全没有关系的问题,因为当前K线是不需要定位。所以我们可以直接定义变量名称并给出计算公式。

HL:(H+L)/2;

如果在表达式中,某个数据需要通过定位从历史中取,那么可以用一个变量代替。然后在前面通过定位问题的解决方式,定义这个变量。

例如,计算最高、最低价,以及前一根K线收盘价的平均。那么可以先将前一根K线收盘价视为一个变量ZC,那么这个表达式就可以写成

HLC:(H+L+ZC)/3;

但是ZC没有定义怎么办?在HLC前面以定位问题的解决方法定义ZC就可以了。定位问题我们后面详细讲。


在一个区间内计算数值,如果有系统函数,则与定位无关。因为这个定位过程是有系统函数后台完成的。

例如:最近5根K线收盘价的平均值。虽然理论上需要分别定位到前面4根历史K线,然后取到收盘价,再计算平均。但是由于有系统函数MA(),所以仍是在当前K线上解决的,和定位没有关系。

在当前位置上解决区间问题的系统函数我们总结如下:

1.所有的平均值的函数
2.所有的数理统计函数
2.HHV()、HV()、LLV()、LV()函数
3.COUNT()、SUM()函数
4.EVERY()、EXIT()函数
5.LOOP1()函数

 
[此贴子已经被作者于2015/11/29 14:31:05编辑过]


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多