几行简单的代码,居然是这几年我写的最多的,就是图中这样,价格突破均线后声音报警,很多不熟悉电脑的交易者根本不会写他们想要的,就是出现交易信号时有个声音提醒。 毕竟一直盯盘是件苦力活,初入交易场的时候人比较兴奋,盯盘是可以的,但随着时间的推移及年龄的增长,人的经历及专注力会有所下降, 这时候借助工具提高工作效率就变得尤为重要。这里贴出代码,需要的朋友自行到文华创建指标, 也可以自行定义语音,比如报出具体商品名称。后续如有时间,我再做一期视频。今天到此为止,再见!
粉丝768获赞924



今天给大家讲解一下文化财经的一些快捷键的设置啊,这个是我自己摸索出来的,仅供参考, 好吧,然后首先呢,这个是呃文化财经的一个下单的一个窗口吧,正常,因为我是把屏幕放的比较大,大家看起来能够清楚一点,正常的话这个窗口应该很小的,是缩在下面的,好吧?然后点右上角的账户,期货账户下单组窗口,然后这个就会跳出来了, 好吧。然后接下来的话,很多人习惯了,就比如说买多买酷,他们一般性都是鼠标去点的,但我个人觉得这个相对来说速度会慢一点。 比如说举个例子,像你正常在这边点啊,涨上去了或跌下去了,或者说怎么样子,你去鼠标先看了行情,鼠标移过去,对吧?再去点,这样会比较慢一点。为什么?因为我们直接敲键盘,比如说我感觉比较不错,我就啪敲一下,啪敲一下就进去了,啪 敲一下开超,啪敲一下平超,啪敲一下又开超或怎么样?就是这样的话,就可以做到一个速度比较快的啊,并不一定是要做高频做草单的人要去学习快捷键, 呃,做波段的,做趋势的,呃,如果为了方便交易这些等等的,也是可以去使用一下快捷键的,因为当中除了像一些快捷下单之外,还有一些调整手术也好,呃,调节些别的也好,也都是可以用快捷键去实施的。 那我们先简单看一下,首先像我们呃一般性快捷键的话,是在呃文化展厅的话,是在左边这个界面有个叫草丹乐键,点一下 会出来这样一个窗口,这个是默认设置,就是大家呃打开的话才能看到的,应该是这个样子,然后我教大家教一下大家怎么设置,像这个未设置这个我们先快速的先帮大家设置一下,然后大家先看 看一下,然后再一个个讲解。这个的话开关键的话一般进行设置 a, 这个根据个人的习惯,挂一买设置的是四导键盘四 对价买设置小键盘一,挂一麦设置小键盘六,对价麦设置小键盘三。然后这边同样下单时测试掉原有挂单这个选择四, 再点到选项设置里面,然后有个按照禁止双向持仓原则自动分配开仓平仓这个启用。 好吧,整的一套,我们一般性来说快捷键设置就这么多,然后我给大家简单的讲解一下, 首先这个开关键大家可以设置字母, ajx 等等的一些字母都是可以大家设置,根据自己一个喜好,然后这有个什么作用呢?就比如说,呃,看注意这个设置,开关键好以后,开启草单后才能使用草单功能, 也就是说这个东西你设置完好以后,打开了,你再用快捷键,它是有效的,如果关掉了,你用快捷键就是无效的。 ctrl a 一起按一起按的话,它会出来这样一个窗口,出来这样一个窗口,这个窗口有的时候你用快捷键就是有效的,再按一下关掉了,你用快捷键就是没效的。 好,这个很容易理解啊,接下来挂一买这个的话,可以参考我之前的棋盘口课啊,理解一下是什么意思。好吧,这边简单跟大家再讲一下,像挂一买的话,像这个窗口移过来一点,挂一买我们进的是多单买嘛? 是多单换一买,指的是在买衣架上面进多单。比如说我开一手做的,我按一下小键盘的四,我按一下这边的六十一就会变成六十二,我的单子就挂上去排队了。对价买,我按一, 那就是直接,比如开手做的,我就直接在四一二九,后面的十一张就会变成十张,一手单子直接买在四一二九上,他是直接成交的,不需要排队。 好吧,那同样的,像这个小键盘一根是因为我们是电脑的键盘,只要买一个普通的键盘,也就几十块钱吧,就可以进行快捷键操作了,不需要去买特别奇怪的那些东西。好吧?那当然,如果说你是一台笔记本电脑,你是没有这个小键盘的, 你只有那个字母键,那也是可以的。比如说你在字母键上面设置 y 跟 h, y 的话你设置怪异,买 h 的话设置对加麦啊,对加麦也是可以的, 对,讲买也是可以的。好,那也就是这两个键的话,也是可以直接进行一个快捷键的一个操作。好吧,同样的后面的键我们也可以,都是可以用字母去替代 啊。这个可以根据你自己的喜好,比如说你调成 q, 调成 w, 调成其他键,只要你按着舒服都可以,按着舒服都可以,好吧,我往下移。

大家好,接下来的两节课呢,我们会分析一些经典的思路,来学习一下指标线的编辑。今天这一节呢,我们来学习一下常见的简单指标线的编辑方法。 这节课程的主要内容呢,大概分为以下这几个方面。首先是插入颜色线型,即在指定的位置上标注文字图标,还有指标线的变色。这部分内容呢,是看盘常见的一种交易思路,也是指标线边写的一个基础内容。 接下来呢是介绍一下 k 线变色的一个基础内容,接下来呢是介绍一下 k 线是红色空心的,阴线是青色实心的, 可能大家在平时使用过程当中有不同的使用习惯,想自己呢去编一套 k 线的颜色,或者是空实心的一个显示,那么这部分的学习呢,就可以实现这样的思路了。 最后呢,再给大家介绍几种特殊的指标线的一个写法,一些交易者呢,他会把指标线定义成特殊的形式用来看盘, 或者说呢是定义一些个性化的指标,那简单的编辑可能就没有办法实现了,就需要一些特殊的处理。那这部分的内容呢,就是给大家展示几种特殊的写法。这节课的最后一部分内容呢,就是一个编辑的练习。 那在正式学习这节课之前呢,我们先来回顾一下上一节基础课程当中给大家介绍的几种定义指标线的操作符。我们首先看冒号, 它加载之后呢,是既能显示指标值,又能显示指标线的冒号等号呢,加载之后是不显示指标值和指标线的间间呢,加载之后是按照 k 线,嗯附属坐标的这种方式来显示的, 点点呢,加载之后是按照独立坐标的方式来显示的,最后两个呢就不是操作符,那是函数 null 呢就是,嗯,只显示返回值,不显示线了。我们到软件当中呢来加载看一下效果。 首先我这里是一条五周期的均线,我们在后面呢直接写上 null 语法检测之后呀,我们来加载一下, 我们看在图上左上角的这个地方呢,只能显示这个五周期均线的这个数值,但是在图上呢就不显示五周期均线的这条线了。那如果我把 note 改成 notax 呢, 同样也是加载来看一下, 就是跟刚刚正好是相反的,在图上我只显示这条五周期的线,但是左上角呢就不显示五周期的这个均线的数值了。这个呢就是 note 和 notex 的 一个使用方法和区别。 那这两个函数和刚刚的这四个操作符呢,都是用来定义指标线的常用方式。 我们了解了这个指标线的定义方法之后呢,就进入今天的一个正式的学习。首先是插入颜色和线形, 这一节呢在第一节基础课程的时候已经给大家介绍过了,就是我们在指啊均线的后面直接设置颜色和线形。 方法呢就给大家再回顾一下,就是在我们的软件的编辑平台上插入插入颜色或者是插入限行,在这里呢大家可以设置想要的颜色或者是限行就可以了。 这个呢是在指标线后面我们直接设置颜色和线形的一个方法。那交易者除了想设置这个指标线的颜色和线形之外呢,还有一些看盘的交易者呢,他们想在特殊的位置上去标注一些文字,或者是笑脸呀,上下箭头呀这种表情 来给自己呢去做一个提示。那当然呢,他是可以通过手工画线添加标注的这种方式去实现的,但是呢他需要在每个特殊的位置上他都要手动的去标注,其实就比较麻烦了,那通过编辑去怎么来帮他实现呢? 我们首先来看这样一个例子,当根 k 线的收盘价高于上一根 k 线的收盘价的时候,我们在最高价的这个位置上呢标注一个文字长,我们可以一起到软件当中呢来写一下 那标注文字用到的函数呢?还是 draw text 这个函数,我们先来看一下这个,它的这个函数说明 他说的是当满足条件的时候呢,我们在指定的位置上去标注一个文字,那我们的这个需求是不是可以写出来了?条件,条件就是收盘价高于上一根 k 线的收盘价, 那么也就是收盘价是 c 大 于上一根 k 线的收盘价,取上一根,我们用 r、 e、 f 这个函数 这样写呢就可以了。然后呢第二个参数是在指定的位置上,指定的位置我们指定的是在最高价的这个地方,就是 h。 然后呢写一个文字长 好,这样呢就可以了,但是这里呢要注意一下,就是我们在写文字的时候,注意要用单引号给它括起来,这样呢就写好了, 这是插入文字,那插入表情呢,我们用到的函数是 draw icon 这个函数, 这个函数的用法呢跟刚刚的这个插入标注呢是类似的,也是当条件满足的时候呢,在指定的位置上,我们去插入表情,那插入具体的表情呢,我们可以在软件的编辑平台上插入 插入图标,在这里面呢软件是提供很多表情给大家选择的,这个呢就是标注文字图标的这么一个编辑的方法,是看盘交易者呢经常能用到的一个思路, 那接下来呢,我们来再看一下另一个常见的看盘思路,指标线变色, 什么是指标线变色呢?他就是在不同的条件下,将指标线显示为不同的颜色,放片干盘分析。那么在编写这个思路的时候呢,我们首先呀需要将需要变色的这个指标线呢给他定义出来,然后呢再去编写变色的部分, 那这里用到的函数呢,就是 java 这个函数,我们还是先到软件当中啊,来看一下它的这个函数,说明 这个函数呢它有四个参数,第一个参数呢是条件,当满足这个条件的时候呢,我们把 data 这条线呢给它画一个颜色, 那如果我前面的这个条件没有满足的话呢,我们就用第二种颜色呢去画这条线。 那回过头来,我们到 ppt 当中来看一下我的这个需求,我这里呢是定义了六条瀑布线, 这个瀑布线呢相信大家是有一定的了解了,这里的需求呢是瀑布线如果上涨就显示为红色, 瀑布线如果下跌的话就显示成绿色,也就是说我这一条瀑布线,我想让它通过嗯不同的条件呢来控制它显示不同的颜色。那关于瀑布线呢,我们可以加载给大家来看一下, 我们软件呢是提供瀑布线呢给大家来直接使用的,我们来加载看一下。 加载之后呢,我们看每一条线呢,它都有自己的颜色这六条线,并且呢这六条线的颜色它是固定的, 那这里呢,我们就用瀑布一第一条线,这一条线呢来给大家举例,我们用 drawcolorline 这个函数呢去给它变色, 条件呢是如果瀑布线上涨,我们就给它定义成颜啊,红色,那如果瀑布线下跌,我就给它定义成绿色。 那如何去量化瀑布线的上涨和下跌呢?上涨呢其实就是单根 k 线,瀑布线的值跟前一根 k 线去做比较,前一根我们用 r、 e、 f 这个函数去取,所以说瀑布线上涨,我们就可以用 当根儿 k 线,瀑布线的值 p d 一 大于前一根儿 k 线的这个瀑布线的值就是 r e, f, p b, d, 这样写呢就可以了。那如果我这个条件成立的话,我就把这个瀑布一这条线设置为红色, 那如果这个条件不成立的话,这条瀑布一的这条线就设置为绿色。这样呢我就把瀑布一的这条线呢就写好了。 那其他的这五条线呢,我这里就不一一给大家列举了,处理方法呢是一样的,大家课后呢可以自己去练习一下,能看懂函数说明呢,其实编辑起来就不难了, 我们回过头来再看一下这个 ppt, 我 们再来看一下,主要卡了烂这个函数,这个函数呢,它有四个参数,但它的这个变设条件呢,其实就是两个,就是在 a 及 b 的 这种形式,这两个条件正好是相反的, 那么我们可以直接用 drawcolorline 这个函数去编写,那如果我的这个变色条件是多个呢?也就是说就不是这种非 a 即 b 的 这种形式,我们应该怎么去写呢?我们来看下边的这个例子。思路二, 它说的是 k 线在不灵上轨以上,中轨显示为红色, k 线在不灵下轨以下,中轨显示为绿色。看到这个需求呢,我们首先需要将不灵通道的上轨、中轨、下轨首先要给它先定义出来, 不灵通道呢,软件也是直接给大家提供使用的,我们来加载看一下, 我们可以看到,在这个图上,我们显示了布林通道的上轨,中轨,还有下轨这三条线, 我们再到 ppt 当中呢,来看一下这个需求,它说的是,嗯,指标线变色的条件就是用 k 线和布林通道的上轨和下轨的一个大小关系来判断的, 那么我们为了分析简单呢,我们可以把 k 线简单的理解为是 k 线的收盘价 c, 那 么我的这个判断条件就变成了收盘价 c 大 于布林上轨,中轨是红色的, 收盘价 c 小 于布林的下轨,中轨是绿色的。那我通过刚才我们加载的这个布林通道的这条线啊,这个指标呢,我们发现除了刚刚我说的这两种情况呢, k 线和布林通道之间的关系, 还有一种情况就是收盘价 c 在 不临的上下轨之间,那它的变色条件就不是刚才的这种被 a 及 b 的 关系了。所以我们不能再用 drawcolorline 这个函数,我们要编辑的话,就得用其他的方式来进行编辑, 这里呢我们可以用 if 这个函数,我们首先来看一下编辑,首先呀先要定义出来布林通道,这个我们直接可以在软件当中呢复制过来,然后呢用 if 这个函数,把两个变量呀分别给它列出来,定义钟轨的颜色, 当最高价 h 大 于不临上轨的时候呢,显示中轨为红色,那不满足条件的话,中轨就给它显示为空值。 这里我用的是最高价 h, 不是 用的我刚刚说的收盘加 c, 是 因为呢这根儿 k 键只要有一部分高出不临的上轨就可以了,所以呢我用这个最高价 h 条件呢就比较宽泛了, 那同样的最低下小于不零下轨,钟轨就显示为绿色,如果不满足条件的话,钟轨呢就返回为空值。 也就是说对于这种多个变色条件的,我可以用 if 函数,把这几种情况分别的都给它列出出来,分别定义这个指标线的颜色,这样呢就可以了。 那对于刚刚我这个思路呢,我还有另外一种写法,我可以用帕拉丁这个函数,这个函数的函数说明呢,我们也一起来看一下, 它说的是当条件满足的时候,我们就用某种颜,某种颜色,把这些满足条件的点呢都给它连接起来, 那我刚才的这个思路呢,就可以这样写,还是呢我首先要先定义出来布林通道, 然后呢把条件带入到这个帕德莱的这个函数里面,当条件满足的时候,我就用这个红色把钟轨给它连接起来。当第二个条件满足的时候,我就用绿色把这些钟轨的这些点呢给它连接起来, 这个呢就是对于多个嗯变色条件的两种常用的写法,我们来总结一下, 那对于指标线的变色呢,如果只有两个条件,并且这两个条件正好是相反的,就是非 a 即 b 的 这种形式,我们可以直接用 to 卡了烂这个函数,那如果是多个条件的话, 我们可以一个一个的把这个条件都给它列举出来,用 if 函数,那么也可以呢,用帕特烂这个函数,把满足条件的这些点呢都给它连接起来, 这个呢就是指标线的一个变色,那指标线可以变色,那 k 线呢? k 线也是可以变色的, k 线变色呢,这对思路还是主要用来用于看盘分析的,手动交易者是能经常用得到的。在软件当中,我们默认的 k 线呢,阳线是空心红色的,阴线是实心青色的,那当交易者他有不同的使用 这个使用习惯的时候呢,它就可以自己编写一套 k 线的颜色和空实心的显示了。那么这里重点用到的函数呢,就是 drawcolorkeyline 这个函数,我们还是先到软件当中啊,来先看一下这个函数的函数,说明 这个函数的用法呢是当满足条件的时候呢,我就用某个颜色去画这个 k 线,最后这个参数它控制的是这个 k 线是空心啊,还是实心? 如果我在这个位置上写零,表示的是 k 线是实心的,如果我这个地方不写零,比如说我写一,那我这个 k 线就是空心的, 那回过头来,我们来看 ppt 当中的这个需求,它说的是十周期均线, k 线呢?如果在十周期均线以上呢,就是红色实心的,那如果在十周期均线以下呢,就是蓝色空心的。 对于这样的思路呢,我们就直接可以用 colorkeyline 这个函数去写了。首先呀,我要先定义出来这个均线,十周期均线, 然后呢,我去用这个把那个条件呃都带入到这个 draw color key 那 这个函数里边, 当收盘价 c 大 于十周星期线的时候,我这个 k 线是红色实心的,且零呢,是实心。 那当收盘价小于等于十周期均线呢?我这个 k 线就画蓝色空心的,我这里可以用,一来控制空心, 那注意这里呢,我还写了一个平盘的条件,就是小于等于,虽然说我这个思路里面呢,他并没有提到平盘应该怎么处理,但是我们编写的时候呢,是要考虑全面的,不能忘记平盘的处理, 那写到这里呢,我这样一套 k 线就写完成了。 k 线变色的写法其实还是比较简单的,我们只要掌握了 draw colorkeyline 这个函数的用法其实就可以了。 那关于这个函数呢,我们再来看一个关于这个 k 线变色的另一个思路,来加深一下这个函数的一个用法的一个理解。思路二, k 线实体在布林上轨以上,显示为黄色,阳线空心,阴线实心。 下面两个条件呢,是 k 线实体在布林下轨以下,或者是 k 线实体在布林上下轨之间。 那我们看到这个思路,第一感觉是比较乱,我既要判断 k 线实体和不临上下轨的一个大小关系,我还要判断 k 线是阳线还是阴线,那我稍有不注意的话,可能就写错了, 所以平时我们在编写的时候,我们要养成良好的一个量化思路的一个习惯,看到这种复杂的思路,要逐一的把条件量化出来,你不要直接就去套用公式或者是函数,这样就很容易出现错误或者是遗漏。 那首先呢,我们来量化一下我这个 k 线变色的一个条件,其实就是把上面的这个思路呀给他就是拆开来。 我们首先看条件一就是 k 线实体在不零上轨以上,且 k 线是阳线,这个是我的 k 线变色的一个条件一。条件二呢就是 k 线实体在不零上轨以上,且 k 线为阴线。 条件三就是 k 线实体在不零下轨以下,且 k 线为阳线。 条件四就是 k 线实体在不零下轨以下,且 k 线为阴线。 条件五是 k 线实体在不零的上下轨之间,且 k 线为阳线。条件六就是 k 线实体在不零上下轨之间,且 k 线为阴线。 好,我这样分别定义出来六个条件, k 线变色的条件,那我同样的思路这样写是不是就清晰的多了,那我在编辑起来呢,就简单容易了,也不容易出错和遗漏了。最后呢我们写出六条这样的就是 k 线就可以了, 那这里呢我们还要注意这样一个问题,就是在前面的几个例子当中呢,我们简单的把 k 线的收盘价就理解为是 k 线了,那在这个思路当中,它明确定义的判断条件是 k 线实体, 所以我们不能再沿用以前的这个方式,简单的把收盘价用来就是做处理就可以了。那我怎么去判断 k 线实体呢? 比如说看我这样一根 k 线,看这根阳线, 那它的这个整个的实体呢?它都是在布林的上轨的上边的,实际上呢,它这个实体的这个下边界就是开盘价, 上边界是收盘价,那对于我这根阳线呢,开盘价是小于收盘价的, 那我要判断这根 k 线的实体都在布林上轨之上,也就是说我用小的这个开盘架去判断, 我的这个小的开盘架都比你这个上轨大,是不是就能证明了我整个的这根阳线的实体都在你这个布林上轨以上了? 好,那我们再来看它左边的这根阴线,我们看这根阴线,它整个实体都在不临上轨的上面,实际上呢,就是这个实体的下边界呢,是收盘价,因为它是阴线嘛,上边界是开盘价, 那么我对于这样一根阴线,收盘价是小于开盘价的,我要判断这根阴线的实体都在布林上轨以上的话,那是不是就是说我用这个小一点的收盘价, 这个小一点的收盘价都比这个布林上轨的这个值大,是不是就可以证明了我的这根嗯,阴线的这个实体,它整个都在布林上轨以上了。 那么这样呢,我是对于阳线,我用的是开盘价去跟上轨比较,那对于这根阴线呢,我用的是小一点的这个收盘价去跟上轨比较, 那我要分别写这两个条件,其实就比较复杂了,我这里呢可以用到一个数学的一个函数 m i n, 取的呢是收盘价和开盘价它们两个之间的一个最小值。 有,刚才通过刚才的分析,就是当它们两个的最小值都比这个嗯,布林上轨大的时候,就可以证明了。我不管你是阴线也好还是阳线也好,我整个的这个实体呢,都是在这个布林上轨以上的。 所以说,不论是阴线还是实线啊,还是阳线,我们判断这个 k 线的实体是否在布林上轨以上,我都是用这个开盘价和收盘价二者当中的一个最小值去判断的,去跟布林上轨去比较。 当我这个最小值都比你这个上轨大的时候,那么 k 线的实体就一定是在上轨以上了。 那么同样的,如果我要是判断这个 k 线实体在布林下轨以下呢, 那我还其实还是用到的是开盘价和收盘价它们两个去判断的。只不过呢,这里呢,我要用到的是二者当中的最大值了, 当最大值都比这个布林下轨小的时候,是不是就可以证明我整个的这个 k 线实体是在布林下轨以下的? 所以说,不论我是阴线还是阳线,如果二者当中的最大值都小于了下轨,那么 k 线实体就是在下轨以下。 我们来看这里的条件一和条件二的两极边线,就是对 k 线实体和上下轨之间的一个大小的一个定义。 最后呢,我们以刚才条件一就第一种情况为例,画 k 线,它刚才的条件一是 k 线实体在布林上轨以上,且 k 线为阳线,然后画黄色空心儿的 k 线。 好,我们来看一下边写用到的函数呢,就是 draw colorkeyline 这个函数。 k 线的实体呢,在不零上轨以上,且 k 线为阳线,我们画黄色的空心的 k 线,我这里写一, 那么注意一下,我这里呢并且了一个平盘的条件,那跟上一个思路其实是一样的,虽然呢我条件当中没有给出平盘的定义,但是我们编写的时候不要遗漏了对平盘的一个处理, 后边的这五个,嗯, k 线变色的条件呢,也是那样的,也是类似的一个处理方法,视频课程当中由于时间关系呢,就不一一给大家列举了,那么大家可以课后呢自己练习一下。 写到这里呢,这样一个完整的 k 线变色思路就写好了。我们再来总结一下,不论是编写 k 线的变色,还是说是其他思路的编写,我们一定要准确的量化思路,这样编写出来的模型呢,才能达到效果。 那最后一部分呢,我们讲两个指标线特殊的写法,这种思路也是比较常见的,有一些交易者呢,会把指标线定义为特殊的形式, 或者他自己定义的一些特殊的指标值,那我们用上边的这种简单的编写就没有办法实现了,我们就需要进行一些特殊的处理。 我们先来看一下这样一个思路,思路一,他求的是 n 个周期的均线,从日内第一根 k 线开始算, 我们知道啊, m a 这个函数是求均线的,但是如果 k 线根数不足 n 根的时候,它是不显示均线的,我们可以到软件当中来看一下效果, 比如说我定一个 m a 均线,五五周期均线, 我们找一个, 比如说这个合约,我们加载了五周期均线, 那么它,嗯,前面几根是不足五根 k 线,那么多的时候,我们可以看,其实它是不显示均线的, 那么但是我们在实际编写的时候,我们其实是要确认这种情况的,当实际根呃 k 线根数不足的时候,是像现在这样,我就不处理了,不显示 k 线了。还是说我是按照实际的 k 线根数来进行 数据的处理?比如说我只有一根 k 线的时候,我就只计算一个周期的均值,那我有两根 k 线的时候,我就计算两个周期的均值, 三根我就计算三根的,等等等,直到大于五根 k 线了。你比如说我家假如说我这里有二十根 k 线了,那我就正常计算最近五根 k 线的一个均值。 那这类思路其实在日类模型当中是经常能够用得到的,就是说用按照实际的 k 线根数我们来计算均值,我们来直接来看一下边写吧。首先呢,我先定义一个 n, n 就是 当天的 k 线根数 bastast 呢是上一次满足条件到当前的周期数,条件呢是单根 k 线的日期和上一根 k 线的日期不是同一个日期了。 那由于条件成立的单根 k 线呢, bastast 的 返回值是零,所以加上一才是当天的 k 线根数,这种写法大家要啊熟记以后会经常用得到的。 然后我们来看一下均线的写法,我这里呢用到了 if 函数,满足条件的时候返回它,不满足条件的时候返回它。 条件是什么?条件是当天的 k 线根数不足 n 根的时候,按照实际的 k 线根数去给我计算这个均线周期数是多少,嗯,就是有多少我就取多少, 如果 k 线根数足够多的话,我就正常计算这个,嗯,均线, 这是一种特殊的写法,处理单根 k 线不足 n 根的情况。那关于指标线的一个特殊的写法呢?视频教程当中再举一个例子, 显示区间内的均线,它呢只想只想显示某个时间段内的一个计算的均线,比如说上午九点半到十一点半,只显示这个时间段内的均线啊,我不显示。 那对于这样一个思路呢,首先我们还是要定义出来时间,然后呢在这个时间段内我们去写均线,我们来直接看一下边写,还是呢,先要定义出来当天有多少根 k 线, 然后呢用了一个 if 的 嵌套语句,我们先看最外边的,就是在上午九点半到十一点半的这个时间段内,我们去计算均值,不在这个时间段内就不计算均值了,让它显示成空值, 限制时间范围内。我们这里用到的函数是 time 函数,然后用 and 这个操作符呢给它连接起来, 然后我们看里边的这个函数,实际上跟上个例子当中 k 线不足 n 根的,按照实际 k 线根数计算 m a 均线的这个处理方法是一样的,这样呢我就便写好了。 那对于指标线的特殊显示呢,这里只是用均线简单的介绍两种特殊的写法,拓展一下大家,就是编写的方法和思路。那这节课的最后呢,有三个简单的编写练习,我们一起呢来写一下。 第一个练习呢,它是要写出两条指标线,第一条呢是写出二十个周期内的最高点的一个连线,然后这条线呢显示为红色虚线的 第二条线呢,第二条指标线是二十个周期的低点连线,然后这条线的颜色呢是绿色线型呢是小圆点线。 我们首先一条一条写,先写这个二十周期的高点连线二十个周期高点连线用到的函数是 hv 这个函数,高点连线 h 二十个周期二十。 然后这条线呢,要画成红色的虚线,红色虚线 好,那么第二条线是二十个周期低点连线,跟第一条就类似了,用 i r v 低点连线二十个周期。然后这条线呢,要是写成绿色的 小圆点线, 好,这样呢就写好了,我们再来看下一个练习练习。五是要画标注, 它呢,是要在阳线的位置上标文字阳线两个字,阴线的地方呢,标文字阴线两个字。标注用到的函数是 draw text, 条件是如果是阳线就嗯写文字阳线两个字,那条件就是阳线 is up。 然后它这里面呢没有给出来说,具体要写在哪个位置上,我们可以自行定义。比如说我给它写在最高下的这个位置上,然后写阳线, 注意要用这个单引号给它扩起来。同样的第二个标注音线还是用 drop tag 这个函数,音线 is down。 然后比如说我可以写在最低价的这个位置上,然后音线 好,这个呢也就写好了。我们再来看一下这节课最后的一个练习题。 首先呢,它要先绘制一条平均线,这条平均线呢,是由最新价、最高价、最低价它们三个求简单算数平均得到的,也就是最新价 c, 最高价 h, 最低价 l, 三者相加除以三得到的这条均线。 接下来是啊, k 线的一个变色,他说是如果我的这个 k 线呢,在刚刚这条均线之上,这个均线啊,这个 k 线就显示为红色,那如果 k 线是在这个均线之下,我 k 线就显示成绿色。 至于是空心和实心呢,它没有给出定义,我们可以自行定义。然后呢,这个均线它也是要变色的。均线变色的条件呢,跟 k 线变色的条件是一样的,就是 k 线在均线之上,均线是红色, k 线在均线之下,均线是绿色。 首先呢,我们先,嗯,把这个均线先给它定义成 a, a 是三个价格的一个简单算术,平均 c 加 h 加 l 除以三,这是这条均线。然后接下来我们写 k 线变色。 k 线变色用到的函数是 colorkeyline, 对 吧? 这个函数的用法就是满足一个什么样的条件,就把这个 k 线写成一个某一个颜色, 条件是 k 线在均线之上, k 线在均线之上。我们可以把简单的把 k 线理解为 k 线的收盘价,也就是 c 大 于这个,嗯,大于这个均线,然后显示成红色。 空实心呢,它没有给出定义。比如说我可以随便写一个实心,然后再写另一边的这个 k 线的变色, 我要把平盘的这个地方也写上,就是 k 啊, c 小 于等于 a, 然后绿色,比如说我可以写一让它空心。 最后呢,我要写这条均线的变色。均线的变色是不是就是非 a 即 b 的 这种形式啦?你要么是 k 线在均线之上,要么在 k 线是在均线之下嘛。所以我用到的函数是 draw color line, 条件是 c, k 线在均线之上, c 大 于 a, a, 然后画这条均线 a a 是 红色, 那如果这个条件不满足的话,那么这条均线就把它显示成绿色。 这样呢,我这个练习也写好了。 那么这节课最后的这页 ppt 呢,是刚刚三个编辑练习的一个参考的一个写法,大家课后呢可以自己的再去编辑一下,对照学习 啊。以上呢就是这节课程的全部内容了。

我往下移,这边挂一麦设置十六,挂一麦设置十六。然后这个什么意思?比如说我开一手柱啊,我挂一麦,我按了六号以后,这边的四幺二九,上面就会,他挂的是空单,十一就会变成十二,我是排队排在后面的, 如果我按小键盘三,我按一下他就一手,我如果按开一手做的话,这边四幺二八,后面的六十一就会变成六十,我这一手是直接成交的。 好吧,这就跟前面的那个多单就是,呃,差不多的意思,好吧?同样的也是可以设置成字母,根据自己的喜好,对吧?然后接下来我们把我的呃这个先先后面来,我们继续往下移啊,然后这边的话刚刚忘记设置这边还有个测单键,可以设置一下,我们一般性设置成小键盘的零,这边根据你自己的一个 喜好设置。好吧,因为我觉得是这样设置的话,我就整个右手,我放在键盘上面,我就可以所有的按键都能直接按得到,你自你们自己可以看一下,好吧?然后这个我们后面再讲,首先是这点的话,是所有的数字的一个按键,再往右边移,同向下单时撤掉原有挂单,这是个什么样的作用? 比如说,呃,我现在进了一笔单子,我想平仓,比如说我按了一个快捷键,我平常平完好以后,这笔单子他没有平掉,他是挂在上面了,对,他没有平掉,一般性来说的话,我们要去做一下撤单键,然后再去把这笔单子平掉,这样是不是等于多按了一个键, 对不对?那这个东西你打开完好以后同向下单时,比如说我是脱单,我按平常键,比如说按平常键就是端单,平常吗?我是直接去平了, 然后如果没有成交,我再按平畅,他会帮我把原先这笔没有成交的单子给撤销,撤掉,帮我平在另外个价格上,这样的话你就不需要再去按那个撤单键了,好吧? 然后当然了,像这个六像挂单,嗯,挂银 n 点平常单位参数 n 为这个也都是可以设置的,比如说你, 呃,设置二对吧?那你就是按了这个键好以后,他就是挂两个点指音等等的,上面会会有很多很多功能,这个我是自己摸索的,大家也可以自己摸索一下。好吧,摸索完好以后就刚开始摸索,可能会复杂一点,摸索完好以后,后期的你的一个操作各方面就相对来说就会 简单很多,好吧。然后在选项设置里面的,刚刚我们这边还设置过一个按照禁止双向持仓原则自动分配开仓跟平仓。这个什么用啊?我们来看一下,因为前面我们快递 已经设置好了。对啊,这个启用完好以后,第一,在没有持仓的情况下,自动执行开仓操作,就比如说在没有任何持仓的情况下,我按一按四,刚刚我们设置好的一跟四对吧?一跟四的话就是进多单挂一买,进库对家买,对吧? 没有持仓的情况下,他会自动执行开仓,这没有问题。第二,有多头持仓的情况,点买路按钮自动执行加长,点卖出按钮自动执行平仓。什么意思?比如说我现在有一笔进了一笔,比如说我挂在四幺二八上,我一九一手多单,我 他已经排队排进去,我已经成交了,这个时候我再按下一,他会自动帮我加仓,直接再成交一笔四幺二九的多单。同样的你再按下四,他可以在四幺二八上再帮你再挂一手多单。这个也可以的,就是说同向相 单子,他是进行加仓操作的,但是如果说这笔单子你已经成交完好以后,四幺八多单已经成交完好以后,如果说你想平仓,你按六的话,他会挂在四幺二九上,平仓十一会变成十二,对吧?挂一手挂在上面,你按三的话,四幺二八后面的六十一都会变成六十,你的一手多单就直接平掉了, 懂的意思吧?也就是说有多单的时候,你按空单就是平仓。同样的第三条,你有空单的时候,你按多单就是平仓,有磁仓的话会默认帮你先把磁仓平掉,没有磁仓的话就是进行开仓的这样一个操作, 好吧。呃,讲的已经蛮清楚了,我觉得好。我们再回到前面的草滩乐见这里,对吧?这些按键,然后我们现在把我们的手,如果说是有那个外接键盘的,我们把我的手放在这个键盘上面,我们看一下你的食指是放在一根 四上面,对吧?无名指是放在三根六上面,对吧?那我如果按食指一根四,我进了多单号以后,如果我想平昌,我只要无名指再按三根六就可以平昌了, 对吧?同样的三个六进了空档好以后,我再用食指一根四,我就可以进行平炒,就按了左边按右边,对吧?然后一根三,一根三是下面的那个键,是对手价,四跟六是上面那个键是排队价,好吧?就直接成交就按下面一排的,排队的就按上面一排,然后临时撤单, 好吧?我觉得已经讲的蛮清楚了,然后的话大家后期如果说有任何不清楚的地方也可以私信我,好吧?再给大家讲解一下,谢谢大家。

大家好,这节课我们一起来学习一下模型类型的解析。我们前面学习了指令和模型的基本结构,大家可能会觉得都是在理论的层面理解之后不太好应用, 大家可能了解了这些语法指令结构,但是在真正有了一个交易思路以后,并不知道从哪里去下手来编写。 这节课我们会通过一些模型和交易的案例来了解一下模型的类型, 实现不同的交易思路需要对应的使用哪种模型类型,让大家在编辑之前能对自己要编辑的模型有一个大致的掌握,防止出现方向的偏差。 我们上节课讲到 macd 模型中,想要抓住趋势模型的波段收益,就需要开仓之后进行平仓,然后编辑了一开一平过滤模型的关键字 auto filter。 那我们要怎么去判断什么时候使用这个关键字,什么时候不适合使用呢?接下来我们就带着这个疑问来看一下这节课的课程内容。 这节课我们要学习如何通过不同模型类型实现不同的交椅思路,还是会在课程的最后带大家编辑两个练习,巩固一下这节课的内容。 首先我们先来看一下这张图,这是一波比较大的趋势上涨行情, 图上加载的是一个满足条件标注向上箭头的指标,我们可以看到这一波趋势行情中百分之八十的 k 线都标注了红色箭头。 可以看出这一段大的上涨行情其实是由一个个小的上涨行情组成的。 但我们想一下,如果我们每个满足条件的点都去进行入场交易的话,交易成本是在不断的累加的,一方面是错失了 k 线的涨幅, 另一方面是加大了持仓的成本,在一定程度上会削减利润。 下面我们来看一下第二张图它的出场信号,它的入场信号是出现在多头排列启动上涨行情之后,虽然多头的状态是一直存在的, 但是把之后所有的入场条件满足应该出的开仓信号全部都过滤掉了,在多头行情向空头行情转变的时候,平仓出场抓住了这一波上涨的趋势。 这种一开一平信号对应的模型类型是适合想要去抓取一段完整的波段行情的交易思路的。我们软件中定义这种模型类型为一开一平的信号过滤模型, 顾名思义就是它的信号是一个开仓信号和一个平仓信号对应处的, 通过写入 autofilter 的 函数来控制和实现。当有多个开仓信号都满足条件的时候,取第一个信号作为有效信号,后面 k 线上同样的信号都会被过滤掉, 这样操作可以有效避免反复交易,节约交易成本,帮助我们把握完整的趋势行情。 我们来总结一下一开一平的过滤模型编写规则,第一,必须含有 autofilter 关键字,这个是过滤模型的标志。第二,指定后是不可以写入手术的。 如果我们想要设置下单手术,是需要在软件中设定的,在软件的交易参数下单手术中进行设置,新建模组的时候,也可以在新建模组页面的下单手术位置进行设置。 有时候我们在写完一个模型加载之后会有一个疑问,有一根 k 线上明明是满足条件的,但是却没有出信号, 大家可能第一反应会怀疑软件的运行出了问题,但是其实软件在判断条件上出错的几率是很小的,大部分情况是交易者没有理解模型的信号过滤机制。 信号过滤机制的根本规则有两个,第一个是趋势模型持仓方向的限制,趋势模型是不能实现锁仓的,也就是一个趋势模型是不能同时持有多头持仓和空头持仓的, 在一个时间只能持有一个方向,这条规则是趋势模型的规则,所以不管是一开一平的信号过滤模型,还是之后我们讲到的加减仓模型,都是要遵循这条规则来出信号的。 第二是写入 alt filter 函数的,这个模型当有连续多个开仓信号都满足条件的时候,会取第一个信号作为有效信号, 后面的 k 线上同样的信号都会被过滤掉,可以有效避免反复交易。这个是一开一平信号过滤模型过滤反复交易的规则。 这里探讨的是 b k bp s k s p bp k s p k 之间的过滤机制的规则。止损和清仓指令是满足条件就会触发的,不被过滤机制限制的。 下面我们来看一下一开一屏信号过滤模型的信号判断规则。 过滤机制的根本就是立足于刚刚我们讲到的那两条规则。我们来具体看一下, 上一根 k 线是 b k, 当前 k 线必须是 s p k 或者是 sp, 由于上一根 k 线是 b k, 也就是开了多头持仓, 根据不可以锁仓的规则,没有出频多单信号之前是不能有开空单信号的,所以 sk 信号即使是满足条件也不会出信号的。 也是因为不可以锁仓的规则,上根 k 线出了 b k 信号,所以当前子账户持仓中肯定是没有空头持仓的,所以 b p 信号满足了条件也不会出信号。 当前 k 线可以出的信号是 s p k 和 s p 平多单后开空单或者是单纯的平多单。 上节课我们有讲到,当多个指令行的条件同时满足的时候,指令间是存在优先级的,止损的优先级别是最高的,同时满足条件的时候会优先执行止损,次之的是清仓指令, 最后的是开平仓指令。其实开平仓指令间也是有优先级别的,反手指令的优先级别是高于平仓指令。 同样的,根据不可以锁舱和一开一平的信号过滤机制,上一根 k 线如果是 sk, 当前 k 线必须是 bpk 或者是 b p, 上一根 k 线是 b p, 当前 k 线必须是 b k 或者是 sk, 上一根 k 线是 s p, 当前 k 线必须是 b k 或者是 s k, 上一根 k 线是 b p k, 当前 k 线必须是 s p k 或 s p, 上一根 k 线是 s p k, 当前 k 线必须是 b p k 或者是 bp。 介绍完一开一平的信号过滤模型,我们再来看一下这张图。这是另外一种交易思路在行情中的体现。 当行情站上了蓝色指标线时,出现了开仓信号,当行情又站上了粉色的指标线时,再一次进行进场。这是一个基于长短周期波段突破思想编写的策略模型, 在行情有效突破指定价格时,开仓入场,入场后继续判断行情,若行情继续向有利方向做有效的突破策略,执行加仓动作。 若行情向不利方向发展,并且满足了出厂条件,清仓出场途中的是波段突破加仓模型信号的效果。 图中的指标线是我们突破判断的标准,当行情有效突破时,软件就会自动开仓,当行情再次有效突破,软件就会自动加仓。 一开一平信号过滤模型是开平仓对应的,开仓之后下一个动作只能是平仓操作。 可有时我们想实现这种加仓减仓的策略,很显然一开一平信号过滤模型是无法实现的,这个时候我们就需要使用到加减仓模型, 这种模型类型允许连续出开仓信号或者连续出平仓信号,可以实现加仓或者减仓的思路。除了我们刚刚说到的这个波段突破的思想, 加减仓模型还有一个很重要的用法,就是可以实现资金管理的思路。 在投资交易中会遇到资金使用的问题,在交易前需要做一个计划,在这里将交易中的资金使用计划 称之为资金管理使用加减仓模型可以实现控制资金使用率,按资金比例开仓来控制交易的风险。接下来我们来了解一下如何通过模型的编写方式来进行实现。 第一种控制资金使用率的思想,在已有一手持仓的情况下,控制做多开仓的资金使用率不超过资金的百分之三十。 这里已有一手持仓,可以写为 b, k o 等于一 a 则为开仓的条件,这里红色的部分为资金控制部分的代码。 money ratio 表示的是资金使用率, money ratio 小 于零点三表示的是资金使用率小于百分之三十。三个条件使用,并且的操作符进行连接,表示三个条件同时满足的时候执行,必可以开仓, 如果当前的资金使用率超过了三十,是不会再开仓的。 第二种,按资金比例开仓的思路。 入场前为了控制风险,通常是不会满仓入场的,而是会按照一定的资金比例进行开仓。我们以开仓手术可用资金为百分之二十为例,看下如何进行编辑。 首先我们来看一下交易一手所需要的资金是如何计算的,这里的计算公式为,合约当前价格乘以合约单位乘以保证金比例加上手续费。这里的手续费为固定手术收取手续费的合约。 这需要注意一下,不同合约的手续费收取标准是不同的,有的是按手术进行收取,那么直接加上手续费即可。有的合约是按照比例进行收取的,需要使用合约当前的价格乘以交易单位乘以手续费率, 这样交易一手的资金我们就知道了。那么百分之二十的资金可以开仓多少手呢?就是百分之二十的资金除以一手的资金,也就是模型中标红的资金控制部分。 money 函数表示的是模组的可用资金乘以零点二是用来开仓的资金量除以交易一手所需要的资金,计算出开仓手数, a 为开仓条件,当满足 a 条件时开计算手术的仓位,这样我们就按资金比例开仓的思想编辑完成了,介绍完了思路,我们来总结一下加减仓模型的编辑规则。 第一,源码中不能有 auto filter 过滤模型关键字,前面我们已经讲过了, auto filter 是 一开一平的过滤模型的关键字,所以加减仓模型中是不适用的。 第二,不支持不带手术的开瓶舱指令和反手指令。开瓶舱指令和反手指令后面必须要有括号,里面要写入开瓶舱的手术。具体的写法我们可以看一下。第三条 b k 括号 n, 这里的 n 表示的就是开仓手术,因为 closeout 是 清仓指令,会同时清掉两个方向持有的所有持仓,所以它是不需要写入手术的。 这一需要注意的是,非过滤模型下单手术不能在软件中进行设置,是需要写在指定后面的括号里的。 一开一品的信号模型是一个开仓信号对应一个平仓信号来出的,而加减仓模型是单纯判断信号指定条件是否满足的。下面我们要来实现一个思路, 满足开仓条件就开仓,最多可以连续开仓 n 次,到达平仓条件时平全部持仓。如果想要实现这个思路,就需要使用同一指定行可以连续出 n 个信号的函数 trade again, 含有该函数的加减乘模型中同一指定行可以连续出 n 个信号。我们看一下下面的例子, b k 语句是开仓语句,它的条件是当根 k 线为阳线的时候买开一手, 这里手术为一,所以 b k 后面的括号里写入一下面是平仓语句 s p 指令当前 k 线为阴线的时候,平掉所有持仓, 这里的 b k、 o, 也就是当前所有的多头持仓,同一指定行可以连续执行三次,我们这里写出 trade again 函数,这里的三是写出它的这个参数 n 中, 这样就可以表示同一指定行可以连续出三个信号, 也就是连续三根 k 线是梁线,就会连续三次买开仓。 接下来我们来看一下加减仓模型的信号过滤机制。 刚刚我们提到了信号过滤模型的规则,主要有两条,一是趋势模型不支持锁仓,二是一开一平信号过滤模型的机制。 加减仓模型这里是不涉及一开一平过滤模型的限制的,所以信号过滤是不支持锁仓来限制的。上一根 k 线是 b k, 当根 k 线一定不是 s k 或者是 b p b k 信号后持有多单,所以当根 k 线一定不能是 s k。 信号。上个信号是 b k, 所以 是没有空单持仓的,所以当根 k 线也一定不能是凭空单信号。 b p 下面的信号过滤也是依照趋势模型不支持锁仓这条规则来过滤的。上一根 k 线是 s k, 当前 k 线一定不是 b k 或者是 sp。 上一根 k 线是 b p, 当前 k 线一定不是 sp。 上一根 k 线是 sp, 当前 k 线一定不是 bp。 上一根 k 线是 b p k, 当前 k 线一定不是 s k 或者是 b p, 上一根 k 线是 s p k, 当前 k 线一定不是 b k 或者是 s p。 到这里我们这节课的理论部分就讲完了,下面带大家来做两个小练习巩固一下。 首先我们来看第一个练习,边写一开一平的过滤模型,思路是突破二十周期高点买开仓,突破二十周期低点卖开仓, 突破十周期高点买平仓,突破十周期低点卖平仓。 这个例子其实是一个基于糖基安通道理论的模型,使用的是最高价和最低价来显示市场价格的波动性,把突破高点作为入场点,突破低点作为出场点。 我们现在在软件来编辑一下, 打开我们的编辑平台新建指标,我们可以把我们刚刚的思路粘贴上去,这样我们编辑的时候比较方便看我们的编辑思路, 这里我们可以用杠星这个操作符来注视一下这一段的编辑思路。 首先我们来看一下我们需要定义什么变量,查看一下我们的这个条件,突破二十周期高点,突破二十周期低点, 突破十周期低点,这样我们就需要二十周期高点、二十周期低点、十周期高点和十周期低点四个变量我们来定义一下, 我们把二十周期高点定义为 h 二十。 我们这里取的高点的函数是使用的是 h v, 这个函数表示的是 x 在 n 个周期内不包含当前 k 线的最高值。 那这里我们会有一个疑问,为什么这里我们需要用到的是 h v 函数,而不是另一个和它相似的 h h v 函数呢?我们来看一下 h h v 函数的说明, 它是包含当根 k 线的 x 在 n 个周期内的最高值。我们回头来看一下我们的这个思路, 当前 k 线的收盘价突破二十周期的高点进行买开仓。如果这里我们使用了 h h v 函数的话,这个 h h v 包含了当根 k 线的收盘价, 但是当根 k 线的收盘价是永远不会高于包含当根 k 线的二十根 k 线的最高点的,所以这里我们需要使用 h v 函数来进行编辑, 我们继续来编写一下,我们这里已经定义了二十周期的高点,我们来看一下二十周期的低点,编写方式也是相同的, 这里我们需要使用 lv 函数, 接下来我们需要定义十周期高点和十周期低点, 这样我们就定义好了所需要的四个变量,下面我们来编写交易条件,第一个交易条件是突破二十周期高点买开仓,也就是价格大于二十周期高点时买开仓,执行避开指令, 突破二十周期低点迈开仓, 突破十周期高点买平仓, 突破十周期低点迈平仓。 刚才我们说了,我们编写的这是一个一开一平过滤模型,所以需要在最后写入 autofilter 关键字, 这样这个模型就编写完成了, 我们保存一下再进行语法检测,下面的框里显示的是检测成功,我们就可以点击主图计算按钮,加载到历史 k 线上,查看一下我们的信号, 我们可以看一下已经出现了 bk 信号 等交易指定信号。 下面我们再来看第二个案例, 边写一个加减仓模型,思路是当收盘价上穿五周期均线买开仓,两手 收盘架连续两根占上五周期均线,且 k 线收阳加仓,一手收盘架下穿五周期均线平,全部持仓。和刚才一样,我们把这个思路复制粘贴到我们的编辑平台上,方便我们查看, 也是需要注视掉这个思路, 在编辑前我们看一下都需要使用到什么变量,收盘架上穿五周期均线,收盘架连续两根占上五周期均线且 k 线收阳,收盘架下穿五周期均线, 这里所需要使用到的变量就只有这个五周期均线,下面我们来定义一下这个五周期均线, 这样我们的变量就编写好了,下面我们来编写第一个条件,收盘价上穿无周期均线,这个我们可以使用 cross 函数来进行编写, 买开仓两手逗号连接,使用 b k 指令,后面需要使用括号写入两手分号结尾, 这样这就是第一个开仓的条件。第二个条件,收盘价连续两根占上五周期均线,且 k 线收阳,加仓一手, 这里连续两根占上五周期均线的条件,我们需要使用 every 函数来实现这个连续, 我们可以看一下 every 函数,判断在 n 周期内是否一直满足条件,若满足函数返回值为一,不满足函数返回值为零。 条件中连续两根占上五周期均线,我们这里的参数就是为二,条件就是占上五周期均线,我们来边写一下, 这样收盘价连续占上五周期均线的条件就便写好了。第二个条件中还有 k 线收摇,我们使用并且连接符进行连接,这里的收摇我们使用 its up 函数来实现 加仓,一手执行的是 b k 指令,一手括号内写入一,这样收盘价连续两根占上五周期均线且 k 线收阳,加仓一手的条件也编写好了, 我们看一下平仓条件,收盘价下穿五周期均线,平,全部持仓。这里我们可以使用 cross 函数, 凭全部持仓,我们可以使用 sp 指令,全部持仓用 bkwo 进行表示, 因为这个模型是加减操模型,所以我们不需要写入 autofilter 关键字,到这里我们这个模型就大致编写结束了,下面我们来看一下这个思路。 收盘价上穿五周期均线买开仓两手。收盘价连续两根占上五周期均线,且 k 线收阳,加仓一手。 那我们怎么保证当满足第一个条件时就开仓两手,而满足后面的条件时就加仓一手呢?这里就需要我们进行信号的判断, 如果当前是第一次开仓的话,前面是一定不会出现 bk 信号的, 如果前面出现了 bk 信号,当前的开仓就是加仓了,所以我们要判断前一个信号是不是 bk 信号就可以了。这里我们可以使用 it's last bk, 因为前面不会出现 bk 信号,所以我们要加入一个 not, 只有当前面的信号不是 bk 信号的时候,满足了上穿五周期均线,你就可以执行买开两手的指令。 战友们,编写一下,用按的操作符进行连接 not 函数 it's last bk。 后面的加仓语句我们也可以使用相同的处理方法,如果要确保第二次 bk 指令,必须前一个指令是 bk 指令,所以直接我们就加入 it's last bk, 也就是上一个指令是 bk 指令的时候才可以出加仓指令, 用按的操作符进行连接 it's last bk, 这样我们加仓的指令就处理好了。这里平仓的指令也是需要进行处理的, 我们需要在完成买开仓和加仓指令之后进行平仓的判断,我们可以使用持仓来进行判断, 当进行了一次买开仓两手,又进行了一次加仓一手之后,一共交易了三手,这里我们就可以使用 b k o 来进行判断,也就是当前的多头持仓大于等于三的时候,就可以出平仓信号了, 这里我们可以使用按的操作符进行连接 持仓手术大于等于三手, 这样我们的加减仓模型就全部编辑完成了。最后我们来进行一下保存, 印一下语法检测,我们看一下下面的框中是检测同果的,因为该减模型是加减仓模型,所以我们不需要写入 auto filter 的 关键字。 最后我们点入主图计算,查看一下我们的加载效果, 我们可以看到连续出现了两个买开信号后,又出现了一个屏仓的信号, 我们可以点击一下查看一下这个回测报告。 点开信号明细,我们可以看一下第一行指令就是买开仓两手指令,第二个指令就是加仓一手的指令,第三个指令就是满足持仓手术大于等于三的时候进行卖平的指令。 我们可以看一下这个完整的模型编写, 以上就是我们这节课的全部内容。


通过前面课程的学习,相信大家对指令编辑已经有了一定的了解,这节课我给大家讲解一种特殊需求下的指令编写,也就是分组指令的编写。 我们来看一下这节课的课程内容。首先让大家了解一下为什么要使用分组指令,然后给大家讲解一下分组指令它的编写方法以及它的运行机制。 接着我给大家介绍几个和分组相关的函数,然后通过两个案例让大家对分组指令有一个进一步的了解。 最后我们会通过一个小练习来掌握分组指令的编辑。那我们来看第一个问题,为什么要用分组指令呢? 首先来看一下这段行情,在这段行情中有大涨趋势的趋势行情,也有波段的震荡行情, 行情的走势不同,通常是会使用不同的指标来进行判断的,也就是说用不同的开平条件来进行交易,那我们就很难用一个模型来让它既适用于趋势行情,又适合于震荡行情。 所以通常在趋势行情中会使用一个模型,在震荡的行情中会使用一个模型, 那按照传统的方式,我们可以将这两个模型写成两个模型,那这样两个模型放到一起来运行,可能会出现一种什么情况呢? 用来判断震荡行情的模型,在趋势行情中会有交易,用来判断趋势行情的模型在震荡的行情中也会有交易。 那么如果我们想要将这两个模型写到一个模型里面,并且在趋势模型启动的时候,震荡的部分就停止了,而在震荡部分启动的时候,趋势部分就自动停止, 也就是说想要实现在不同的进场条件要对应着不同的出场条件,那么这个时候我们就需要用到分组指令了。 下面我们来看一个小例子,这是一个传统的一开一平模型, m a 五代表的是五周期均线, m a 十代表的是十周期均线,那这两条均线它是用来代表趋势类行情的指标, k 和 d 指标它是用来代表摆动行情的指标。那我们来看一下开仓条件, 开仓条件是五周期均线和十周期均线金叉或者是 k 和 d 金叉。两个开仓条件中是用或者来连接的,表示满足其中任何一个开仓条件都会进行开仓。 那平常条件是五周期均线和十周期均线死差,或者是当前的价格大于十日的最高价,或者是当前的价格小于开仓以来五个变动价类。 这种写法是用来用或者来连接的,也就是说只要满足其中一个开仓条件就会进行开仓,满足其中一个平仓条件就会进行平仓。 那我们将这个模型加载到 k 线图上来看一下效果, 用来表示趋势部分的均线金叉在这里开仓了,但是却是用了用来描述震荡行情的止损条件在这平仓的。 那按这种方法我们就没有办法区分哪个开仓条件对应着哪个平仓条件去平仓。 那如果我们想要区分不同的开仓条件对应着不同的平仓条件,我们应该怎么去做呢?这就需要我们对开平条件进行一下分组了。那接下来我们就来看一下什么是分组指令, 分组指令他想要实现的思路是对开平条件分成 n 个组,某个组的条件开的仓位也只有某个组对应的平仓条件才能平仓, 那其他组的平仓条件满足了,也是不会出信号的,当然也就不会发委托。 我们通过下面的这个案例来说明一下这个思路。这个例子是对上面传统模型案例分成的两个组,那第一个组是对趋势行情做出的判断部分, 用军线的金叉作为开仓判断,那对于这个开仓条件满足军线死叉,我们就进行平仓。那再看一下第二组。第二组是对震荡行情做出的判断部分, k 和 d 均差作为震荡行情的开仓部分,那对应的平仓条件就是收盘价要大于十日最高价,或者是满足止损条件就对震荡部分进行平仓操作。 那么分组指令就是想要实现这种分组的形式,如果模型中的均线金叉作为了入场条件启动了,那么也只能用均线死叉作为出场条件来判断, 那在这期间即使满足了震荡部分的这个收盘价大于十日的最高价,或者是满足了这个止损条件,它也是不会被执行的。 那如果是震荡部分的 k、 d 金叉作为入场条件入场了,那么也只能用震荡部分的这个出场条件来进行判断,那这期间即使满足了均线的死叉,也是不会用来作为出场条件的。 那下面我们就来学习一下分组指令它是怎么用编辑来实现的。 我们传统的模型分为一开一平模型和加减仓模型,分组指令它不仅适用于一开一平模型,也是适用于加减仓模型的, 那对于一开一平模型,也就是每一组的开仓条件只能用同一组的平仓条件来进行平仓, 对于加减仓模型也是同理的,每一组的开仓条件只能用同一组的加仓条件来进行加仓,那也只能用同一组的平仓条件来减仓或者是平仓。 下面我们就来看一下一开一平模型。分组指令它的编辑模板, 传统模型的指令编辑模板,它是开屏条件,然后是逗号,逗号后面是指令号,然后就分号结束了,那传统的模型指令后面,它是不需要写入括号的, 而分组指令就是在传统模型的指令号后面加入一个括号,括号里面单引号,单引号里面写入分组的名字, 因为我们要把这个开屏条件分成不同的组,那这个名字它就是用来区分不同组的。 当然这个名字也是有要求的,它只支持写到 a 到 i 这九个组,那我们这个模板是分成了 a 组和 b 组,我们还可以有更多的条件,然后更将更多的条件分成 a 个组, 那反手指令它也同样适用于分组。 bpk 是 买平开,买平后反手开多仓, spk 是 卖平开,卖平后反手开空仓。 那我们再回顾一下这里需要注意的地方,一共有两点,一个是指令后面需要写入括号,括号里面是单引号,单引号里面写入分组的名字, 那另一个就是我们这个分组名称,它只能是 a 到 i。 我 们再来看一下加减仓模型。分组指令编写模板, 我们传统的加减乘模型,它的写法是开平条件,然后是逗号,逗号后面是指令号,指令号后面是括号,括号里面写入手数, 那么分组指令只是比传统的加减仓模型多了一个分组的名称,那它的写法就是开平条件,然后是逗号,逗号后面是指令号,然后是括号。括号里面用单引号写入分组的名称, 它是用来区分不同的组的,然后是逗号,逗号后面是手术。 那同理,我的这个模板中是将这个模型分成了 a 和 b 两个组,那 a 的 平仓条件就只能用来平 a 组的开仓, b 组的平仓条件就只能用来平 b 组的开仓。 这里面我们用到了 group b k o 和 group s k o 那 这两个函数,它是用来平调组内全部持仓的意思。那后续后面我们会具体地来讲一下。 学会了分组指令模板的编辑,那下面我们再来学习一下这个模板的运行机制。 分组指令模型,它的运行机制是先进行组过滤,然后再进行信号判断。我们先来看一下一开一平模型它的组过滤机制。 如果当前 k 线信号是某组发出的开仓信号,那开仓信号就包括 bk、 sk、 bpk 和 spk, 那么下一个信号只能是某组发出的平仓信号。也就是说,如果当前的是 a 组开仓条件满足了条件,那当前的信号就是 a 组的开仓信号, 那么接下来即使 b 组的平仓信号满足了条件也不会被触发的,当然就不会发委托,直到满足 a 组的平仓条件才会被触发,那么它就会执行 a 组的平仓条件。 如果上一根 k 线信号它是某组发出的平仓信号,那这里平仓信号就包括 b p s p, 那当前 k 线就可以是任意组的开仓信号。也就是说,如果当前的这个信号它是一个平仓信号, 那当前的任意组的持仓他都是零的情况下,那下一个出现的信号就可以是任意组的开仓信号了。那这里他是哪组的开仓信号呢?就要看是哪一组的开仓条件先被触发了。 那下面我们再来看一下加减仓模型它的阻过滤机制。如果上一个信号它是某组发出的开仓信号, 那下一个信号也一定是某组的加仓信号或者是平仓信号。 那也就是说,这如果当前是 a 组的开仓信号或者是平仓信号,那这里所说的这个平仓当然也就指减仓,平仓以后还是有吃仓, 那么他的下一个 k 线即使触发了其他组的指令条件,他也是不会被执行的。那只有等 a 组的信号条件被触发了,也就是说下一个信号他也只能是 a 组的指令。 那我们再看下一句,如果上一个信号是某组的平仓信号,并且某组的持仓是零,那么他的下一个信号就可以是任意组的开仓信号了。 也就是说只有当前的这个信号它是一个平仓信号,并且这个 a 组的持仓它已经是零了,那它的下一个信号就可以是任意组的开仓信号。 那这里是哪组的开仓信号,也是要看哪一组的开仓条件先被触发了。 那这里有一个需要注意的地方,如果我们将不分组的写法和分组的写法写在一起,那信号应该怎么执行呢? 例如我写了一个 a 组,然后这里的这个 b 组没有写入组别,只是写了 bksp, 那 么这种情况它也是相当于写入了两个组是一样的,这个不分组的信号,它也相当于是一个组。 我们再来看一下分组指令信号判断机制,那信号的判断机制是同传统模型信号判断机制是一样的,这里我们就来复习一下。 我们先复习一下一开一平模型信号的过滤机制,一开一平模型它是一个开仓,要对应一个平仓, 那也就是说如果上一个信号他是一个开仓信号,那么他的下一个信号一定是一个反手信号或者是平仓信号。 那如果他的上一个信号是一个平仓信号,那他的下一个信号一定是一个开仓信号, 那如果它的上一个信号是一个反手信号,那么它的下一个信号也一定是一个反手信号,或者是一个平仓信号。 那这里这个 s、 p、 k 和 sp 它是存在一个优先级的关系的, spk 是 优先于 sp 的, 也就是说我们模型中既有 spk 又有 sp, 那 如果当前的这个 k 线,它既满足了 spk 的 这个触发条件,又满足了 sp 的 触发条件, 那我们系统默认执行的机制是先执行 spk 的 信号, 我们再来复习一下加减仓模型它的信号机制。加减仓模型它就只可以加减仓,但是不能进行锁仓。 也就是说,如果上一个信号它是一个开仓信号,那么它的下一个信号不能再是一个锁仓的开仓信号,那也不会是一个锁仓的平仓信号, 那同理,如果上一个信号它是一个平仓信号,那么它的下一个信号也不会是一个锁仓的平仓信号。 那如果上一个信号它是一个反手指令,那么它的下一个信号也不会是一个锁仓的信号。那下面我们再给大家介绍几个和分组相关的函数。 第一个是 group b k o 和 group s k o, 这两个函数是取分组指令的开仓信号手速的, 那我们传统的函数中有 b k o 和 s k o, 那 返回值分别是模型当前的多头和空头理论持仓, 那么我们这里加上了 group, 它就是用来表示某组的多头或者空头全部持仓,那分组名称它同样也是只支持 a 到 i 组。 我们看一下下面这个例子, m a 一 是五周期的均线收盘价大于 m a 一, 对于 a 组开仓一手,那收盘价小于五周期均线平掉 a 组的所有多头持仓。 这里我们的平仓手数 group b k o, 它的取值就是上面的这个开仓一手。然后我们看一下 b 组的开仓条件, 先要满足是阳线,然后加入了 r e f 和 group v k o, a 组大于零。逗号 b s p 加一,这个是做什么的呢? 首先看一下 a 字 last 的 sp, 它是表示最近的一个信号是 sp 信号,然后看一下 bus sp, 它取的是最近的一个平仓信号到当前的周期数 r e f 是 向前引用的意思,那么这里它想要表达的就是最近的一个 s p 信号,它的前一个 k 线上,那 a 组的多头持仓它是大于零的, 那也就是说在当前的这个平仓信号,它是用来平 a 组的持仓的, 那这个条件它用在这里头,也就是将我们这个指令分成了 a b 两个组,那我们想要 b 组的指令是在 a 组执行以后再发出,那就可以这样来编辑,然后再看一下 b 组的平仓条件, a 组收阴线,然后平掉所有持仓。 我们再来看一下第二个常用函数是 group bk price 和 group s k price, bk price 和 s k p r price, 它是最近一次开仓的价格,那我们在这里加上了 group, 也是用来表示某个分组中最近一次开仓信号的价格, 那同样在这里的这个组名,它只支持 a 到 i。 看一下下面的这个模型 阳线的条件, a 组进行买开仓,那这里这个 group bk price a, 它取的就是 a 组买开仓的价格,那用法是同 bk price 的, 大家可以参考一下 bk price 去学习一下。 我们再看一下第三个函数, last six group, 它是用来判断最近一个信号所在的分组的,那我们的分组是从 a 到 i 这九个组,那它对应的返回值也就是一到九。 也就是说,如果我最近的信号是 c 组里的指令,那么我们当前的 last sig group, 它返回值就应该是三。 我们看一下下面这个例子。先看一下 a 组的信号,收盘价和五日均线均差开仓一手, 收盘价和五日均线死叉平掉所有的多头持仓,那再看一下 b 组的信号,收盘价和十日均线金叉,开仓两手, 那我们这个最近的这个信号所在的分组是二,并且最近的这个信号是 b k 信号平掉所有持仓, 那最近的这个分组是第二组,也就表示它是 b 组。 我们再来看一下第四个函数 group a, 它是用来判断分组的组别的,那这里名称是支持 a 到 i, 那 它对应的返回值就是一到九。 我们看一下下面的这个例子,它和第三个函数中的这个例子是相似的,那这里我们就看一下这个不同的 b 组的这个平仓条件, group b 它返回值就是二,那也就是说最近的一个信号是 b 组的 b k 信号,那平掉所有的多头持仓,因为我们是不能锁仓的,所以 group b k o 也可以用 b k o 来代替, 那它取的都是 b 组的所有持仓。 那么下面我们再通过两个案例来分析一下。 第一个我们来看一个一开一平模型的案例,我们先来看一下这个案例的思路,它是用均线的今死叉作为一个趋势判断的标准, 然后在这个趋势增长的范围内,如果最高价创了十日的新高,并且是阳线,那就做多,那相反呢就对它做空。 那对于这个趋势上的这个开仓条件,我们是用较大的止损点,或者是用均线死叉来进行平仓的, 那在趋势范围的这个增长内出现了震荡的行情,那如果 k 和 d 均差,并且是阳线,那么就波段上作多, 相反就在波段上做空,那对于这个波段上的这个开仓条件,是用较小的止损点或者是跌破波断开仓 k 线最低点来进行止损平仓的, 那它不同的开仓条件需要用不同的平仓条件来进行平仓,那这里我们就要用到分组指令了, 我们先来看一下这个行情图,在这个大的上升趋势上创了十日新高,满足了第一组的开仓条件,那我们是用较大的止损来进行平仓的, 那对于后面的这个行震荡行情, k d 金叉进行开藏的,那我们是用较小的止损条件来进行平藏的。我们来看一下这个模型编辑。 首先对变量进行定义,我们定义了二十周期均线和六十周期均线,我们还定义了 k d j, 那 h h l l, 它是用来定义十周期上的高低点的,那我们再来看一下它的开平条件, 二十周期均线大于六十周期均线,它是用来判断这个上升的趋势的,并且突破了十日高点, h h 是 十日的高点, 并且是阳线,我们就对 a 组开多仓,那反之就对 a 组开空仓, 那对于这个 a 组,它的平仓条件是满足较大的支撑点,那我们用五个最小变动价位来表示较大的支撑点,那或者是满足死叉,我们就平仓出场。 那我们再来看一下 b 组的开仓条件,也是在这个上涨的趋势下, m a 二十大于 m a 六十是表示这个上涨的趋势触发摆动指标的条件, k 和 d 均差,那我们就开多仓,那相反呢,我们就开空仓, 那对应 b 组的平仓条件,这里是用较小的止损点来进行平仓的, 我们用两个最小变动价位来表示较小的止损条件,那或者是突破开仓以来最低点,我们就进行平仓出场。 auto filter, 它是表示一开一平模型的标志, 那我们再来看一个分组在非过滤模型的编解案例, 我们先来看一下这个交易思路,五周期均线和十周期均线的均死差作为首次开仓条件, 那五周期均线和六十周期均线的均死差作为第一次的加仓条件,那我们再来看一下这个加仓条件,它的平仓条件, 它是创五根 k 线新低,或者是较小的支撑点平仓, 那在五周期均线大于六十周期均线趋势下,最高价创十根 k 线新高,那进行第二次加仓, 相反就进行第二次加空仓,那对于第二次加仓的这个平仓条件,它是用五周期均线和六十周期均线的此差进行平仓的,那凭空是相反的。 在这个案例中,第一次加仓和第二次加仓,它的平仓条件是不同的,那这里也需要用分组来实现, 我们将第一次加仓作为 a 组,第二次加仓作为 b 组,那也就是说 a 组在第一次加仓结束后,才能进行 b 组的第二次加仓。那我们先来看一下这个行情图, 在五日均线和十日均线首次金叉的地方,首次开仓,那后面继续上涨,然后五日均线和六十日均线金叉, 又进行了加仓,满足止损条件平仓出场,那后面又创了十日新高,再对 b 组进行开仓,那满足平仓条件平仓出场。我们来看一下这个模型编辑, 同样也要先定义一下变量,五周期均线 m a 五十周期均线用 m a 十表示 m a, 二十表示二十周期均线, m a 六十表示六十周期均线。 我们还定义了 k、 d、 j 指标,然后这里还用到了时日的高低点,同样用 h、 h、 l、 l 来定义,那我们看来来看一下指令的编辑。 a 组的开仓我们要先确定是首次开仓,那怎么来限定是首次开仓的呢?需要先用 b k o 等于零来表示首次开仓, 那么首次开仓它的条件是均线金叉,并且 b k、 o 等于零,并且是阳线,那我们就开仓两手。然后再看一下多头的加仓条件, 上一个信号是 b k 信号,并且开仓是两手,那么就代表已经执行过了首次开仓,并且五十周期均线和六十周期均线的它是金叉,那么我们就加仓一手。 那我们再看一下 a 组第一次加仓它的平仓条件, 这个平仓条件适用止损或者是价格低于买开以来的最低点,那么就第一次加仓进行全平。 这里我们还限制了一个条件是第一次加仓结束后才会进行第二次加仓,那也就是说在执行 a 组以后再执行 b 组,所以这里我们需要判断上一个信号是平仓信号, 并且是 a 组的平仓信号,才会对 b 组进行开仓。 那这里我们在讲分组相关函数 group b k o 的 时候就已经讲过 r e f 这句了,那么这里面我们就需要用到 r e f 这句来表示 a 组执行以后再进行 b 组开仓,那这里我就不再仔细讲了。 然后满足止损条件,或者是满足五日均线和六十日均线的均死差,然后对 b 组平仓出场。那最后我们再来看一个小练 习,五周期均线大于十周期均线,并且收盘价在五日均线之上,就在趋势上做多, 收盘价在五日均线之下就在趋势上平仓。在 m a, c, d 指标中, d, i、 f、 f 指标上传 d, e, a 指标就在波段上作多, d, i f, f 指标下传 d, e, a 指标就在波段上平仓。那么这个趋势上和波段上的开平条件是不同的,就需要我们用到分组指令。我们先将这个题目复制到软件中, 我们先将它注视掉。 首先要定义一下变量,这里用到了五周期均线,我们用 m a 五来表示操作符,用冒号等号 m a, c 五分号结束。还需要定义十周期均线,我们用 m a, c 逗号十分号结束。 那我们这个变量还用到了 macd 中的 d, i、 f, f 指标和 d e, a 指标,那我们将 macd 中的这两个指标给复制过来, 我们改一下参数,短周期是十二周期,长周期是二十六周期 m 十九, 定义完变量,我们就来可以来写开平条件了。先来看 a 组的开仓条件,五周期均线大于十周期均线,那么就用 m a 五大于 m a 十, 并且收盘价在五日均线之上大于 m a 五 开仓,我们将它定义为 a 组,不要忘了写单引号组名。 再看一下 a 组的平仓条件,收盘价小于 m a 五, 对 a 组进行平仓。括号中单引号,单引号中写入组名,分号结束。然后再看一下波段上的多空条件, d, i、 f、 f 指标上传 d, e, a 指标,我们用 cross 来写, 我们将它定义为 b 组括号,单引号里面写入 b 组,分号结束, d, i、 f、 f 指标下传 d, e, a 指标平仓出场,我们用 cross down 来写 括号,单引号, b 组分号结束。不要忘了 auto filter, 检查一下是否可以通过 那大,大家编辑完以后可以和后面的 ct 答案来对照一下。以上就是我们的全部内容,谢谢大家。

大家好,今天跟大家分享一下跨周期和跨合约模型的编辑。大家在平时交易过程当中也会涉及到多个周期多个合约这样的交易理念,其实无论是手动交易还是程序化交易,很少有人只看一个周期,或者说只关注一个合约, 那在交易的过程当中,我们肯定会观察多个合约的价格走势,并且多个周期来综合判断,来最终做出交易决策。 所以说跨合约跨周期是一种很常见的思路,那今天我们就来学习一下如何把这种思路转化成程序化模型。 我们前面的课程已经跟大家分享过了,基本的语法结构和简单的指标编辑,相信大家已经有有了一定的编辑基础了,那今天的课程呢,主要是围绕两个函数进行的,一个是跨周期函数 import, 一个是跨合约函数 call。 这两个函数的用法和我们之前学习的语法规则呢,可能有一些差异,但是并不复杂,通过今天的讲解相信大家都可以掌握。下面我们具体看一下今天的课程内容。 我把今天的课程内容呢分成了这样几个部分,第一部分跟大家分享一下跨周期,首先跟大家一起回顾一下我们平时交易中跨周期的思路是如何来进行编辑。 第二部分跟大家分享一下跨合约,同样我们也是一起看一下跨合约应用的几个典型的案例,然后再看一下跨合约的模型如何编写。最后一部分我们在重点讲一下跨合约和跨周期编写中一些重点需要注意的地方。 大家在平时的交易过程当中,或多或少的都会用到跨周期的思路,一说到跨周期这个名词,可能听上去觉得有点高大上,不明所以,但其实说的简单一点,跨周期简单来说就是结合多个周期去看盘, 比如说我们看十五分钟的 k 线交易,但是我也会去看一分钟的 k 线来作为参考,也会看日线来判断品种大的趋势,那这个其实就是一个快周期的思路了。我们结合这个图来看一下, 图中是三十分钟 k 线的一段走势图,如果说我们做中长线交易的话,看到这个图这一段是一个下跌的一个行情,具体看一下这段行情的话呢,是有一个 m 头的一个反转信号的,大家平时做交易应该都知道 m 头是标准的反转形态的一种, 那途中还有一个跳空低开,这种情况按照正常的交易思路,基本可以确认是一个行情下跌的信号了。如果说我按这种思路交易,会在跳空低开的这个位置入场做空, 那如果我们顺势而为,在这段行情当中做跌,会有一个什么问题呢?我们看一下入场之后对应的一分钟 k 线的走势截图里演示的这一块, 刚入场以后这个行情确实是下跌了,但是后续他马上回调,然后一路向上走,说明三十分钟的跳空低开开始回补了。 这里我给大家截取了一下这个一分钟回补的点位,一共是四十三点八个点位,也就是说进场之后直接产生了四十三点八个点位的浮亏, 正常这么大的浮亏的话,很容易就触发到止损点位了,所以说如果我在三十分钟策略的运行过程当中,我去关注一下一分钟的价格走势, 那我可能就不会在这个点直接入场做空了,而是要等待行行情后续的一个发展,等到一个相对高点的时候,也就是说到了超买区我再去做空。所以说结合多个周期来判断的话,它可以帮助我们找到一个更好的一个交易时机,找到一个更好的入场点位。 刚刚给大家讲的呢,就是如何用跨周期来寻找一个合适的交易时机,但是跨周期还有另外一个用途,就是多周期共振。我们来看一下这四个图,分别是一分钟、五分钟、十五分钟和三十分钟,我截取的是同一个品种在相同时间的走势, 我们对比一下这张这四张图,从大的角度来说,他们的走势都是完全一样的。我们再来看一下具体看一下这些周期图的特点。我们先看一下一分钟, 我们把一分钟这个 k 线压缩起来和三十分钟去做对比,他们是同样的开始时间和结束时间走势也是完全相同的。但是在三十分钟大趋势同步的情况下,我们能看到一分钟的这个走势里其实是有很多细小的这个波动的。 大家平时在交易的过程当中呢,应该都听过这个道士理论,其实介绍呢就是图中这个意思,道士理论他把趋势分成了长期、中期和短期的趋势, 他的理论认为在一个大浪潮里面会有很多细小的波浪,我们通过去数这个小的这个波浪来做判断,那我们这个图也是一样的,在一分钟周期里呢,它包含了很多小的波动,快周期就是这样的一个道理,它实现的是多个周期共振的效果。 所以说如果大周期在涨,那小周期也在涨,这就说明涨的趋势是非常强烈的,那我们那么我们就可以判断后续上,后续行情上涨的概率很大。 比如我们可以其实编辑这样的一种模型哈,把所有的周期我都引用过来,让所有的周期都同时进差的时候入场, 那这样趋势就非常明确了,进场的准确率也会非常高。当然市场当中这样的点应该是有的, 但是可能我们几个月或者说几年都遇不到一回,所以说我刚刚举的这个例子是一个比较极端的例子,那我们平时在交易的过程当中呢,可以选举自己常用的这些周期去配合起来使用,让模型的适应性更强一些。 上面这两种思路呢,就是跨周期模型比较常用的两种思路,可以概括为两类,一类是多周期一起盘,一起判断,寻找一个合适的入场交易时机。另外一个呢就是多周期同向判断,也就是共振的思路。 那了解了跨周期的原理之后,我们再来看一下跨周期具体如何编写 啊?我们先看一下跨周期函数,整个跨周期的编写呢,其实都是围绕着跨周期函数来进行的,大家掌握了跨周期函数,那跨周期模型的编写就很简单了。我们先来看一下跨周期函数的结构, 这个和我们之前讲的这个都不太一样哈,大家注意一下,跨周期函数它前面带一个井号,井号呢也是属于函数的一个部分,这个写的时候要特别注意一下,井号是一定要写的,如果说把这个井号漏掉了,那这个语法检测是不通过的,程序没有办法识别。 井号后面紧跟的是英文引用的意思,这个比较好记。 inport 后面紧跟的是中括号, 中括号里面是跨洲际函数的参数,这个地方大家要注意一下,我们之前学习卖语言函数,后面带的括号呢,都是小括号。引泡这个它里面是中括号,这个要注意区分一下, 中括号结束以后是 as, 这个 as 也是跨洲际函数的一个部分,这是固定写法,然后空格后面是变量名, 这里面写的是 v a r, 这个 v a r 它不是一个固定写法,我可以替换成别的名称。像我们之前学习定义变量的时候,我可以用 a a, b, b 或者是 abc 等等,这样都是可以的,但是它是必须要写的,不能省略, 省略以后语法是不通过的。呃,我们看一下这个结构,可能觉得就是有点奇怪,和之前学的都不太一样,那我们再回忆一下之前学习的。边写, 我们在编写指标或者是模型的时候,第一步就是要定义变量,给变量取一个名字,然后后面写冒号或者是冒号等号,然后再写内容。那跨周期函数它也一样,它也需要定义变量,只不过这个定义的方法才一样,它不是用冒号去定义了,而是用 s 去定义, 那 s 本身是一个操作符,它后面的 vr 又是一个变量,就是我们需要定义的。我们观察一下跨周期函数的这个结构,会发现它还有一个特点,就是它后面没有分号。 我们之前学习的时候讲到每一句话后面都要用分号结尾,但是这里也是有特例的,跨周期函数和跨合也函数,它们都是不能用分号作为结束的。如果我这个后面加一个分号,报错语法检测不能通过, 所以说写到变量这一句就结束了,那这一行就不要写其他内容了。另其一行开始后面的定义,所以说这个地方大家一定要注意一下,不能写分号。了解了快周期函数的构成以后,我们来看一下这个中间红色部分的这个快周期的参数部分,它具体都是什么含义。 首先是第一个参数 period, 这个是 k 线的周期级别啊,它可以是秒分钟,小时日周月、季年这些系统支持的周期都是可以的。 然后像秒周期的话,秒嘛是 second, 然后这个里面是用 s, e, c 来定义的,分钟的话嘛,英文 minute, 然后所以这里面是 m, i, n, 然后 hour, 就是 直接用写成 hour, 然后是 day, week, month, quarter, 然后还有 year, 这个就直接就是英文的用法,比较好记。然后这个写法呢,它也都是固定的, 就是说,呃,我这里只能写系统支持的周期,那第二个参数呢?是周期数,它是和第一个参数配合起来使用的,比如说我一天的话,那就第一个参数写成 day, 第二个参数 n 写成 e, 两天的话就是 day 二,就他们两个是配合起来使用的,这个 n 呢,支持的是大于等于一的整数啊,支持它也支持自定义周期,比如说我可以用这个三分钟周期,七分钟的周期,或者是十四分钟周期等等,这样都是可以的,但是它不能写成一点五分钟, 就是没有意义的,必须是一个整数,也不能是负数,这个也是没有意义的。最后一个参数 formula, 它是引用的指标的名称,这个就是跨周期的这个特别之处了。我们之前编辑指标呢或者模型的时候,就保存成一个文件就可以了。 但是跨周期它是需要至少两个指标一起构成的,一个是被引用指标,一个是主程序,那 formula 就是 被引用指标的名称。这么说可能比较抽象,我们在编辑平台里面来看一下, 首先跨周期它得有一个被引用指标啊,我这里写了一个指标,然后这个指标里面呢定义了一个变量, c c cc 取的就是收盘价,然后我把这个指标保存,取的名称是 aa, 然后呢跨周期呢?我们刚刚说了它需要有两个至少两个指标,我还需要有一个主程序,那这个就是我跨周期的主程序, 主程序里面我是需要写这个跨周期函数的,在这个跨周期函数的这个参数名称第三个参数里面我要写成 aa, 就是说我要告诉系统,我要从哪里面哪一个指标里面引用数值了,那我这个被引用指标写的是 a a, 所以 快周期函数的这个参数里面也要写 a a, 就 说它们两个必须是一一对应的,要不然软件是找不到你要引用的是什么指标的,那如果我这里面写 a b c, 那 我这个地方也要写 a b c, 就说它们两个一定要对应起来。呃,需要注意的是我这个,呃被引用指标这个保存的时候命名的这个名称也是有一定的规则的。呃,它不能包括汉字或者是符号, 可以写英文或者是数字。像我这个我可以写 a a 或者是 a a e e, 但我不能写就是中文名称,这样是不可以的 啊。后面的,那这个呢?是快周期变量,快周期变量的命名也是有规则的,它不可以和函数名称重复。函数名指的是什么呢?就是系统自带的这些函数,比如说我们之前学的 m a h v, 这些都是系统自带的函数, 那我这个地方如果写 i s m a, 这样就是不可以的,就是会报错,它一定得是不能和系统函数重名。 但是这个跨周期变量呢,它可以和被引用指标名称相同,就说我这个里面可以写 a a as a a, 这样是可以的,语法是没有问题的,但是不建议大家这样写,因为很容易混淆。 就是,所以建议大家这两个定义成不同的名字。嗯,这样这样比较方便记忆。然后写到 v r e 这里就结束了。这个就是我们另另外一个需要强调的地方,跨周期函数呢,它是没有分号结尾的,到 v r e 这里我就练起一行了,如果我这个后面写分号的话,看一下 它语法,会提示韵符语句语法错误,所以说这个地方大家注意一定不能写分号。 呃,我再给大家理顺一下这个备引用指标方面和 vr 之间的逻辑关系。呃,跨周期呢?我们是一定要看两个或者是两个以上的周期的, 比如说我在日线上同时参考一分钟的价格成交量,或者是呃,我要引用一分钟上的这个均线 macd 等等等等这些指标的数值,那我就要把我关心的这些信息,我要引用的信息统一的放在一个库里,那这个库就是 formula, 就是 被引用指标,然后我再通过跨周期函数把整个的这个库引用过来,定义为 vr 是 跨周期变量, formula 和 var 之间就是这样的一个关系,那 formula 呢?它是一个信息库,也就是说它是一个变量库,它本身是没有周期属性的,我加载到什么周期上,它就是哪个周期的指标,但是 var 它是通过跨周期定义出来的, 前面这个引用的是什么周期,它就是什么周期的变量库。所以说我们编写跨周期模型的第一步一定是要先去定义这个被引用指标 formula, 一定要把它先写出来,并且把它保存, 它是需要引用的内容,那我所需要引用的全部的这个条件变量都写在被引用的这个指标里。第二步,我再去建立快周期的这个主程序, 我们通过两个例子来具体学习一下快周期模型是如何编辑的啊?我们先看一个简单一点的一个思路啊,这个思路是在五分钟的周期上引用昨天的日 k 线的周盘价。拿到这个思路呢,我们首先来分析一下 在五分钟周期上引用日线的作收,就是主模型是要加载到五分钟周期上使用的被引用指标里面要定义的呢是昨天的日 k 线的收盘价,就是日线上的前一根 k 线的收盘价。那理顺思路以后,我们具体看一下要怎么编写。 首先我要定义被引用指标,被引用指标里面呢,定义的是昨天收盘价啊,由于我被引用的这个周期是日线,那昨天的收盘价在日线上其实也就是前一根的 k 线的收盘价。那我定义一个变量 c c, 这个 c c 呢,写成 i e f close e 就是 c, c 是 前一根 k 线的收盘价,然后我把这个指标保存给它,取一个名字就是 a a, 保存完以后,我这个被引用指标就建立完了。然后我再重新打开便携平台,新建跨周期的主程序部分。首先要写跨周期函数减号引泡,然后是中括号, 中括号里面写跨周期函数的参数,第一个参数是周期级别,由于我要引用的是日线,所以这个地方写 day, 写 d y, 然后第二个参数是,呃,周期数,然后我引用的是日线嘛,其实就是一日 k 线,所以这个地方写成一 啊。第三个被引用指标的名字,刚刚我们保存的这个被引用指标的名字是 a, 所以 我这个中国号的这个第三个参数写成 a, 然后中括号之后 s, 后面定义跨周期变量。跨周期变量呢?然后我可以随便取一个名字啊,我为了避免混淆,我就不再写成 a 了,所以我这里给它定义成 a 一, 这样是它俩不通啊,像不同的,然后便于区分。 到这里我们就把跨周期函数部分定义好了。那通过前面的讲解,我们知道 a 一 它是有周期性的,是引用的日线周期的变量库,这个变量库里装的就是之前被引用指标 a 里面的 c c, 那么我们要把指标加载到五分钟周期上使用,就是要把库里的内容拿出来,需要单独定义出来,所以我用 a 一 点 c c 这样的写法,然后我把它定义成一个变量 c 一, 这样我就在五分钟上把日线的左手盘架引用过来了。 这里再强调一下,我想要用变量库 a 一 里面的数据,必须要用 a 一 点儿这样的固定的格式调用,这个写法是固定的点儿,后面的 c c 就是 a 一 库里的某一个值,也就是说,呃,这个 c c 是 我这个被引用指标里面对应的这个变量值 啊。所以 a 一 点 c c, 它表示的不仅仅是上一根 k 线收盘价的含义,它还有周期属性,因为这个 a 一 点 c, 它是属于 a 一 的,那 a 一 是日线的库,所以说 a 一 点 c c, 这个它不管加载到什么周期上,它都是取的日线上的昨天的收盘价。 我们来看一下我们刚刚起的这个指标,它加载的一个效果,呃,以日呃以股指加权的五分钟合约的 k 线图来为为例,我们来看一下这个图 啊,它显示的是一个这样的一个阶梯的一个形状,因为我引用的是昨天的收盘价,那昨天的收盘价在今天来说,它就是一个固定的值,就是一个交易日以变的嘛,所以说是呈现的这样的一个阶梯状啊。这个我们在软件上面一起来看一下, 这个是被引用指标前一根 k 线上的收盘架,然后这个呢就主程序引用日线上面的 c c, 然后我们加载到股指加权的五分钟周期上看一下, 大家看一下是一个这个阶梯形状的这样的一个效果啊,然后我这里面呢想给大家介绍一下文化八的一个功能,这个功能呢就叫对比跨周期跨合约 k 线图啊,它有快捷键是 alt 加 q, 也可以在 k 线图右键里面有这个菜单,可以调出,然后我们用快捷键 alt 加 q, 比较方便,直接调出来看一下, 来看一下我这个 alt 加 q, 呃,快捷键以后呢,这个变成了两个图,这个上面的呢就是我刚刚加载的 if 加权的五分钟周期的图,那下面出来的这个就是 呃日线的股指加权的这个日线的图,因为我要引用的是日线呢,所以它这个是自动识别的识别,我这个快周期被引用周期是日线,然后它直接就显出来了,这个是方便我们进行对比的。 我们来看一下这个功能,它还有一个特点是它是支持这个十字光标联动的,你说看一下,我调出十字光标啊,大家看一下我上面这个图,当前是六月二十四号,然后那下面这个图它就自动定,自动定位到六月二十四号,然后我再移动可以显 看一下前面上面这个图是六月二十三号,然后下面就自动定义到六月二十三号了。比如说他这个十字光标是联动的,就是他总是定位的是,是引用的是一个数值,我上面是哪一天,下面就是哪一天,就是方便我们进行对比啊,然后我们再回到刚刚的这个指标上来, 我们看一下啊,比如说六月八,六月二十八号这一天啊,我们先看上面这个股指加圈五分钟的这个图啊,大家看一下左上角的这个 c 一 的返回值哈, c 一 的返回值是五二零四点四, 然后我们再看一下下面的这个日线左上角的这个 c c 的 返回值,它也是五二零四点四,也就是说我这个引用过来的值是没有问题的,是正确的。 这里大家再想一下啊,因为我刚刚写这个被引用指标的时候,是把 r、 e、 f、 c、 e 写在被引用指标里的,那如果我在被引用指标里面,我直接写收盘价,然后我在主程序里面把收盘价引用过来,再把这个 r、 e、 f 写在主程序当中,这样是对的吗? 这样是有问题的哈,因为我这个呃 c 一 是日线上的价格,那 r、 e、 f、 c 一 点一,它前面是没有 a 一 点这个库来调用的, 那么它加载在五分钟上返回的就是五分钟的前一根 k 线的 c 一, 它不是日线的前一根 k 线的收盘价,所以说这种写法是错误的。这里想跟大家说明的就是大家平时在编辑跨周期或者是跨合约指标的时候,一定要注意,一定要把我要引用的内容完整的定义到 啊被引用指标里面去,不要说我被引用指标里面定义一半,然后我再拿出来一半再定义到主程序里,这样就很容易出错。那这个例子他要用的是前一日的收盘价,我们就把前一日收盘价这个作为一个整体, 整个的定义在被引用指标 a a 里面,不要像我刚才说的那样,那样定义就是错的,这里大家注意一下。 呃,我们再来看一下跨周期编辑的第二个例子,这个是一个多周期共振的例子,立足于三十分钟周期图表,当三十分钟周期 macd 指标显示红柱,且成交量较前一根放量, 大级别周期就是日线及一小时均线都成多头排列,则按小级别周期就是十五分钟或者是五分钟 kd 指标金叉作为买入点。 拿到这个题目呢,我们还是先来分析一下立足于三十分钟图表,也就是说,呃,我们这个主模型是要加载到三十分钟周期上使用的, 主模型里面要判断的是 macd 和成交量这两个指标,然后要引用的周期呢,有日线、小时线,还有十五分钟和五分钟啊。大周期呢,它包括日线和小时线是要满足的是 kd 金叉。 那跨周期模型第一步还是要建立备引用指标,编写这个备引用的指标的值呢?我们先要呃,我们看一下,要引用的是日线、小时线、五分钟或十五分钟这四个周期的值,所以我需要先定义一个备用指标,然后把这些指标值定义在备用指标里面。 嗯,快周期定义被引用指标的时候呢,我们可以放在一个指标里,也可以分成好几个指标来定义,这个是什么意思呢?就是说我可以把我要引用的所有的指标都写在一个被引用指标里,然后保存,我也可以写成多个指标分别保存,分别调用。 比如说像这个题,它用到了 m、 a、 c、 d, 用到了 k、 d、 g, 那 我可以把 m、 a、 c、 d 和 k、 d、 g 的 原码我全部都写在一个指标里,然后保存,也可以 m、 a、 c、 d 保存一个, k、 d 保存一个,这样也是可以的。 这两者呢,有一个区别,就是指标计算速度的区别,那它们在这个加载的效果上是没是没有区别的,就是计算速度上有差异。 嗯,速度上的差异是怎么体现的呢?比如说我在日线上,我要从整个的这一个指标当中调用的时候,他是从上到下把这个指标整体的读取一遍的,那我小时在调用的时候呢,他也是从上到下整整个的读取一遍。 那如果我要定义成四个不同的指标值,那我日线需要取值的时候,我就直直接把第一个指标的值算一遍。小时需要取值的时候呢,我就直接把第二个指标的这个值算一遍,这样就不需要把四个指标的值每次都全部重算一遍了 啊。那比如说我要赢的指标特别多,可能有十个、二十个这样的,那都定义到一个指标里面里面呢,这样可能就会比较影响速度,计算量比较大, 所以说这个我们就根据实际情况来选择就可以了。那对于我们现在这个例子来说,定义四个指标还是定义两个指标其实是一样的,因为日线和小时这两个周期用到的是同一个值,十五分钟和五分钟用到的也是同一个值,所以区别不是很明显。 因为电脑计算机嘛,它的计算速度本来就是很快的,这种小的这个影响其实是可以忽略不计的,那我这个里面呢,就是已定义成一个指标,来给大家来演示一下, 我们具体来看一下编写啊。首先呢,建立被引用指标,被引被引用指标呢,需要引用大周期,也就是日线和一小时的均线多头排排列, 小周期也就是十五分钟和五分钟的 k d 金叉。那我们先看这个大周期多呃均线的多头排列这部分,呃,以五周期均线、十周期均线和二十周期均线多头排列为例,我先把三条均线定义出来, 然后再定义多头排列这个条件。均线定义这个比较简单,就是直接用 m a 函数,然后多头排列的条件。我定义了一个变量叫 d t, 他就代表多头排列,然后多头排列这个地方前面的边写给大家讲过,一定要注意,一定不能连写,需要分别写,然后用按的来给他连接上,不能直接写成 m a 一, 大于 m a 二,大于 m a 三,这样是不可以的。这个就是大周期的一个呃多头排列。 嗯,然后我们再定义 k d 金叉,嗯,这里可以直接把这个,因为 k d 指标是属于这个系统的自带指标,我们可以直接把 k d 指标的源码复制过来,然后定义 k d 金叉就可以了。那金叉呢?我也是给这个变量取了一个名字叫 g c, 然后用可绕函数直接定义金叉就可以了,嗯,这个比较简单,然后具体的源码我们就不详细说了, 也就是说这个日线、小时线五分钟或十五分钟这四个周期所要引用的全部的数据,我们已经全部都写好了,然后我们把我们写的这个指标保存给它取一个名字叫做 aa, 就是 被引用指标部分我们就完成了,然后我们再来看一下跨周期的主程序部分, 嗯,首先我们先引用日线,日线的周期级别是 day, 然后由于我引用的就是正常的日线,其实就是一日线,所以周期数就是一,那第一个参数呢?是我被引用指标的名称,我们再回到刚刚的这个被引用指标上, 它保存的时候我们给它取了个名字叫 a a, 所以 我这个啊参数里面也要写成 a a, 这两个地方一定要一一对应, 然后我空格 i 字后面是呃跨周期的这个变量名称,给他取了一个名字叫 mm 一, 就是 mm 一 里面存的是日线的数据, 然后我再定义一个变量 dt 一, 它代表的就是日线上面的均线多头排列,然后通过 mm 一 点 d t 的 这个方式来给它调用过来。大家注意我这个地方定义的跨周期变量是 mm 一, 那我在调用的时候也一定要写成 mm 一, 他们两个是一定要对应的,这个一定不要出错,也就是跨周期两个对应关系,一个是这个呃,跨周期参数,第三个参数里面的这个名称一定要和备用指标名称对应上,还有一个就是跨周期变量名,在调用的时候一定要和这个点前面的这个变量名他们一定要对应上, 那我日线的这个定义完了,同样的方式定义一小时的均线多头排列啊,大家注意这个虽然都是从 a a 这个被引用指标里面取值,但是我引用的周期是不同的, 所以我要分别定义快周期变量,就这个地方我再写 mm 一 就不对了,是不能重复的,我要给他定义为 mm 二,这两个指标名称一定不要不要重复。同样取过来之后,我的变量 t t 二, 呃,和日线周期的这个 d t 一 也不能重复,变量之间都是不可以重复的,然后我再通过 m m 二点 d t 的 方式来调用。 嗯,这个地方大家注意一下这个,呃,由于我一小时周期给它定义成 mm 二了,那我从一小时取值一定也要用 mm 二点的方式来取值。如果我这个地方写成 mm 一 点 d t 就是 写错了,抵误了 它语法检测是检测不出来的,因为 mme 我 前面已经定义过了嘛,但是取值是有问题的,就是也会取成日线周期上的多头排列,就这种错误大家平时在编辑的过程当中很容易犯,但是是,嗯,一定要注意的,因为它语法检测是检测不出来的, 所以一定要注意上,一定注意,要这个对应上。嗯,然后我们后面再引用十五分钟和五分钟的 k d 金叉, 用的是 m r n, 呃,同样也是在 a a 指标中引用,定义的变量呢是 k d 一, 然后用 k d 一 点 j c 的 方式把十五分钟周期的 k d 检查取出来了,定义成了变量 j c 一, 同样的方式再取五分钟的检查数据,定义成变量 j c 二,然后呃,在 k d 二 点 gc 这个方式里面调用。这样的话呢,我就把四个需要引用的这个周期的数据从数据区中全部取出来了,然后最后呢,我还要再定义一下我这个当前加载的周期,也就是三十分钟本周期的这个 macd 和成交量指标, macd 指标,这个直接就是系统自带的指标,我把原码可以直接复制过来, macd 指标显示红柱,也就是 macd 指标。呃,是 macd 值是大于零的, 那成交量叫前一根放量,变化一下就是成交量的 vol, 这个函数比前一根 k 线的 vol 函数的返回值要大, 就是直接这样写就可以了,就是 tmp 三,就是我当前三十分钟周期上需要满足的条件,然后我们再将条件整合一下,这里面 tmp 一 就是日线和小时线满足均线多头排列。 tmp 二就是十五分钟或者是五分钟满足 kd 金叉。 那 t m p 三呢,就是三十分钟本周期满足的 macd 红柱却成,且成交量较前一根放量,把这三个条件挤在一起,然后并列起来,这样我这个开箱语句就写完了。 那这个呢,是一个开箱语句的例子啊,一个完整的模型,它是要有开箱条件,还要有平方条件的,这里给大家举的是开箱条件的写法,那实际上这个例子给大家介绍的就是多周期共振的一个思路,日线和小时线同时满足多头,小周期上的这个摆动位置要 k d 满足金叉,也就是说多周期共振了我才去做多。那上面呢,就是快周期模型的编写方法,其实大家回顾一下,主要就是围绕着引炮的这个函数来进行的,大家掌握了这个函数的话,那快周期的编写就没有什么问题了。 接下来我们看一下这个今天课程的第二部分,跨合约,嗯,讲跨合约的编写之前呢,给大家介绍一个指数,大家平时做交易如果关注指数的话,对文化商品指数应该都不陌生, 文化商品指数是文化开发的一个指数,包含了国内四十七种上市商品的综合表现。在一些期货公司的上市研报当中,可能都会看到文化商品指数 啊,比如大家在做这个股指主力的时候,你可能会去看一下股指加权或者是沪深三百的走势是什么样的,然后再来操作具体的主力合约。 那做商品的时候呢,大家可能都会去看一下文化商品的这个大宗商品的指数,看下文化商品整个走势是什么样的,用来做一个参考。因为这个指数啊,它是一个连续的合约,而我们期货的特点是交割,就是说每一个合约它都是有交易期限的,不是连续的,一年一年的这样的。 那文化商品指数,它是把所有的商品不管什么时候上市的都综合在一起,只要是这个有新品种上市以后对市场产生影响了,那我们就把这个品种编到指数里面来。所以说这个指数它也是一个动态的,一直在变化的, 它的指导意义还是比较大的。那我们一会要讲的一个编辑案例的话,它也是以引用文化商品指数为例的, 我们具体看一下跨合约如何编写,也是从跨合约函数的开始啊。这个跨合约函数大家看一下,它和跨周期函数长得很像,它们的结构都是一样的。指数函数体的话呢,跨周期这个地方是 import, 然后跨合约的话就是 call, 还有就是参数不一样,跨周期呢,有三个参数,分别是周期级别、周期数,还有被引用的指标。跨合约呢,只有两个参数, 因为我要引用一个合约嘛,所以这个地方就是引用合约的文化码。那第二个呢,直接就是被引用指标了,这个和快手期是一样的。嗯,这里注意一下,快合约函数的第一个参数只能是文化码, 嗯,不能用交易编码。平时大家在交易的过程当中,可能对交易编码是比较熟悉的,因为交易编码也比较好记, 但是这个地方他是不能用交易编码的,因为大多数合约我们要参考的合约,他可能并不是可以交易的合约,那只有可交易的合约才会有交易编码,比如说股指的,我交易股指七月份的合约,他是有交易编码的, 但是沪深三百或者说文化商品指数,它是没有交易编码的,所以我们这个里里面统一有文化码啊。换句话说,只要是有文化码的合约,那我们都可以跨合约引用过来,不管这个合约是不是可以交易的,都是支持跨合约引用的。然后我们具体来看一下编写 并且跨合约模型的这个步骤啊,和和这个快周期模型都是一样的,第一步也是需要定义被引用指标 formula, 这两个是一样的。嗯,第二步呢,是建立跨合约的主程序,然后主程序里面写跨合约函数。我们还是通过例子来具体学习一下跨合约模型如何编写, 我们看一下这个例子。呃,当文华 c c i 价格破二十日新高,当前合约均现金差的时候做多。当文华 c c i 价格破二十日新低,当前合约均现死差的时候做空。 嗯,这个里面涉及两个合约,一个是文华 c c i, 就是 文化指数啊,就是我们刚刚讲的文化商品指数。 嗯,一个是我当前要加载的合约,那主模型我是要加载在当前要加载的这个合约的,因为文化商品他是不能交易的,他只是我们交易的一个参考, 也就是说我要在这个可交易的合约上,你用文化商品指数来作为一个参考。那文化商品指数的这个条件呢?就是破二十日的新高新低。所以我们要先定义被引用指标,将我要引用的内容定义出来, 我们先看一下第一步,先建立被引用指标啊,我要引用的条件是什么呢?价格破二十日新高和价格破二十日新低。那我先定义一个变量 h h, 它代表价格破二十日新高。 这里我用的是 c 大 于 h v h 二十。嗯,大家注意这个前面的编辑当中应该也都讲过,就是我这里面一定要用 h v, 而不能用 h v 是 不包含当前周期的,这样的话这个条件才可能满足。如果写成 h v l v 的 话,那这个条件是肯定不会满足的。 那我这个呃破新高新低的条件定义完之后呢?这个背应用指标部分就写完了,我把这个指标保存,然后给他取了一个名字,叫做 h l。 接下来再来编写跨合约的主模型部分。先写,我们先不看前面的这个,先先写跨合约语句减号,然后是 call 函数体中国号里面写参数, 第一个参数呢,是我要引用合约的文华码,你要引用的合约是文华商品指数,他的文华码是七幺八六,所以我第一个参数的部分就写七幺八六。那这个呃有一个问题啊,就是这个文华码大家不知道怎么看, 就是在报价列表当中有一列就是文华码,每个合约他都有一个文华码,就是属于他的一个合约都不重复的,这个大家可以在报价列表里面看,像文华商品他的文华码就是七幺八六。 那第二个参数呢?就是被引用的指标名称,我们刚刚已经给它取名了,叫 h l, 所以 这个两个地方也是要一一对应的 啊。中括号之后, as 后面呢?空格再写跨周期变量。跨周期变量这里面我给它取了一个名字,就是 h l e, 然后也通还是通过 h l e 点的方式来调用。 首先 h 一, 我把呃文化商品的 h h 这个变量给引用过来了,那它就是文化商品破二是新高,然后再定义一个变量 l 一, 然后它是文化商品的 l l, 这个变量就是文化商品破二是新低。这样的话我这个引用的这个部分就全部写完了。 然后我们再来编写这个当前加载合约的条件是均线金叉,然后还有均线死叉,这个就比较简单了,我们先定义均线,然后这个里面是以五周期均线和十周期均线为例的,用 m a 函数定义好均线, 然后再写交叉,交叉直接用 else app 和 else down 函数来写就可以了,然后再和我刚才引用过来的 h e 和 l e 这个调节并列起来,这样我这个模型就写完了啊,我们来看一下加载效果, 还是以股指加权为例啊。同样我们用到了这个对比跨合约 k 线图的这个功能,这个跨周期跨合约的话都是支持的。如果在跨合约跨合约里面用这个 alt alt 加 q 这个功能的话呢,它 下面显示的就是我引用的这个合约具体的 k 线,那我加载的呢是股指加权的五分钟,然后下面它显示的就是文化商品的五分钟。 我们看一下这个股指加权的这个 k 线图里面,它的均线有很多的均线,呃,金叉死叉的这种形态有很多,但是图中只有这一个金叉,上面是有太多的信号的。我们把十字光标定位到这个 k 线上,然后看一下它对应的文化商品 这个上面的 h h 的 返回值,大家可以看一下这个 h h 返回是返回值是一的,那其他 k 线上 h 返回值是零,所以说只有这根 k 线上它满足了开多的信号。那大家在编辑这个跨周期和跨合约模型的时候呢?嗯,都可以使用这个 alt 加 q 的 这个功能, 对比跨周期跨合约 k 线图,帮助我们调试程序,这个还是非常直观的。 在编辑跨合约模型的时候呢,有两点注意事项给大家说一下。第一个就是引用合约的数据,指的是同一个周期的数据,我们可以看一下跨合约函数的一个特点,它的参数只有两个,一个是文环码, 一个是被引用指标,他是不涉及到周期的,也就是说我把这个模型加载到什么周期上,那他引用的就是那个合约上对应的这个周期的数据。比如说我们刚刚起的那个例子,我们加载到股指加权的日线上,他引用的文化商品指数就是引用的文化商品的日线的数据。 那如果我把模型加载到谷指加权的三十分钟周期上,他引用的就是文化商品指数三十分钟的数据,那我加载到一分钟上,他引用的就是文化商品一分钟的数据 啊,这个就是第一点。第二个呢,就是引用的两个合约,如果交易时间不同,被引用的合约在非交易时间的数据是空值啊,这个是什么意思呢?比如说我在五分钟的沪铜指数上,我引用股指加权,我们都知道沪铜它是有页盘的,而股指是没有的, 所以在二十一点之后的整个页盘交易期间,那我是引用到的股指上呢,这个数据都是空值,这个我们了解一下。 那讲到这里呢,我们今天跨周期跨合约编写部分就给大家介绍完了啊,其实总结起来就是两个重点函数,一个是跨周期 import, 一个是跨合约 call。 比如说我在一分钟上想要引用日线的数据,那我要用呃,快快周期模型,就要用这个快周期函数是 import, 我 要在主力合约上引用文化商品,或者我要引用呼声三百,那我就是要用这个快合约的思路,我就要用这个呃,快合约函数,就是 call。 最后给大家总结一下这两个函数在使用过程中需要注意的一些问题。第一点,跨周期跨合约模型中被引用的指标中不能存在引用,也就是说被引用的指标当中我就不能再出现跨合约和跨周期函数了,就是不能欠套的去引用。 嗯,第二点,一个快周期快合约模型最多支持六个引用语句,这个简单来说就是在一个模型当中最多可以有六个井号出现,那井号后面跟的是什么?这个不用管,只要不超过六个井号就是可以的。 第三点,整个软件当中使用跨周期跨合约数据源的总量不能超过七十二个,那整个软件是什么意思呢?它包括主图、副图、模组、页面、盒子,就这些加起来我使用的整个的这个跨周期跨合约的数据源不能超过七十二个 数据源。这个可能比较抽象,我们举一个例子来给大家看一下这个数据源要怎么数。 我们先来看一下这个跨合约,嗯,先看第一个,这个它引用的数据都是一样的,都是八六幺零这个合约, 然后引用的指标呢,也都是一样的,都是 qq 一, 所以说虽然我写了六个井号,但它是一个数据源,它就只有一个数据源。再来看第二个引用的合约呢,是一样的,就是八六幺零,但是指标不同, qq 一 到 qq 六,所以说呢,这个它是属于六个数据源了 啊。然后我们再来看一下这个。第三个,它引用的合约不一样,八六零一到八六零六,然后指标啊指标是一样的,都是 q 一, 那这个它也是属于六个数据员。我们再来看一下跨周期的, 第一个,这个周期都是五分钟,但是指标啊指标也是相同的,那这个呢,它是属于一个数据员,第二个呢也是属于六个数据员了。 第三个引用的都是五分钟周期的数据,但是指标不一样,那他呢也是属于六个数据员了。也就是说,呃,当数据员超过七十二个的话,这个软件是会有提示的,提示不能超过七十二个。如果说出现这个提示,那大家就可以 呃,去看一下自己实际当中用了多少个,然后对应的修改一下就可以了。呃,接下来我们一起做一个练习,巩固一下今天的学习。我们首先还是来看一下题目, 日线 k d 金叉的同时,在一小时周期 macd 金叉且成交量放量的时候反手做多。日线 k d 死叉的同时,在一小时周期 macd 死叉且成交量放量的时候呢?反手做空。 呃,我们分析一下这个模型,它是加载到一小时周期上使用的,然后我需要日线的 k d 金叉死叉,所以说这是一个跨周期的思路, 那我引用的指标是日线的,然后被引用的指标呢是 k d 的 金叉死叉,所以说 k d 这个指标和金叉死叉的条件我是需要写在被引用指标里面的。然后我的主程序加载到一小时周期上,把 macd 定义在主程序当中, 主程序当中写 macd 金叉和成交量放量的这一部分,然后我们一起来写一下。 呃,首先呢,我们建立背引用指标 d d。 呃,背引用指标 d d 里面用到的是,我们先把这个思路复制过来,方便查看。 呃,首先建立背引用指标,背引用指标里面呢是日线的 k d 金字叉,所以我需要用到 k d 这个指标,那 k d 呢?是属于这个系统自带的一个原码了,然后我们可以直接把它的原码复制过来。 嗯,参数的话需要自己写一下,因为系统自带的嘛,它是定义在参数列表里的,然后这个里面为了方便我就直接写数值了,就不定义参数列表了。 k d j 指标定义好以后,我再去定义金子叉,然后还是给变量取一个名字, j c 就是 金叉,金叉用 cross 函数来写 cross, k d 就是 k d 金叉,然后再定义死叉啊,变量 s c, 然后用 cross down k d, 这样就是 k d 死叉,这样我这个背引用指标 k d 今死叉就定义完了,然后我们语法检测一下没有问题,保存一下,给它取一个名字叫 d d, 然后我们再再来建立主程序部分。 首先写快周期函数, 由于我要引用的是日线上的 k d 近似差,所以说我这个周期参数要写 day。 然后第二个呢,就是一刚刚我们那个被引用指标保存的名称是 d d, 所以 第三个参数这里写 d d, 然后 as 跨周期变量,我给这个变量取个名叫 v r e, 然后我们把刚刚定义的金叉死叉引用过来,金叉我还给它取名叫 j c v r 一 点 j c, 然后死叉呢 v r 一 点 s c, 这样我这个要引用的这部分就定义过来了。然后我们再来看一下我这个主程序当中 啊,需要写哪些条件。主程序是一小时周期的 macd 金叉期,成交量放量的时候就多啊,它用到了 macd 这个指标, macd 也是系统自带的指标,我们也是直接复制它的原码就可以了。 嗯,然后我这个指标,我这个模型呢,不需要显示柱线,所以这一行是没有用的,直接删掉就可以了。那 d, r, f 和 d, e, a 在 编辑过程中,它其实都属于中间变量,我直接用冒号等号定义, 这样程序加载以后不会显得比较乱。 m, a, c, d 指标定义好之后,我们就来写条件,条件是 m, a, c, d 金叉死叉,还是用可绕次这个函数 d, i, f, d, e, a 这样就是 m, a, c, d 金叉。成交量放量量化一下,就是当根 k 线的 vol 比前一根 k 线的 vol 大, 直接用 r, e, f 函数取到前一根 k 线的 v, o, l 比较一下就可以了。然后最后再把我们快周期引用的这个金叉定义上,那这个就是开多的条件那根 b, d, k 指令,然后我们再写开空的 macd 死叉,同时成交量放量, 同时被引用周期死叉, 然后 s, p, k, 最后不要忘了过滤模型 out filter, 让我们语法检测一下,没有问题,这个编写就完成了啊。以上就是我今天课程的全部内容,希望对大家的编写有所帮助。

不会吧不会吧!竟然还有人不知道怎么看机差?先来看手机版,进入文华财经 app, 点开一个品种,左下角找到资讯, 往下翻,找到 gx 报告就是这里啦!再来看看电脑端还是文华财经左侧进入期货板块,还是选择这个品种,左侧,打开资讯链, 往下翻,找到文华统计就是这里啦!或者直接点击下方资讯栏,选择文华统计进行检索,是不是非常简单?

大家好,今天这节课跟大家分享一下日内模型的编辑。在期货交易中,日内交易是一种很常见的交易思路,这个也是本身由期货的特点决定的。首先期货呢是一个 t 加零,交易比较活跃,流动性大。再就是期货市场是一个国际市场, 国内求市时国外市场还在交易,这样就有可能出现一个问题,国内期货受到外盘的影响,再次开盘的时候呢,跳空会比较大,也就是我们经常说的持仓隔夜是有风险的,所以说在收盘前一般要把仓位全部平掉,不留隔夜持仓。 我们今天就讲一下这一类的模型有哪些特点,具体如何编辑。我把今天的课程内容分成这样几个部分,第一个部分我们简单介绍一下期货市场的交易模式。 第二部分,我会以一个简单的日内交易模型的例子来开始我们今天的编辑学习。那第三部分呢,就是给大家整理了日内模型的几个编辑要点,然后逐个的给大家详细讲解一下。这一部分呢是我们今天要讲的重点。 最后一个部分给大家准备了相关的练习,让大家巩固一下今天所学习的内容。一般情况下,期货的交易模式如果按照交易周期的长短来划分的话,可以分为这样四种模式。 第一种就是我们今天要介绍的日内交易模式,比如在一分钟周期开盘,低根 k 线开仓, 过几分钟仓把仓位平掉,可能后续会再开仓,但是收盘前一定会把仓位全部平掉,那这个呢就是一个日内趋势交易的思路, 所以说日内交易他都是在分钟级别或者是秒级别这样的小周期进行的,短线交易呢,可以在分钟级别,小时级别或者更大的日线级别上进行交易。 波段交易呢,他比短线交易的时间要长一些,可能三到五个交易日甚至更长。呃,中长线交易呢,这个我们大部分的投机交易者可能不会接触到,一般做套利或者是套期保值可能会用到,他可能需要持仓三到五个月这样子。 那我们今天要讲的就是第一类日内趋势交易模型,具体如何来编写?呃,我们看一下这个就是一个简单的日内趋势交易的思路了,我们从这个例子开始第二部分的学习,我们看一下具体的思路, 要求规铁品种一分钟周期开盘走出五根 k 线后,最高价创五周期 k 线的新高,并且收盘价创五周期新低,并且收盘价创五周期新低。开空仓, 收盘价低于前一周期最低价平多,收盘价高于前一周期最高价平空,收盘前十分钟无论多空都平仓,不留老仓。我们具体看一下边写。 首先定义一个变量, n 是 divopose, 在 这儿 divopose 这个函数是用来判断当根儿,当根儿 k 线是当天的第几根 k 线的,也就是说它取的是日内的 k 线根数。我们编写日内趋势模型经常会用到这个函数,这个大家一定要掌握。 其实我们在前面的课程当中呢,也介绍了一种日内 k 线根数的一个写法,是用巴斯拉斯的函数和 day 的 函数来写的。这两种写法其实都是可以的,但是用 z y pos 的 话会更简洁一些 啊。然后就是开仓条件的边写, h 大 于 h v, h 五最高价创五周期新高。这里用到的是 h v 函数,而不是 h v, 是 因为我们是要用单根 k 线的最高价与历史最高价去判断的,它是不包含当前 k 线的 hv 和 hhv 的 区别,这个之前的课程也给大家讲过啊。第二个开仓条件, c 大 于 hvc, 五收盘价创五周期的新高,用的也是 hv 函数。第三个开仓条件就是我们刚才定义的变量 n, 他是用来判断当天的 k 线根数的,那开盘走出五根 k 线以后,才开始判断开平仓条件。因为我这个里面用的是一分钟周期嘛,所以,呃,五分钟就正好五根 k 线。这里边写的是 n 大 于五这个条件。 还有最后一个条件,我们需要特别注意一下, time 小 于一四五零。 time 这个函数之前的课程也已经讲过了,他取的是 k 线时间, 加载在分钟小时周期上,返回的是四位数,嗯,到分钟级别呢,加载到秒周期上,它返回的是六位数,就是精确到秒这个级别。那我们要求的这个模型是在一分钟 k 线上的,所以 time 判断的值就是四位数。 time 小 于一四五零,它表示的就是我们的开仓条件呢,是在十四点五十之前有效的,也就是说只允许在十四点五十之前开仓。 我们稍后会再具体的讲一下在开仓条件中进行这个时间限制的必要性啊。开空单的条件也是同样的编辑方法, l 小 于 l v l 五是最低价,创五周期新低,然后 c 小 于 l v c 五收盘价创五周期新低, n 大 于五开盘价,开盘走出五根 k 线,然后 time 小 于一四五零,只能是十四点五十之前开空仓, 然后就是平仓条件, c 小 于 r e f l 一 收盘价低于前一根 k 线的最低价, 那平多仓,然后收盘价大于前一根 k 线的最高价平空仓啊。还有最后一行这个红色的边写部分 time 大 于等于一四五零 closeout, 我 们已经知道了这个 time 大 于一四五零的意思,表示的是十四点五十之后,然后 closeout 呢,是一个清仓指令, 也就是说不论我当前持有的是多单还是空单这个函数,这个指令他都是可以把仓位平掉的。这行原码他表达的就是我们思路中的最后一个条件,收盘前十分钟,无论多空全都平仓,不留老仓。 那既然我们限定了收盘前十分钟不能有任何的实仓,所以在逻辑上就要满足清仓以后不可以再开仓了。所以我们在编辑开仓条件的时候,也限制了他们小于一四五零, 也就是说这两个时间条件是要对应的,那我边写了尾盘清仓,在开仓中,在开仓中就一定有对应的开仓时间限制。大家再整体理解一下这个红色的标红的部分,是这个非常重要的地方,大家一定要掌握的,我们来看一下这个模型它的加载效果。 看到这个信号图,我们直观的感受就是信号非常的多,交易次数非常的多,并且每一个信号之间的这个信号连线很短,就是它持仓时间很短,一共就只有几根 k 线,信号之间的间隔是非常短的,那信号间隔短,盈利水平就不会太高。 那这里就涉及到一个交易次数和一个及时止损的一个问题,如果我们反复的开平仓,得到的利润可能就是非常非常小的,甚至说是没有利润的,所以说室内交易有一个很重要的问题就是止损。 还有一个问题就是交易次数的问题,减少交易次数就相当于节省了交易成本,这个也相当于降低了亏损。 还有就是,呃,我们日内交易模型的这个尾盘平仓在这个地方体现的,它的作用呢就是避免出现隔夜持仓,大家看一下,清仓以后就不会再出开仓指令了。呃,从这张图呢,我们呃和刚才那个简单的编写呢,我们对日内模型应该有了一个大概的了解了。 呃,我们再具体学习一下日内模型在编辑中的一些编辑要点,这里给大家总结了四点,这四点都是非常重要的,呃,在编辑日内交易模型当中,这四点基本上都会涉及到。首先就是一个开仓时间的一个控制,这个里面是要区分页盘和白盘的, 呃,页盘和非页盘合约的,呃,因为页盘合约和非页盘合约呢,开仓时间是不同的,如果我们不注意的话,就可能会漏掉某一段有效的交易时间。 而且叶盘合约它是包含白盘和叶盘两个大的时间段的,那逻辑和编写上呢,都会比非叶盘合约复杂一些,稍后会给大家详细的讲解一下啊。这里的叶盘和非叶盘具体如何区分?如何编辑? 第二个就是尾盘清仓语句的编写,这个在日内交易模型当中也是很重要的。呃,这里其实在编辑的时候和开仓时间一样,它也是需要区分叶盘和非叶盘合约的,因为都涉及到时间嘛。 第三个就是止损和交易交易次数的控制啊,刚才我们已经提到了,日内交易的持仓周期很短,盈利本身就不高,那反复的开平仓会浪费很多的交易成本, 并且行情每天的波动幅度是有限的。但日内交易我不是做长期趋势的,不能因为等待趋势就去承担很大的这个回撤的风险,所以说如果超过了预计的波动幅度的时候,那我就要坚决的止损,止损和交易次数控制。这个具体如何编辑,我们待会会给大家详细的讲解一下 啊。最后是只用当日数据计算,这个大家可能不太理解是什么意思,这个主要就是,呃有两个函数来实现的,这个待会给大家具体的介绍一下。 第一个要点,开仓时间的控制,我们先来看一下这个左侧的这个 k 线图,这个黄色的这个圆圈是清仓指令,那红色和绿色的这个实心的箭头呢?是开仓指令。 由于编辑的时候我这个没有考虑全面,没有考虑到需要在开仓时开仓条件里面加开仓时间的限制,所以就出现了红圈里这样的一个情况,在清仓后又出了开仓信号,出现了一个反复的一个开屏,这个是和交易思路不符的,属于编辑和逻辑上的一个漏洞。 那右侧的 k 线图呢,我发现了这个漏洞,并且优化了编辑。那在左侧的这个模型基础之上加入了开仓时间控制,就是把编辑上的漏洞给修复掉了,那它加载的效果呢?出清仓信号以后,一直到收盘都没有再出现新的开仓信号,这样就避免掉了反复开屏的问题。 那么我们接下来就给大家讲解一下怎么编辑开仓时间控制来实现这个效果。 呃,同样是以讲解一个势利的方法来带大家学习下面这个例子,重点在于学习开仓时间控制的编辑。 嗯,刚才的例子中我们已经学习了,可以用 time 函数来编辑时间条件,其实软件当中呢,还为大家提供了另外一种更简便的写法,所以在编辑开仓时间控制的时候呢,其实我们是有两种写法的,这个我们马上就会学习到。 呃,我们先看一下思路,要求互同品种十分钟周期收盘价大于布林上轨和唐吉安通道上轨反手开多,收盘价小于布林通道下轨和唐吉安通道下轨反手开空, 当日收盘前十分钟清仓。那拿到这个思路,我们首先分析一下,首先它是互同这个品种上加载的,那互同这个品种它是一个有夜盘的品种,夜盘交易时间呢,是二十一点到次日的一点,它是一个跨天的合约,白盘的交易时间是九点到十五点。 那我们呃,我们知道哈,无论合约是否有夜盘,他的收还时间都是十五点,一个交易日的结束呢,都是以十五点作为结束的,夜盘收盘他是不算做当日收盘的,夜盘结束只是一个小节的结束, 所以题目中要求的收盘前十分钟清仓,他指的是十五点收盘前十分钟,也就是十四点五十。那分析完这个交易时间以后,我们就可以开始具体的编写了。 我们先来看一下第一种写法啊,前面这几行是布林通道和糖基安通道的写法,这个是软件自带的指标,我们在编写的时候直接复制过来使用就可以了啊。首先定义布林,然后是 m i d 变量,是布林的钟轨,用 m a 函数求二十六个周期的收盘价 啊。 t m p 二,它是一个中间变量,是计算二十六个周期收盘价的标准差。然后 top 呢,是布林通道的上轨,它是在钟轨的基础上加了两倍的标准差。 the bottom 呢,是在中轨的基础上减去两倍的标准差,作为布林通道的下轨。然后下面这两行是糖基氨通道的一个定义方法,直接用 h v 和呃 l v 这个函数来定义,然后我这个周期书写的是五, 那这个指标部分定义完了,我们来看一下具体的开平仓条件。呃,我们先不看这个红色的字体的部分,先看前面的开仓条件,这个比较简单, 收盘价大于不临上轨,并且收盘价大于唐岐安通道的上轨,我反手开多。收盘价小于不临的下轨,并且收盘价小于唐岐安的下轨,反手开空。那这个呢,就是呃, 不加时间条件的这样的一个条件。我们先不看红色的,然后我们看一下这个后面这个尾盘清仓条件啊,因为我们的思路是收盘前十分钟清仓条件啊,因为我们的思路是收盘前十分钟清仓,所以这里写成他们大于等于一四五零。 那这个地方大家思考一下,我为什么要去写这个 time 小 于等于一五零零呢?那这个是我写的是多余的一个条件呢?是不是容易的呢?如果我不写这个条件,会有什么问题呢? 首先这个 time 等于小于等于一五零零,这个是必须要写的,因为在程序里面, time 它返回的就是一个简单的时间,它不会帮我们判断交易日,在数值的判断上,那只要比一四五零大的数, 他都是满足他们大于等于呃一四五零的这个条件的。那夜盘的时间是从二十一点开始,二一零零是肯定大于一四五零的。 所以如果我们不写后面的这个限制的话,在夜盘的时候,这个清仓条件他是持续满足的,那就会有一个什么效果呢?就是我们前面截图的那个反复的开屏,我开仓信号出了以后,立马满足清仓指令,然后再开再清,这样就是一个反复的开屏。其实这就属于一个呃编辑和逻辑上的漏洞, 所以这个时间限制我一定要限制准,然后把这个时间限制住。有了尾盘清仓的时间,我们再回过头来看,这个开仓时间限制就很简单了。那 tom 小 于一四五零, 它是包含摆盘的交易时段的,然后还包含了零点到呃九点这个时间段,所以它是从零点到一四呃十四点五十都是包含在这个条件当中的。 那他们大于二一零零呢?表示的是夜盘交易时段二十一点到二十三点五十九都是包含在这个条件中的,这两个条件并列呢,就表示夜盘的二十一点到二十三点五十九和零点到收盘前的十四点五十,这都属于可开仓的时间范围, 我只把收盘前的十四点五十到十五点这一段跑掉了,那这样就限制住了我清仓之后不会再开新仓了。 并且这个条件的话,它只是一个限制开仓的时间条件,它跟开仓方向是没有关系的,所以我多单多呃开多开空都是用,那我在空单里面把这个条件复制上就可以了, 对,这个编写就写完了,那这个呢,就是一个完整的日内交易模型的编写,这个模型编写的重点就在于我红色标注出来的部分对开仓时间这一部分的一个限制啊,这个地方大家一定要好好的理解和掌握一下。 嗯,边写开仓时间限制的第二种写法呢,它主要就是通过呃两个函数来实现的,一个是 close minute, 还有一个就是 close second close minute, 返回 k 线开始时间距离收盘前的分钟数。这个函数它只能用于收盘加模型, 收盘价模型是相对于指令价模型而言的,之前如果没有了解过的话也没有关系。这个我们后续安排的课程当中呢,会给大家详细的讲解到啊,这个呢也不是我们今天讲的这个课程的重点,所以就不给大家展开来说了。那这个函数呢,它取的是 k 线的开始时间距离收盘的分钟数。 举个例子,比如说我这个商品期货十四点三十到十四点四十五的这一根十五分钟的 k 线,它返回的时间呢就是十四点,三十到十五点的这个时间也就是三十分钟。然后这个函数它返回的是分钟数, 所以,呃,需要在这个分钟和小时周期上使用,它是不支持在 tick 秒和量能日线这样的周期上使用的。那这个函数它会自动判断一盘合约和白盘合约的收盘时间, 比如一盘合约十五点就是当日收盘,不用我们再去区分不同合约的收盘时间了,那用它的话呢,就比用 time 函数在编辑时间范围上要简单很多。 呃,另外这两个函数 close minute 和 close second, 它们两个是不能一起使用的,因为这个数量级是不同的,一个是分钟数,一个是秒数,那 close second 呢?它返回的是 k 线开始时间距离收盘前的秒数, 同样的,它也是只适用于收盘加模型,它返回的是 k 线开始时间距离收盘的描述。这个函数呢,它只能加载在秒周期上使用,它是不支持其他周期的。 那这里呢,我这个只是截取的函数说明当中比较重要的一部分,就不是完整的函数说明,这个完整的函数说明大家后续可以到编辑平台上去查看,会有更完整的一个,呃,一个说明。呃,接下来我们就看一看怎么把这两个函数应用到日内交易模型的编辑当中来控制开仓时间, 还是回到我们刚才的这个呃,模型,它前面的指标定义和开仓条件和刚才都是一样的, 也是用到了布林,然后还有唐西安通道,我直接复制就可以了,那开仓条件也不变,还是和呃上下轨,然后还有唐西安的上下轨去比较。我们改的呢,只是这个时间范围的这一块儿, 呃收盘前十分钟清仓,也就是收盘前十分钟之前的时间都是允许交易的,那我直接写 close minute 大 于十 表示 k 线开始时间,距离收盘时间大于十分钟的时候,都是允许开仓的啊。那对比一下之前探盘数的边写这种写法,显然它是要简单的多的,它只写一个判断条件就可以了,不用再去用那个收盘时间去减十分钟去换算。 而且用 close minute 和 close second 的 函数的话呢,我直接可以应用于所有的品种,不需要自己再根据交易品种再去判断它的收盘时间了,所以说逻辑上也是更通顺的。 嗯,所以说如果能学会这两个函数的用法,那对我们编辑日内交易模型来说,嗯,是可以大大的简化我们这个编辑的,然后可以提高编辑效率。 开仓时间控制的编辑到这里就告一段落了,我们接下来再看一下日内交易模型编辑的第二个要点就是尾盘清仓。 前面我们已经看到了尾盘清仓语句的编辑,归结起来呢,其实就是一个指令和两个函数 啊,一个指令就是 close out 清仓指令,它是平掉所有方向的仓位,不区分多仓和空仓的两类函数,一是取得 k 线时间 time 函数,还有一个就是取得距收盘前的时间 close minute 和 close second。 在编辑尾盘清仓指令的时候呢,也是需要注意区分以下白盘和夜盘的。上面我们已经提到过了,期货是国际市场,国内市场是很容易受到国外市场的这个行情的影响的,尤其是开盘跳空,还有隔夜跳空。 所以说叶盘合约通常在做日内交易的时候呢,也是需要在叶盘收盘前进行一次清仓的。那我们给大家准备了两个事例,也是分别与针对这个非叶盘合约和叶盘合约这两种合约的尾盘清仓。那我们具体来看一下。 呃,先看第一个例子,是国债期货,呃,一分钟周期收盘价上船,五周期均线反手开多。收盘价下船,五周期均线反手开空,收盘前两分钟清仓。呃,国债期货没有夜盘,而且它的交易时间比较特殊,和商品期货不太一样, 他是上午九点三十开盘,然后一直到十一点三十,下午是十三点开盘,到十五点十五收盘,所以在进行这个尾盘清仓的时候就需要注意了。嗯,我们不只要区分夜盘合约和非夜盘合约, 只要区分秒周期周期和分秒周周期,还要区分我当前加载的是股指、国债还是商品,因为它们的交易时间都是不一样的,具体来看一下便写。 呃,先看第一种写法,是用 time 函数来编写的,我先定义了一条五周季均线 cross, cross 函数表示穿越的思路, 收盘价上穿五周季均线,并且时间呢,在十五点十三分之前,我可以开多仓,反手开多。嗯,收盘价下穿五周季均线,并且时间在十五点十三分之前反手开空档。最后是尾盘清仓语句的编写 啊,因为没有页盘,就是他这个编写相对简单一些,我直接写 time 大 于等于一五一三清仓就可以了啊。这个 因为国债吗没有页盘,所以编写比较简单,但是如果没有确定好收盘时间的话,这个肯定也是写不对的,所以大家在编写的时候一定要注意,不要忽视这些细节,要去看这个品种它具体的交易时间是什么样的。 然后我们再来看一下用第二种方法如何编写。前面我们我们已经学习过了,开仓时间控制有两种编写方法啊,所以这里我们在编辑尾盘清仓的时候呢,我们把开仓条件和清仓条件中的这个时间控制这部分的编写呢,也做一下优化。 开仓条件中的这个时间控制啊,我可以直接调整为 close minute 大 于二,那对应的清仓时间的小于等于二 close out 就 可以了,可以发现哈,对比一下 第二种方法,它是比较简单的,因为不需要我们去判断收盘时间。嗯,像这个的话,我我还要需要去判断一下国债是十五点十五收盘,我做一下换算,那我用 kolos mina 的 话,我不需要换算,直接小于等于二就可以了 啊。上面呢就是非月盘合约的尾盘清仓指令的编写啊,逻辑和编写都比较简单,然后我们加深一点难度,来学习一下月盘合约的月盘收盘前清仓和尾盘清仓应该怎么写 啊?夜盘合约的收盘前清仓其实和非夜盘合约收盘前清仓没有什么区别,因为除了很特殊的国债期货,其他的品种都是十五点收盘的,这个时间是比较统一的啊,但是夜盘合约的夜盘收盘时间就不是这样了啊,比如刚刚我们提到的户同,他的收盘时间是凌晨一点, 同市场的螺纹呢,就是二十三点收盘。所以说除了用常规的 time 函数来限制页盘的收盘时间以外,软件还给大家提供了专门用于判断小机收盘时间的函数,所以我们编写页盘前清仓也是有两种方法的。稍后呢,我们会给大家介绍一下函数和写法, 我们来看一下一个视例,互同品种,十分钟周期,三条菌线,多头排列,反手开多,三条菌线,空头排列,反手开空,不留隔夜仓,并且当天收盘前十分钟清仓 不留隔夜仓呢?这个指的是叶盘收盘线,需要清仓,是不能留到第二天的白盘的啊。首先我们还是看一下第一种变写方法,用大家最熟悉的这个碳盘数来变写 啊,这里定义了一个均线组合,用的是五十二十周期,三个三条均线啊。接着定义了一个变量, tc, time 大 于等于一四五零,并且 time 小 于等于一五零零,或者 time 大 于等于零零五零,并且 time 小 于零一零零。这个表示的是两个时间范围,一个是十四点五十到十五点,还有一个就是零点五十到一点, 这个就是我们要求的清仓的时间段,那满足这个条件就要清仓,不满足这个时间条件就是可以开仓交易的。所以下面 bpk 指令的这个编写当中, 我可以直接这么定义, tc 等于零,表示是在清仓时间以外允许开仓的。那前面这部分呢,就是呃多头排列的定义,短周期均线大于长周期均线, 五周期均线大于十周期均线,并且十周期均线大于二十周期均线,这个连续比较,这个是需要分别编写的,不能连写,不能连写大于大于号。这个啊,之前前面的课程也给大家讲解过,编写的时候需要特别注意。 然后 spk 指令呢?是空投百列,短周期均线小于长周期均线 m a 五小于 m a 十,并且 m a 十小于 m a 二十啊,这个是一个呃开空的指令,然后加上空仓的开仓的这个时间限制, t c 等于零。 最后的清仓条件的编辑也是直接用 tc 变量来写, tc 等于一表示是满足清仓时间的,然后直接 close out 清仓就可以了。那这个模型在编辑的过程当中呢?它其实是把复杂的一个时间条件定义成了一个变量, 这是一种编辑上的技巧,因为后续我会用到这个变量,或者说用到这个变量相反的这个条件的时候,那我直接可就可以用这个 t c 等于零来代替了,不用我一遍一遍的再去写这个复杂的条件啊,变量等于一就表示满足条件,变量不为一就表示啊不满足条件。 而且我用变量定义的话,我后续修改或者是调试这个代码的话,也会比较简单啊,就我们只需要修改这一行就可以了,那其他用到 t c 的 地方都不需要动。 嗯,就是比如说我这个呃是在叶盘品种上用嘛?那我要换一个合约,它可能这个叶盘收盘时间不一样,那我就需要去改这个里面的这个具体的这个交易时间,如果说我不用 tc 定义出来,那我每一行都有时间条件,我要修改模型的话,就需要修改很多很多行,但如果我定义成一个 tc, 那我只需要修改 tc 这一行就可以了啊。这个其实就属于一种编辑上的技巧,这也算是一种比较好的编辑习惯吧。那大家在后续的编辑过程中也注意一下,可以定义为变量的,那我尽量就用变量来定义,不要说把所有的好条件都堆在一行去写,这样比较容易出错。 呃,接下来给大家介绍的呢,就是刚才提到的距以小节结束时间的函数,呃, close minute every 和 close minute second 这两个函数, 呃, close minute every, 它返回的是 k 线开始时间距离小节结束的分钟数,它是有一个参数 n 的, 那这个参数 n 它表示的是第几个小节? 举个例子,比如说互金合约,那我这个 n 写成一的话,它表示的就是第一小节是二十一点到次日的两点三十,那 n 等于二呢?就是第二个小节,就是早上开盘九点到十点十五, 那 n 写成三就是第三个小节,就是上午的十点三十到十一点三十, n 写成四的话就是,呃,第四个小节就是下午的十三点到收盘十五点。 close second area 这个函数呢,它取的是 k 线开始时间距离小节结束的秒数,它也是有一个参数 n, 呃,这个 n 也是表示小节,这个用法是和 close n 点的 area 函数相同的。呃,那我们用学到的这两个新的函数重新看一下刚才这个思路的编辑方法, 因为我们刚才直接把这个思路的编辑方法,所以可这里直接在 tc 变量中调整编辑方法就可以了。 那收盘前十分钟,嗯, close minute 小 于等于十,用它来定义就可以了。夜盘收盘前十分钟用 close minute every 来定义,参数为一,因为它是夜盘嘛,是第一个小节 啊,这个就是夜盘的交易时间段, close minute every 一 小于等于十,然后 bpk s bk close out, 用到的这个时间条件都完全不需要动,因为我在 tc 里面都已经改好了啊。这个就是我们刚才说的把一个复杂条件定义在变量当中的一个好处。 那尾盘清仓的编辑呢?到这里我们介绍了很多,因为尾盘清仓在日内模型当中它是非常重要的,然后我们还介绍了几个新的函数的用法,那大家在后续编辑日内模型当中,就可以用这个新的函数去写了, 除了对开仓时间和清仓时间的控制,然后接下来我们要学习一下第三个要点,交易次数的控制和严格止损。 嗯,限制交易次数之所以在日内交易当中直观重要,是因为你每天交易的时候,日内交易的交易成本就是华点, 交易的次数越多,那华点就越大啊,那么如果在你的胜率无法保证的情况下,盈亏比又不是很高的时候,华点占你亏损的比例就会非常大。所以说日内交易限制交易次数其实也可以看成是一种止损啊。那这个里面呢,是一个案例, 螺纹一分钟周期最新价大于当前交易日开盘价,并且创当日新高。开多仓最新价小于当前交易日开盘价,并且创当日新低开空仓,亏损百分之一,止损一天不超过两次交易,当日收盘前十分钟清仓。 拿到这个思路,我们先来解读一下开仓条件中,他用到了当前交易日的开盘价和当日的新高新低。并且日内交易的开仓条件中还有一个什么隐藏条件, 是开仓时间限制的变写,这个一定不要忘了。然后下面呢就是亏损百分之一,这个止损的一个变写, 一天不超过两次交易,这个是限制日内交易次数的编辑,然后收盘前清仓啊,它这个里面呢没有特别的要求夜盘清仓,所以我们就只编辑十五点收盘前十分钟清仓就可以了。 然后在学习这个模型完整的编辑之前呢,然后我们去我们来看几个这个编辑当中要用到的比较重要的函数。第一个函数是 count six 函数,它统计的是 n 个周期内呃,某个信号的个数, 它是有两个参数的啊,第一个参数是信号类型,那软件中的信号呢?都可以用这个函数来取,比如说 b k, s k, bpsp, 反手 bpk, spk, 然后清仓, close out, 然后包括止损指令 stop, 它都是可以写在这个第一个参数当中的。 然后周期 n 统计的是包含当根 k 线在内多少个周期,这个 n 是 有效值,但是单,但是当当前的 k 线不足 n 的 时候呢,它就是从第一根统计到当前就是所有的 k 线上有多少个信号, 所以呢这个 n 呢,也可以是变量,比如说我可以写这个我们刚刚学的那个函数 day 八 pose, 那 就是日内的 k 线根数,我这个 n 写成 day 八 pose 的 话呢,我就是统计当日内的某个信号到底有多少个 啊。第二个比较重要的函数就是 b k price, 它取的是最近一次买开信号的价格,一般是用来设计止损思路的。 那对应的呢? s k price 是 取的最近的一次卖开信号的信号价位啊,同样也是在这个编辑止损当中用到的比较多。然后我们看一下怎么把这三个函数应用到我们刚才的那个模型的编辑当中。 首先我们定义 n n 变量 day 八 pos 是 日内的 k 线根日内的 k 线根数,然后 o 变量,它是用 value 函数取当天第一根 k 线的开盘价,就是我当天的开盘价, h h 和 l l 是 当日的新高和新低,我是用 h v 和 l v 函数来取的,然后这个 n n 这里面是日内的 k 线根数。那多单的开仓条件,最新价大于当前交易日的开盘价,并且最新价穿当前交易日的新高。然后是开仓时间的控制, time 小 于一四五零,并上 time 大 于二一零零,然后夜盘的二十一点到二十三点,五十九零点的零点到十四点五十, 除了夜盘收盘前十分钟,也就说除了十四点五十到十五点这个时间我都是可以开仓的。那最后一个限制条件,用 count sum 函数 取了 n n 个周期,也就是当前交易日内的 b k 信号个数和当前交易日内 s 信号个数,就是当前这个交易日内所有的开仓信号的个数,是要小于二的啊。比如说当前交易日我已经出了一个 b k 信号和一个 s k 信号, 那 n n 个周期内的信号个数的和就是二了,那么再出一个开仓信号,我不管它是 b k 还是 sk, 它都不会再满足信号和小于二这个条件了,就实现了一天不超过两次交易的这样的一个限制。 空单的开仓条件,最新价小于当前交易日的开盘价,并且最新价创当日新低,开仓时间的控制,然后交易次数的限制,这部分的面积呢,这个和开多都是一样的。然后就是止损的部分, 亏损百分之一多单价格下跌表示亏损,也就是在开仓价的基础上 pk price 的 基础上 下跌了百分之一,用 bk price 乘以一减去零点零一,价格从高下跌出发止损,所以最新价小于止损价时满足止损条件。这里用小于号来判断多单的止损。空单的止损逻辑呢?恰好相反, 空单上涨表示亏损,那应该在开仓价 s k price 的 基础上上涨百分之一止损,所以是用 s k price 一 乘以一加上零点零一,价格从低上涨出发止损, 所以最新价大于止损价时,满足止损条件。因此这个理念是与多单相反的,是用大于号来判断止损的。 那这个策略中呢?用到的止损是比较简单的一个止损思路呃,方便大家学习和理解,后面我们会有一节专门的课来给大家讲解止损都怎么编辑,大家到时候可以进一步的学习啊。最后呢,就是尾盘清仓的编辑, time 大 于等于一四五零,并且 time 小 于等于一五零零。 closeout 清仓。这个模型编辑的重点是止损和限制交易次数的编辑啊,这个重点的部分呢,我给大家标红了,大家后续可以好好理解一下, 剩下的呢,是我们最后的一个要点的学习,只用当日的数据或者是呃资金进行计算。 有些客户可能认为做日内交易的话,我资金是需要每个交易日独立的,这样才能更准确更直观的判断出当日的亏损,然后还有资金的变化情况。 所以软件提供了 daytr 的 这个日内交易函数,资金和信号的话是每天割裂开的,是不论我前一个日交易日资金如何变化,那新的交易日就是一个新的开始,我都以新的处置资金去重新开始计算。 那这个函数它适用于小时和分钟周期,其他更大的周期的话呢,是不适用的。那在此基础之上进一步的延伸,我不止需要资金独立,我还想每个交易所的数据它都是独立的,都格裂开,历史交易所的数据不能对我当前的指标有影响。 在这个思路的基础之上呢,然后我们还开发出了 daytr 一 这个函数,它也是属于任意交易的函数,它也是同样适用于小时和分钟周期,是不支持其他更大的周期的 啊。这里是这两个函数用法的一个简单的介绍,那详细的用法大家可以到软件呢编辑平台的函数说明当中去了解。 这两个截图呢,就是分别加载了 date 一 函数和 date 的 函数的这样的一个效果啊,这个截图的是回测的资金曲线的一个效果,我们来对比看一下,我设置的回测出使资金是五十万,那截图中我们定位的这个时间段呢?是一个交易日的开始, 大家可以看一下这个时间段这根 k 线资金大家可以看一下, 就是五十万,可以明确地看出它的资金曲线呢,它是有一个明显的变化幅度,也就是说前一个交易日的最终权益跟我新的交易日完全没有关系了。 那这个里面的 h h 和 l l, 它是用 h v 和 l v 取的,二十个周期的呃,最高价和最低价,它有一个特点, 这个 h v 和 l v 函数,它就是有效 k 线根数是一定要大于一的,因为它是呃不包括当前周期的嘛,也就是说第一根有效的 k 线上,它是没有返回值的,因为这两个函数它不包含当前 k 线,那在第一根有效 k 线以前没有 k 线,所以函数是返回空值的,但是这也可以看到 是有返回值的,所以说明它前面的交易日是参与了计算的。那我们看第二个截图,它的资金同样是五十万,但是它的 h、 h 和 l l 是 没有返回值的,并且指标线在这个新旧交替的时候,它出现了一个断裂, 说明当前的这根 k 线它是当前的第一根有效 k 线,与之前的数据完全割裂开了。也就是说这个函数和也就是第二个图和第一个图的一个区别所在。这两个函数的用法大家对比掌握一下。 然后我们看一个具体的例子,看一下这个函数在模型中具体如何编写。 最新价,上川二十周期最高价开多最新价,下川二十周期最低价开空五个点止损,收盘前十分钟清仓。然后啊,最后只用当日数据计算,这里要求只能用当日数据,需要用 daytr 一 这个函数。 嗯,这个函数编辑的位置是没有要求的。嗯,但是通常习惯上来说,会把它写在最上面的一行,避免是条件太多的情况下,最后给它忘记了,就是写在哪,语法检测都没有问题,执行也没有问题,但这个就是一个编辑习惯的一个问题。嗯,当然写在最后也是可以的,这个是没有影响的。 嗯,然后我们定义 h h 和 l l, 嗯, h h 是 用 h v 这个函数来定义的,是二十个周期的最低价, 然后 cross c, h h 表示最新价上穿二十个周期的最高价 close minute, 它大于十,是开仓时间的控制啊,满足这个开仓时间控制的时候开多仓。 cross l l c 表示最新价下穿二十个周期的最低价,然后同样是开仓时间控制的,编写开空仓, 然后五个点止损。这里除了刚才用到的 b k price 和 s k price 函数去开仓价,还出现了一个新的函数,这个 mean price 它表示的是合约的点位,就是最小变动价位 啊,五个点就是五乘以 mean price。 所以 多单的止损就是在开仓价 b k price 的 基础上下跌五个点, b k price 减去五乘以 mean price 就 可以了。那最新价小于止损价的时候, sp 多单止损, 空单止损呢?是在 s k price 基础上上涨五个点,用 s k price 加上五乘以 m price, 最新价大于止损价的时候,空单止损。最后 close minute 小 于等于十的时候,距离收盘间十分钟清仓,然后直接 close out, 然后我们一起来做一个练习,呃,巩固一下今天的学习,呃,首先先看一下思路,互同品种一分钟周期,呃。 macd 指标在零轴以上金叉做多,零轴以下死叉做空,亏损百分之一,止损出厂,一天不能超过三次交易。 夜盘收盘前和当日收盘前十分钟清仓。我们还是先来解读一下这个思路,嗯,互铜,它是一个有夜盘的合约, macd 指标零轴以上金叉做多,零轴以下死叉做空。 macd 是 系统自带的指标,我们可以直接复制来用。 金叉和死叉呢,是用 m a, c, d 的 快慢线来定义的,快线 d i f 上穿 d e a 就 表示金叉,那向下穿越呢?就表示死叉。亏损百分之一,止损一天不能超过三次交易,这个在前面的事例中已经讲解过了,那稍后我们写的时候来再具体来看一下。 然后就是日内交易必不可少的尾盘清仓,这里是要求夜盘收盘和白盘收盘前十分钟都要清仓。那我们一起到软件当中完整的编写一下 啊。首先呢,我们要定义 macd 这个指标,然后我们可以直接把系统 macd 指标这个原码复制过来, 然后参数我们自己改一下, 画住的这个没有用,我们可以直接把它删掉,然后中间变量用冒号等号定义, 然后我们看一下条件,把条件复制过来, 零轴之上金叉,我们定义一个变量 b, 变量 b k c 金叉用 cross 来写, d i f f cross d e a 这个就是金叉,然后它还要求是零轴以上金叉,所以零轴以上的话呢,我们可以写 d i f 大 于零或者 d e a 大 于零都是可以的, 那么这里写 d i f 大 于零,那 b k c 这个条件我就定义完了,然后我再定义空头的,给它写成 s k c 下穿用 cross down 定义, 要求的是零轴以下,所以我们写 d i f i d i f 小 于零。 然后呢,就是开仓时间控制的编写了,夜盘和白盘收盘前十分钟都是不允许开仓交易的。我们把开仓时间呢单独拿出来定义成一个变量,稍后我们就可以直接编写到开仓和清仓条件中了。那我把这个时间条件变量定义为 k t k t close 用 close minute 大于十或者 close minute every, 那 是叶盘嘛,所以第一个周期参数写成一大于十, 这个就是开仓时间控制的部分了啊,那 k t 等于一的时候是允许开仓的, k t 不 为一的时候清仓啊。最后一个开仓条件需要限制一天不能超过三次交易啊。定义 n n, 把 pos n 写在最上面, 交易次数的控制呢,也是多单和空单都要用到的,所以我们也把这个条件单独拿出来定义成一个变量,我们给这个变量取个名字叫 kr, 需要用到 ctrl c 这个函数。 首先限制 b k 在 n n 个周期内,也就是在当天的 k 线范围内 它的个数,然后再统计一下 s k 在 当天的个数,然后我需要让它小于三次的时候才能开仓, 这个就是交易次数的控制。然后截止到这儿呢,我们开仓的条件都已经定义完了,那开仓指令的 编写呢?是条件一, macd 零轴以上金叉啊,也就是 bkc。 条件二呢,也就是开仓时间的控制, kt 条件三,一天不超过三次交易,同时满足的话呢,用按的操作符来连接 bkc and k t and k r b k。 空单的开仓条件呢?同样的方法,把 s, k, c, k, t, k 并起来,然后开空, 然后是止损部分的边写亏损百分之一,那多单是最新价小于开仓价,又是 e k price 乘以一减去零点零一,我们把它写出来。最新价小于 e k price 乘以括号一减去零点零一, 满足这个条件的时候多单止损,所以是 sp 指定,然后开空。相反最新价大于 sk plus 乘以括号一加上零点一,这个是空单的止损,所以用一 p。 还有一个就是日内交易的尾盘清仓,然后我可以用这个我们前面已经定义的 k t 直接来写了, k t 等于一的时候可以清仓,那 k t 等于零的时候清仓, 用 closeout, 然后最后不要忘了过滤模型的关键字 outfilter。 啊,那这个再语法检测一下,来看一下有什么问题。 这个地方应该是点写两个逗号替换一下,再语法检测这个模型就没有问题了。啊,那这个呢,以上就是我本节课的全部内容了,希望对大家的交易有所帮助。

大家好,我是林春,上一期我给大家演示了一下文华财经六,也就是盈顺和编写一个 macd 金死叉的一个主图指标。今天给大家演示一下,用文华八,也就是它的一个量化交易软件, 是怎样把一个技术指标转变为量化交易策略。现在我们打开文华盈顺, 右上角有一个量化点,点开量化之后点边写模型,这里就可以直接写了,我们写的是双均线,今此差的交易策略, 首先仍然是定义两条均线, 我们可以定一下它的颜色,它的默认颜色是应该是黄色,第一个是白色,第二个是黄色, 我们给他定一个白色和还是黄色吧。 然后编辑一个请死叉的条件。 上一次主图指标呢,我们是用了两个图标还有声音,我们直接把它写成一个交易指令, bpk 就是 买开屏, spk 就是 卖开屏, 便写一个策略名称双。 这个策略编写好了之后呢,我们回测一下, 比方说我们就用五指的这个主力合约,首先设置信号的起始时间, 比方说我们从十月,从十一月吧,十月一号到今天,这条黄色的线呢,就是我们的资金曲线 模型回测报告, 首先可以在回测的时候,我们可以先下载一下数据,比方说补充力是数据在这里补充的我们,因为我们用的是五分钟周期,补充的是一分钟, 这样吧,我们用十五分钟 设置期是时间还是十一月一号开始, 我们看一下测试报告, 回测时间,十一月三号到十二月九号, 本金五十万,每次交易一手,这里默认是没有设置手续费和划点的,设置手续费和划点是需要单独设置, 回测期间最大盈利应该是八万多, 现在还是正的收益,这样就可以大概看一下这样一个交易策略的收益情况。 如果这个回测报告符合预期的话, 那么我们就可以用这个策略跑一段时间的模拟账户,去检验一下这个策略的执行情况。 好,今天我们的分享就先到这里,谢谢大家观看,我们下期再见。