呃,大家好啊,我是莫言,今天呢我们来讲一个最简单的这种适合新手入门的这种量化交易策略,叫做市军线策略。 因为我在呃这个做量化的过程中,呃跟很多朋友交流呢,他其实很多人他想学这个编程,对吧?但是又担心自己学不会啊?那这节课的话我们就来讲解一下这个很 很简单的这种策略,来让大家看一下做量化其实一点都不难。好吧,那首先 我们要来先看一下这部分,其实是我们量化的一个需要用到的参数,就是你用到的参数所有都写在这里,知道吧? 然后这部分呢,是我们需要用到的变量,也就是说你这些里边的代码,你说你需要用到的变量啊,它全部都写在这里, 明白吧?然后代码的主体呢,你就写在这个欧巴里边,这里有个欧巴,它叫做事件运,它是用来专门运行 里边的这些呃系统就交易逻辑的,就你把代码,你的交易逻辑写成代码啊,写在这里边它就每一秒它会运行两次里边的代码,明白吧? ok, 那 今天的话我们学习的是最简单的这个是均线策略,他非常的适合新手入门,因为新手他一开始他能接触到的策略,他就是均线策略。那我们看一下代码的主题是怎么计算, 首先你看我这里有八行代码,实际上的话都是八条军线,知道吧?但是你看我的参数啊,都是五二十、三十十。然后这下边的是一样的,也就是说多头的这些 军线跟空投的用到的这些军线,他其实是同一同同样的四条军线, 为什么我要分开写呢?分开写主要是为了能够让你想做多,你就只改多,你想做空,那你就只改空单的这些参数的变量啊,参数的值啊, 那就可以啊,就是你多空,你分开写的意思,你想把它写在一起,你把这个删掉,能不能用呢?也能用,只是空单那里的话,你要把这些变量的名字到时候要变一下,知道吧?那我们来看一下 这八条均线分别代表什么呢?首先这里啊,他是个参数,他是参数的话就有五个收盘价的移,这个移动平均啊,就是五日均线吧,说白了这五日均线,这是二十日均线,这里是三日均线,这里是十日 均线啊,总共就四条均线,然后这边也一样,如果你想把它改成五十日的话,那你就在这里改一下,它就变成五十日均线了,知道吗?所以这个参数的话,你可以自己调整,没有问题的啊, 这里有四四条均线,一共啊八个输出啊,八个输出的话,为什么 他本身的话是八点均线,对吧?为什么输出的值?你看一下他这里,他其实只有四条均线,对,他的原因就是因为这些参数啊,这上边的参数跟这下边的参数他是一样的, 所以他四条实实际上只有四条均线啊,但是你可以写成八条,没有问题,因为你可以单独的改,就比如我在这里改成五十啊,把这个改成五十 啊,你再输出来看一下,他又会多一条均线的,我告诉你啊。哎,在这里没改啊,这里没改啊,我在这里改一下,反正这个参数也没改啊,我把它改成五十,你就会看到他多输出一条均线的啊,你看 这里是不是有五条了?你看一二三四五,也就是说你如果你要改的话,改这个参数的值就可以改成十的话,因为它跟上面的那个十是一样的, 你看跟跟上边这两个值是一样的,所以它输出的均线的话,它会被覆盖掉,又剩四条了,看到了吗? 所以这实际上的话,他八条均线啊,他八个输出,但是因为参数的值是一样的,他只有四个参数的值,也就说他输出的形式的话只有四条均线啊, 那我们来看一下这个怎么样去写他的开仓。呃,为了方便 方便大家理解,我把这个改成零吧。啊?改成零,不写反手了,就改成零,因为写成这样子的话,它原先的模式啊,它是做反手的,那我们这这节课不讲反手啊。首先我们看一下这里的 function 等于零啊,一定要写, 因为它是表示它没有时差的意思。然后这个卡顿棒,这是缩影词,要大于一百根 k 线,一百根 k 线之后我才开仓 啊,卡顿棒嘛,缩影词, k 线的缩影,这是一百根 k 线之后我才会才会开多开空,不然我不开仓啊,它需要足够的数据去计算的意思,知道吗? 成交量的大于零,那我们来看一下他的开箱条件是什么。首先这里是这根均线,你看一下,是这根均线的值是五日均线,还要大于这个,还要大于二十日均线, 然后再看一下这个条件,这个条件是三啊,三日均线啊,他是三日均线, 然后又要大于,大于这个十入均线,并且最高价又大于前一根 k 线的最高价的话,那么我就买入啊,这里零的话是没有买啊,我们改成一就买入一手啊, 然后这里也改成一,它就迈出一手的意思,知道吗?这里做多的话,我们就有做多的开仓了,那我们再来看一下做空的开仓,把这部分复制上来了,好吧, 做空的开仓也是 make a profit 的 余底,对不对?没有持仓啊, 以一百根 k 线之后卡顿八 k 线的缩影,对不对?大于一百,我一百根 k 线之后才要开才会开仓,成交量要大于零,如果没有成交量的话,我为什么开仓,对吧?但是这个条件可有可说实话,里面一般都有成交量的,除非 你那个品种他不活跃,对吧?那他空投开仓跟多头开仓是相反的,你看到了吗? 看这里啊,他也是五日均线小于二十日均线,然后是三日均线小于十日均线,然后最低价小于前一个 k 线的最低价,那我就卖出开仓。 多公开仓,他就这么点代码,很简单的,看到吗?他有很多个条件,这里有很多个条件,这上面有很多个条件,对吧?但是多公开仓的话,他其实就这么一段代码,非常非常的简单,所以学习编程,他没这么难,明白吗? ok, 我 们再看多头平仓 auction 等于一这词有多单,对吧?不在进场这种 k 线上面成交量也有大于零,让我们看一下这条是什么均线呢? 这条的话,他是三日均线,如果小于这条均线,我们看一下这条是什么均线,这条是十日均线,对吧?如果三日均线小于十日均线啊,我们就把它全部卖掉,都头全部平仓,那否则呢?否则我们看这里, 否则如果是小于这个 小于这个啊,二十日均线,对吧?并且啊,这个三日均线他也小于这个十日均线,并且最低价 可以。看错地方了,这里啊,我刚才看错了,看到空投开仓这里去了啊,我们来看一下这里啊,否则我们来看一下啊,这里是五日均线 小于这个啊,我们看一下是二十日均线,对吧?二十日均线在另外一条线就是,呃,三日均线,对吧? 小于这个小于这个十日均线,并且最低价小于前一个最低价,你看它跟上面这个空投开仓那条线是不是一样的啊?是不是一样的, 对吧?也就说他这里的话,其实他满足做空之后啊,满足做空之后他把多单平掉了,在这里准备开空了,明白吧?所以刚才的话我有点看错,这两个是一样的,你看这两个 是不是一样的?所以刚才我拉下来的时候,我直接看到这上边来看反了啊,这里的话他是表示他空投要开仓的,但是你还有持有多单的情况下,你照样满足这个条件,那你要不要把多单先停掉再去开空呢,对吧? ok, 那 我们看一下空投的平仓,其实它也一样的,那就是这条 magician 等于负一的时候持有空当的情况下嘛,对吧?你看一下这条均线,对不对?这条均线的话,它是三日均线,对吧?它大于十日均线之后,那它出现了一个均线的一个金叉啊, 清仓了之后他大于了,那我要不要把空档给停掉啊,对吧?那我们再看一下这里的话,他其实你可以看到他就是多头的,这个开仓条件呢,他跟这里是一样的,看到没有, 也就代表说如果你多头满足条件了,那我要不要把空档停掉,对吧?用百度看我把空档给停掉,然后在这里满足了多少条件,然后我开多啊, 明白吗?所以说这个的话,他是比较适合新手去学习的, 因为他整体来说难度不大,说白了就是几条军线吧,对吧?要有开多开空啊,有平多平空啊,他就这么简单, 所以量化,写一个完整的量化策略,他难不难呢?不难,结构可以说是非常的简单的,但是 你要学会基础。这些是什么东西? numeric 又是什么东西? service numeric 呢?它又是什么东西,对吧? o b 又怎么用呢? 用 prot numeric 又要怎么用呢?这些函数要使用,你只要熟悉了它,写起来并不难啊。 occupation 等于零什么意思啊? 进持仓状态嘛,使用等于零的话就没持仓喽,就这么简单喽。卡顿霸是锁饮食啊,你知道这些就就可以了啊, buy 啊, six short 啊,这些东西是买入跟卖出啊,对吧?这有个 c 是 卖买入开仓,卖出开仓, 卖出品,卖卖出,平仓,买入平仓,你看就这样子,其实你说他难吗?不难,写个让步策略难不难啊?绝对不难, 所以你有兴趣学你就去学嘛,这些东西他难到哪里去呢?你不懂,你问啊,对不对? 这东西他难到哪里去呢?量化绝对是趋势来的,所以你要想学你就学一下量化嘛,把量化的时间学一下嘛。 ok, 今天就先讲到这里啊,拜拜。
粉丝2403获赞3138

呃,大家好啊,呃,我是莫言,相信呢,大家都尝试过用这个 ai 去写量化交易策略,但是大家可能会发现这个 ai 写出来的量化交易策略它是没有办法去实际运行的,它会提示你非常多的错误。 呃,之前也有很多人问过我相关的问题,怎么样才能用 ai 写出一个呃实际上能用的这种 呃量化交易策略,呃,我们就是用这个豆包呢来写一个这个开拓者的,在这个开拓者这个平台用的呃量化交易策略,我们来尝试一下去修改它上面的这些错误啊。 首先呢我们让这个 ai 给我们写一个策略, p b 开度整啊, p b 开度整 取四十零。 另外就是策略来我们看一下,看一下我们这个豆包给我们的策略啊是什么样?首先这里的话他已经给出你的国旗了。来我们看一下, 首先这一部分的话他是对的啊,这一部分没有什么问题,因为参数的话其实很容易就能解决,但是你看到这一部分的话,他就呃有有一定的问题,因为这个的话你看到,呃 呃。这个是旗舰版的啊,你看这个格式的话,他其实是旗舰版, 你看这里用 begin 和 end 啊,这种的话它是旗舰版的一个呃 代码,而且它这里有错误啊,这里有错误,那我们遇到这种问题,它给的版本格式它都是不对的,因为这是老版的,这是旗舰版的代码啊,你看这个变量的格式就知道了, 如果是 t p 框的上面的用到的,就就这个 t p 框的上面用到的这种啊,它其实是 series numeric 的, 但这里是 numeric series, 对 吧?它是反过来的,那遇到这种情况我们应该怎么做呢? 首先我们在开拓者这里啊,这个 t p 框这里,我们随便找一个它内置的代码啊,我们复制一下, 然后跟豆包说,你这个格式不对啊,你这个格式不对,按照 按照这段代码的格式编写啊,你直接传给他 这样子的话,它就会调整它的格式,然后来写代码,我们看一下它写出来的格式,你看它上面,这里是 series numeric, 对 吧?它之前是 numeric stereo, 对 吧?你看它之前是这个样子的,对吧? numeric stereo 就是 旗舰版的,那肯定不对,是不是?那我们下来看一下,我们把这段代码发给他之后, 它就改对了啊? status new america 这里就对了,这里就没有什么问题啊,主要来看的话,这边,其实这边变量的名字的话,这个变量的格式啊,它已经正确了。然后我们再来看一下它接下来的这些代码, 接下来的这些代码的话也是怎么这么浅?呃,看一下啊, close over, 你 看它之前的话,这个 close over 写在哪里啊?你看一下它 close over 的 话, 那之前这段代码啊,你看它写在这个,直接写在这个开仓的条件语句里面,这个是不行的啊,因为你要把这个 close over, 它是有 出现这个训练变量的,训练变量的话,它是不能直接写在这个条件语句里边的,它需要写出条件语句外边来,所以你可以看到它在这段代码的时候啊,它就改对了格式,你看 plus o, 它就写在了外边,然后 不给一个变量复制给一个变量之后再引用这种形式才是对的啊。那我们再看一下他其他地方啊,这个没有问题啊,这个没有问题,但是这里你看,哦,这个他有个问题,你看在这里 又遇到一个问题,它上边用的这这个东西啊, come close over 对 吧?它是一个金叉,对不对?金叉的话它有个问题,你看它这里没有回数啊,没有回数的话它会出现一个信号闪烁的问题 啊。你要看的懂代码,你要知道代码,所以你要有基础的这个代码的编写的经验,你才能用 ai 给你调整代码, 如果你任何经验都没有,你甚至都看不懂代码是什么意思的话,那 ai 也帮不了你。所以我是建议大家先去学习这个基础的编程的理论,然后再用这个,呃,这个豆包给你写策略,我们可以看到这里啊, 这里有个参数,我是上边的这个金叉的判断,但是他没回数啊,没回数的话他是会有信号闪烁的问题的,要我们提示给豆包啊, 这里啊,这个 come close over 没有回数啊, 这样会出现信号闪烁的问题啊,那我告诉他, 然后他的话, ai 你 要告诉他问题在哪里,他才能给你改正确。也就是说豆包的话,它是可以给你写策略的,但前提你也得有这个基础啊, 你也得学会看这个代码的问题在哪里,你看我们提给他之后是 come close over, 这里 它是没有回数的,对吧?你看它用到的是当前 k 线没有收盘的这个 close, 也就最新价,它在实时变动,这样子会信号闪烁,明白吧?然后你看它这里,它会给你修改正确。哎,这代码在哪写?我们看一下啊, 不过这里的话,它修改了这个格式又不对,你看这里是最新的,并且不在当前这个 k 线,它才有表示 k 线你收盘。这种格式肯定不对的,因为它要把这个 close o 写进这里边来,它又给你改错了。 所以 ai 这东西的话,说实话,你要是看不懂他写的到底是什么意思,你没有办法给他修改,然后你要告诉他怎么修改这个信号闪烁,你看他修改的这里的话,他又是错的啊, 你看他这里根本就没有给你改改正确,没有改正确怎么办呢?再给他啊,改一次 come close over 啊, 没有回数,你再让我们再回来看一下这这这上面这段代码啊,这里的话在这段代码中啊,你告诉他你在这段代码中啊, 嗯呃,这个 come close over 应该改成什么样呢? come close over 啊,应该改成回数一根 k 线,那回数一根 k 线 改成这样才对。你要告诉他,首先你得看得懂代码呀,不然的话你怎么给他改对不对?你要知道怎么避免信号闪烁,怎么避免未来函数,然后你才能让他给你写。对啊,你看他这里改的话, 应该会给你改对的,我们来看一下就是他写的代码的话,说实话,他目前的 ai 啊,他写的代码还是有很多很多地方 他是错误的,所以你得知道怎么修改。首先呢,如果他的格式不对,对吧,你直接在这里复制一段发给他他的格式就对了。然后的话,你要知道他会有信号闪烁的问题,怎么样去修改,在这里又没给你改对, 这里的话他又没给你改对,因为他改着改着,他越改越错的情况也是有的。那越改越错怎么办呢?对吧?我们回来复制,直接复制这个代码, 因为这段代码的前提哦不是这段的,这段也是错的,我们看一下这段,这段代码如果他越复制越错的话怎么办呢?把这段代码复制进来发给他, 然后告诉他他哪里错了?你告诉他这段代码中的这一段啊,因为这一段的话, 这段代码有信号闪烁 的问题啊,具体哪里有信号闪烁呢?就是这一个,你要看的懂代码,前提一定要看的懂代码。这个没有回数,没有回数啊, 得改成你,你要告诉他你得改成什么样,不然你什么都不懂,说实话你是不行的,一定要入门啊, 得改成这样啊,才不会信号。 想说那你直接告诉他,因为你得发现问题,你告诉他问题在哪里,他才不会,他才能给你改对,你知道吗?你看他这次改出来的话,你看这段 应该就是对的,你看他重新改出来 这里的话, m a m a 已经是回回数了一根,你看这里是什么?五根后置平移。 那你看在这里,你看它这里是不是回数了,你看这里在之前都看 close of, 我 用到了 close, 他会出现一个金叉死叉的信号闪烁,你看那他这里是不是给你改改善了,对吧?你看他是不是给你回数了,回数一根天线的话,他就不会出现信号闪烁的问题,但是他还有其他的问题啊,你看这里条件成立的时候啊, 这个条件成立的时候他又没有回数,看到吗?他后边也没有回数,没有回数的话他就造成一个问题,你的价格到时候写的会是对的吗? 对不对?你看这里他说靠着跟一米,他又没有回数一根,那没有回数前一根对不对?然后这里的话这里应该要回数的,因为没有回数的话,他作为开箱条件,他会向下边 这个价格的具体的形成。还有这个我们看一下这个他上面有没有回数,这里的话应该要全部回数的, 或者说他这里不回数,这里可以不回数,也没有问题,因为他是下边要用到的 啊,下边要用到的,这里的话可以不回数,但是他这边的话就一定要回数啊,我们再告诉他啊,再告诉他啊,这段代码的如果这里不回数用来作为开箱条件的话, 这个可以写成啊,这样啊,但是它作为开场条件哦,因为它下边这一段它才是开场条件,有 by 这字,对吧? 然后我们把这里但是这段代码中的这段代码,这段代码中你看要尾数啊,你看这个是不是需要尾数啊?这个是不是需要尾数? 这个应该改成,改成啊?尾数要尾数一根 k 线,对吧?还有并且这个这个 这个也要改成,因为要尾数,不然价格不对啊,改成啊, 猜对吧?不然的价格呢? 他的开仓价格不对啊,对吧?因为你你可以看一下他之前的代码,他给你的代码的话,你要看得懂是什么意思?这里是开仓对不对?开仓的话这里有回数吗?没有。这里有回数吗?没有。 那它如果直接用这个大于等于这个的话,这个时候它有可能会出现信号闪烁的,这这个价格不对的问题。首先这这里没有回数对不对?没有回数的话,它就现在最新的这根 k 线, 那当这个条件成立的时候,这个条件不一定会成立啊,对吧?那你直接用个 intopoint 作为价格,它可能是不对的, 明白吧?所以你要看的懂他的代码,他给出来的代码说实话已经是非常的好的,但是他其中是有瑕疵的,你要看的懂他的代码,看的懂他的代码的问题出现在哪里, 这个他豆包他才能给你告诉他,他才能给你改的正确。你看而在这里的话,这边他还是回数的,不过问题不大,但是他这里你看 这里的话,他完全就回数了。他刚才这个是没有写后面的一的,对吧?写后面的一啊,这里后面的一都加上了,然后这个也加上了啊,他不不再是最新的了,你看这里的价格就是对的,这样子就可以把价格改对,你知道吗?但是你看他下边的这些有没有改对呢? 哦,他只有开多,那平常就大于小于这个这边的话应该就没有什么太大的问题,因为他这边的话是完全都回数了,看到吗? 这边他完全都做到回数了,问题就不大。所以你要让豆包总结来说,你要用豆包给你 写这种策略,他其实很大程度上他写出来还是有一定的瑕疵的,也许运行的时候他有可能会有信号闪烁的问题啊,有可能格式不对的问题啊,这些怎么解决啊?这节课都教给大家,好吧? ok, 那 我们今天就讲到这里,拜拜。

呃,大家好啊,呃,我是莫言,今天呢,我们就用这个价格跟这个 adx 还有 atr 来写一个反手策略啊。今天呢,呃,大家平时应该也能看到市面上有一些策略它是写成这样子的,上下的有活动的盘度啊, 这些两条线它在不停的活动,其实这两条线的话,它是根据这个 a t r 来写出来的。 呃,我们具体的话,回头看一下我们的代码好不好?首先呢,我们这里啊,是我们需要用到的参数,我们这边呢,是需要用到的这些变量。 而这部分呢,呃,之前已经讲过很多遍了,这部分是用来设置那个除权换月的啊, 而这部分代码,首先我们看一下这一大段代码啊,这一大段代码的话,我就不再详细地去说明, 因为这段这一大段代码,我们之前的课程的话,其实已经讲过了,它是用来计算 adx 这个指标的,而 adx 这个指标呢,它是非常常用的这个趋势型的指标来的, 而且我之前的课程的话多是讲解过这个指标,这里我就不再赘述它好不好。我们具体来看一下我们的代码的逻辑是怎么样的。首先我这里写了一个 atr, 对 吧? atr 的 话其实是我们最常用的这个真实波动范围嘛,对吧?这个指标非常非常的常用,对吧?而这里我们看我们用的一个以前很少给大家讲过的函数是 close d, 它求的是 n 天前的这个收盘价,这里写的一呢,它就是昨天的收盘价嘛,就昨天三点钟的这个收盘价。然后我这里用了 comanche 这个函数,把这个呃前天的收盘价输出到图标上面去, 到时候的话你可以检查一下这个值到底对不对?让我们来看一下,这里有 up 跟 down 这两个变量,这两个变量是什么呢?首先 我用前一天的收盘价加上 n 一 倍的 at 啊,就 n 一 是一点五啊,也就是说我用前天的收盘价加上了一点五倍的 at 啊。 然后我这里有个下轨,就是这里的话这两根线嘛,其实这个计算的就是这上下这两根曲线来的。我们看一下 这里下轨的这根线的话是用我,我是用前天的这个手板架减去一点五倍的 at 啊,但这个 n 一 的话,你可以自己改,对吧? 然后我这里用的 propecun 把这个上下轨输出这一这四行代码啊,其实就是用来输出这两条线的,知道吗? 然后我们来看一下,我在这里写了一个很简单的反手的这种,呃,开平仓的方式。首先 market price 不 等于一是做反手的就没有,是有多单的情况下嘛。那如果我的最高价大于等于我这个上轨,对吧? 这里不用回数啊,因为这前边的话它全部都回数了,所以这里 up 就 不需要回数了。 然后我计算出了 a d x 这个值,这 a d x 这个值的话可能还需要回数一下啊。 a d x 这个值的话,我们这里用前一个吧回数一下啊,因为这里不回数的话,它用到最新的这一个, 我看一下它会不会信号闪烁先啊? 用 close, 那 其实也很难说会不会存在信号闪烁,因为这里的话没有用到那个收盘价,但是它有用到最新的这个最高最低价,嗯, 他有可能会存在这个信号闪烁的问题,这一点的话你们可以回去研究一下这里加跟不加这个有没有问题,因为一般来说的话,他要信号闪烁,他要用到这个, 嗯,可能要回数,这里应该是要回数的,因为不回数的话,这个价格可能是不对的。 我们看一下啊,我们这里的话 market 不 等于一对吧,要最高价大于这个上轨,并且签一个 a d x 的 值要大于二十五啊,这里需要回数啊,这里是我的输入,应该要回数的,因为不回数的话这个价格可能不对, 开仓的时候价格可能是不对的,这样写的话的价格可能出现偷价的问题,所以我们用 a d x 大 于前一个 a d x 大 于二十五,这里的话我们就会选不等于负一, 并且最低价小于等于这个下轨, a d x 照样要大于二十五,因为 a d x 的 话,它是很典型的这个趋势确认的指标来的,这个越大的话代表它的趋势越强 啊,这时候如果满足这个条件的话,那我们就呃拼多做空 代码的话,其实基本上的话,他看起来这个逻辑其实并不难, 那我们回头看一下的话,我们在这里,因为最近的话,他白银这个波动不是很大,对吧?我们回头来看一下白银, 你可以看到白银的话,他有时候这种大的趋势特别的适合吃这种大的趋势,看到这里做的这个空单,这一路下来 在这里,哎,在这里他才开的多,对吧?他一路下来在这里才开才开的多,所以他很适合这种大的行情, 特别是白银,你看白银最近的这种大的行情的话,他其实比较适适合这种大行情的策略, 而且你可以看一下他的他的这个策略报告,其实他平时的话,这种策略趋势性的策略平时的意义不大,但是像他这种大行情的策略的话,他的收益就会很夸张。 所以像这种典型的趋势策略的话,他就存在胜率低,但是赢亏比会比较高的这种 这种这种情况啊。所以不同的策略的话,他适合的品种他其实是不一样的,像这种简单的反手策略,呃,他能适应的行情其实比较有限, 我个人的话是建议直接把它写成零啊,直接把它写成零, 然后你在后边的话,你给他加上固定指引指引也好,加上跟踪指引指引也好,还是把它作为一个正当的股会加仓的一个趋势, 就是你不会加仓的话,如果他的趋势向上已经比较明显了,你才加仓一次,如果他不明显的话,你就不加仓,这种情况也是可以的。所以你这里我设置了一个开仓条件,大家回去的话可以 啊,好好想一下,如果有别的平昌方式会不会更好。因为我这里的话只写了一个反手啊,这个完全是可以改改动大家的话,到时候可以回去测试一下自己。 我提供一个开唱的逻辑,大家可以完善完善一下这个怎么评比较好,然后如果不懂的话,你可以看一下这上下两根线是怎么写出来的,省的以后还要花钱去买,对吧?用不着。 ok, 那 今天的课程就讲到这里。

呃,大家好啊啊,我是慕言,今天呢我们来学习一个布林加这个 t e m a 指标啊,怎么样去写一个量化交易策略?首先呢,这边的话是它需要用到的参数啊 啊,这边是需要用到的变量那,呃,那个在护护权的那个代码,因为之前的那些策略我写了很多了,我在这里就不加上去,如果有需要的话,你们自己加一下啊, 首先我们用这个乱序,乱序这个代码呢,它是用来做那个跨周期用的啊,我写了一下,你们可以回去改,因为后续的话你甚至可以用这个改一下,用那个 data 来改一下,在开仓那里你只需要改一下,你就可以做跨周期的啊,就是我这个乱序,这里我也给你写好了, 那我们来看一下,首先这里肯定是要先写一个布林通道,对吧?布林通道的代码我也讲过很多次了,这边是钟轨,这边是标准差,那他的上下轨的话就是钟轨加上或者减去两倍的标准差吗?就在这里,对吧? 那我们重点来讲一下今天这个三重指数啊,均线怎么样算出来的呢?首先我们看一下这个参数啊,这个参数的话是十四 十四,这个收盘价的指数平均,十四个收盘价指数平均,复制给这个吧,复制之后再把这个再算十四个指数平均啊,把它复制给这一个,也就是说这条是一条均线对不对? 而这一条呢是用上边的这条均线再计算一下它的平均值。那我们 t m a 的 值是什么呢?我们用三乘以第一个,再减去三乘以第二个的值, 再加上这个十四个啊,下边这个的值的指数平均,下边这个的值的指数平均,你看这个减去这个,再加上这个就是 t m a 的 值, 那我们这节课的话,平常平常的话还需要用到这个 a t r 的 值, a t r 的 话,我们到时候做 a t r 多少倍 a t r 仅此使用嘛。然后用这个 protonic 的 话,就把 呃不灵通道的上松下轨,上松下轨先输出,然后也把这个 t 也没一起输出。让我们看一下怎么写它的开屏仓。首先这里是第一次建仓的价格,把它复制给这个变量 来,我们看一下开多怎么写。首先 marketing 它得等于零,对吧?那最高价我们大于这个负零的上轨,并且前一个收盘价要大于这个 t e m a 的 值,那我们就买一手多单进去, 那开空的话也一样,开空的话 marketing 等于零,对吧?那如果价格下穿下轨,并且处在这个 t e m a 之下的话, 那我们看一下怎么写。首先最低价要小于等于下轨,对吧?然后前一个收盘价的值要小于这个 t e m a, 对 吧?那我们就卖出。那我们再来看一下怎么样写它的,用这个 a d r 来写这个止盈止损。 首先你想写止盈止损,肯定要确认你持有的是多单还是空单,对吧? market risk 的 原因,多单对吧?并且不在建强这种 k 线上面。我们看一下它的止损怎么写的?止损的话,因为是多单嘛,它往下跌,它显示止损的。那我们止损的价格呢?其实就是用建仓的价格 啊,减去两倍的 atr, atr 一定要回数啊,不然会信号闪烁,知道吧?那我们只赢的这个 long profit 呢? 他其实就是建厂的,第一次建厂的价格加上四倍的 et 啊,对吧?那我们看一下 ats 指数,其实就是最低价哦,这里要这里有一个错误啊这里有个错误啊,我们要改一下。 改一下?怎么改的?因为这里的话他还要避免避免他有一个跳空低开的问题啊,有个跳空低开的问题我没有解决啊,忘了写。那我们就把这个也加上喽 啊,就这里他也把他给加上,对吧?那这里他也一样啊这里他也一样啊。这里因为我写错了,把这个也加上, 这样子的话,它就是对的啊,这样子它就是对的啊。这一只一只损,你一定要写对这个价格啊,你要 避免它出现那个跳空高开导致价格对不上的问题啊。跳空高开的话用开盘价嘛,对吧?啊,一定要注意这一点,我是写错了啊,这里也写错了啊,我们进来看一下,到时候一起改。首先 make sure 等于负一,对不对?不在健康这根天线上面。 那我们的 atr 的 止盈,止损止盈。你看止损是这个嘛?止损的话空投止损,它是上涨的,对吧?那我建仓的价格加上两倍的 atr, 我 们就止损。 那我空投止盈的话,它是下跌的嘛?那建仓的比例价格减去四倍的 atr, 那 我们就止盈,对吧?然后我们看一下如果最高价大于等于我们这个啊,止盈的话,我们怎么写呢? 哦,这这里是止盈啊,这上边的是止盈。我看一下啊,这里四倍的话两倍。哦,这这个是止损。止损啊,那最高价的话大于等于这个 止损的话,两倍止损嘛,他往上涨止损。那我这个价格这样写的话就写错了,因为往上涨的话,我要避免跳空高开的问题嘛,对吧?那我要把它改改成这样,这个样子啊,今天的话我写错这段代码啊。 那我们只赢的话,最低价它是往下跌做工,往下跌它写是只赢的,那只赢的话,那我们就可以把它改成这样子,避免它跳空劈开了,我们把这个也也复制进来。 可以,那我们把这个复制进来,这样子就对了。这样子写就对了啊。 这个策略的话,其实他整体的难度并不大啊,适合小白去学习入门啊。整体的话难度其实很小。 ok, 那 我们今天的话,我们的策略讲解就先讲到这里啊,拜拜。

呃,大家好啊,我是牧野,今天呢我们用双均线加这个 macd, 加这个 s i, 来写一个纯简十五分钟用的这个趋势策略。 首先呢之前有很多人跟我说,为什么我们不看一下他的这个策略,这个策略报告,我们今天来看一下他在纯简十五分钟用的啊,纯简十五分钟 用八八八合约啊,用这个存钱八八八合约我们看一下,那其实这个趋势策略的表现还是蛮不错的,有我们用两万资金吧, 用两万来试一下,其实它的表现还蛮好的,胜率百分之四十二啊,盈亏比四二还是可以的。看一下它的这个图标的信号, 因为趋势策略的话,他一定会有回撤,因为他这段行情的话,趋势策略绝对回撤的啊,但是他最终的话往往来说他趋势行情一来,他会慢慢的创新高啊。 然后我们看一下他整体的交易记录啊,你可以看到都是小规大矩啊,都是小规大矩,趋势策略他就是这个样子的啊, 我们回头来看一下我们这个策略是怎么写出来的。好吧,大家认真的学一下这个策略,因为你要写这种典型的趋势策略的话,你就会来看一下我写的这个啊。首先这边的话 是我们需要用到的参数,包括三个指标用到的参数,包括它的尺寸点,需要用到的参数都在这里。 然后这部分的话是我们需要用到的变量啊,这部分是我们要用到的变量,包括这部分用的平常用啊, 而我们再看一下这部分代码, oe 这个世界域里边的代码的话,它是用来做这个储权换月的,知道吧?如果你要用八八八合约预设这个,呃,主力合约的话,你就用这这一段代码, 让我们再来看一下,首先这两段代码的话,它是用来做这个固定值选用的,第一个是求它的最小变动值,第二个是求它的这个建成的平均价格。 让我们再来看一下这这几段代码的话,它是做双均线的,双均线很简单的,对吧?多少个收盘价的移动平均,我看一下这群应该在十二码, 对吧?那十一跟那时候的话是二十跟六十嘛?所以这两根线的话就是二十均线跟六十均线啊,用 pro 肯定卖了,可把它输出来, 那 m a c d 的 话,我之前已经说过很多遍了, m a c d 它其实也相对来说比较简单,它其实就是快线减去慢线要求求出这个地府嘛,对吧?地府之后呢,我们用九个地府的指数一共平均 啊,求出 d a 来,那 m a c d 的 话,它就是两倍的地幔减去于 d a 嘛,这就是求 m a c d 的 值嘛。那下面这接 proton america 呢,它就是把地幔 d a 输出来,包括这两部分呢,它就输出那个红色的 k 线,就 macd, 它不是有红绿 k 线吗?这两关是输出它的红绿 k 线的,这个是输出它的零轴的,知道吧?那我们再来重点看一下我们这 s i s i 的 话,它的写法 相对来说比较复杂,首先的话,这个 sf 它是十四分之一啊,这个券值呢,它是用收盘价或者说最新价减去前一个收盘价, 那我们的康巴如果是小于十四的情况下的话,我们做一个呃计算,就小于十四的时候做个计算,这个奈特它等于收盘价减去 前十四个收盘价除以十四啊。其实就算出了中间的这个平均值来, 那就透支他也一样的,他是用收盘记最新价减去前一个收盘价的绝对值,他是个正数啊,然后做他十四个绝对值的这个移动平均复制给他, 这是小于十四根 k 线的,对吧?那这大于十四根 k 线的情况下呢?我看一下这个是不是十四啊?我记得应该是十四啊,啊,是十四 s i 的 周期量十四。 那我们再来看一下,如果是大于十四根 k 线的情况下呢?这个 let 它是前一根 let 的 值啊,然后加上十四分之一,乘以前面求出来这个圈值的值,减去前根 let 的 值, 重新复制给它。这个 top 也一样的,它是用前一个 top 的 值加上十四分之一,然后求出这个券值的绝对值啊,然后再减去前一个 top 的 值, 我们把这个。 net 跟 toto 把它求出来。如果这个 toto 的 值不等于零呢?我们是 c s g 的 值,我们就用这个。 net 的 值除以这个 toto 的 值就可以了。然后,否则如果这个 toto 等于零,那我们这个 toto 的 值,它也等于零。 r s i 最终的计算呢?它就是用五十乘以这个 c s g 加一嘛,然后用 protony 把这个超买超卖的 s i 的 值都输出。我这里把它注视掉是因为,呃,这边有双均线啊,它主图跟副图的分开,所以我把它注视掉了。 那我们计算的话,首先这里我们计算一个经超的条件, m a c d 的 经超条件嘛,就是 b 股 上传第一 a 跟第五下传第一 a 嘛,这个 m c d 的 一个金叉时差嘛。然后我们再来看一下我们的开箱条件, 开箱条件的话其实并不难啊,首先它不选不等于我这里要做一个防守啊,因为我的这个开箱条件里面,你可以看到它是有多空防守的情况下的,你看 凭空开多,凭多开空这种反手的情况是有的,所以 mcdson 不 等于一个不等于负一,这一点我们用来做反手, 要算均线 m a 一 要大于 m a 二, m 二就是地府上选第一 a 嘛,然后 r s i 的 值它要小于这个七十,这个是七十啊,超买它要小于超买, 因为如果大于超买的话,他都可能到尽头了,我就买不了,知道吧?我买了也没意义这时候。 然后我们看做空,做空的话,首先得有防守,然后双均线的话是 m a 一 要小于 m a 二,对吧?然后我们这里出现的这个 m a c d 的 一个时差 s i 的 值,它又大于三十,要大于超卖,因为如果是小于超卖的话,你没必要再开空啊,对吧?要大于超卖, 那我们这边再加一个固定止损。首先呢,我们这部分的代码如果不加下边的话,他会是一个完全的反守策略,你可以看到啊,他是一个完全的反守策略,这种情况下的话, 他吃这个趋势是没有问题的,如果只做这部分,他做趋势行情是没有问题的,但是如果出现了很多震荡的行情呢?出现了反复的震荡止损呢,对吧?你没来得及反手怎么办呢?有没有这种可能呢?完全是有可能的啊, 所以我们这里多空加一个固定止损给他,你看这是多头的固定止损的话,就首先持有多单不在建强这个 k 线上面吗?对吧?然后我们最低价如果小于这个建强价格减去一百票,那我们就把它平掉, 建成价格最多亏一百票给你啊,那空投之损也一样啊,那就必须等于不一嘛,对吧?那如果我们的最高价大于建成价格,加上一百票,也就说我的空投已经是损失了一百票的情况下的话,那我照样也有止损, 就是加一个固定的止这个止损给他,我的趋势可以正常的跑,没有问题,因为我做趋势策略的话,我就是得吃趋势,对吧?但是正大行情我不能亏太多, 明白吧?要避免震荡行情的时候,他没来得及反手,导致亏损过大的这种情况,那我们就给他加一个这个固定止损上去,知道吧?这个策略呢,他是在存减十五分钟周期上面能用啊, 表现还是不错的,大家可以用来参考,可以用来改进啊,但是我就不建议大家随便去玩这些东西,因为这个肯定有风险。 ok, 那 今天我们就讲到这里啊,拜拜。

呃,大家好啊,呃,我是莫言,今天呢我们来学习一下怎么样用这个弹吉他加 macd, 再加这个 atr 来写一个这个趋势交易策略。首先呢这里是它用到的参数, 然后的话这里是用到的变量,今天的策略的话难度不大,所以它的参数跟变量其实都不多。 然后这边的话用到的是这个,用来设置这个后付权用的,如果你用的是八八八合约,预设主力合约的话,那你有必要把这段代码给加上去,如果听不懂的话,那回去看一下我之前的视频,有多是讲解到这个的作用啊。 然后我们来看一下代码的主题。首先这里有个乱子,这个乱子这个函数我之前很少有讲过,因为这个东西其实它是用来做跨周期的,但是我们的代码的话,一般我都用在单周期,所以跨周期这个的话使用比较少, 而且它设置上来的话也相对来说比这个单周期要更加麻烦,所以我一般的话没有讲过这个乱子。今天的话,大家来看一下这个乱子 段子,这个函数这种写法他是用来做跨周期的啊,而这里有个函数,他是用来获取你这个图标这个数据源的个数。用的 这里的话,他也明显的告诉你啊,他是用来获取这个数据源的个数啊,就是你有多少个图标这么个意思啊?大家,呃,听一下就可以了,如果你想学习怎么样去 写这个跨周期的策略的话,呃,到时候,呃,你可以问一下我好不好? 然后我们来看一下我们的指标,用到的指标是这个,呃,弹琴安通道跟这个 m a、 c、 d 还有 a t、 r, 那 我们这部分代码的话,其实就是我们的指标的计算,我们来看一下,首先弹琴安通道的话,它其实 他就是类似于跟那个布林差不多,他就是有上下轨嘛,对吧?那谭吉安通道,我们看一下谭吉安的参数是什么?二十嘛,一般来说谭吉安的参数都是二十,那其实 三线轨就是二十个最高价的最高值,跟过去二十个最低价的最低值他把连起来嘛,如果你要把它输出的话,用 pro 肯定卖了,把它输出就可以啊,这边的话我就不输出了,如果你要写的话,你自己写一下,好吧。 然后这部分的话,它是 m、 a、 c、 d 的 一个呃,代码,其实 m a、 c、 d 的 话,它相对来说也是比较简单的,说白了就是快线减去慢线嘛,对吧?这个 d 不是 快线减慢线嘛, 那 d a 的 话,它其实就是九个 d 的 指数一度比均嘛,对吧?就是这个 m a, 这个 d a 嘛,对吧? 那说白了这 m a、 c、 d 的 值的话,它就是第五减去 d a 再乘以二两倍,对吧?它这个 m a、 c、 d 的 值。 然后它下边其实还有一段是输出的,就是输出把它那个用 pro 肯定麦克也好,还是 pro 的 凹凸也好,凹凸也好啊,把这个 macd 的 柱状图,还有第五个 d a、 e 还有它的零轴都输出的话,这个开拓者它都有自带的啊,到时候你如果不懂,你就去看一下,因为这个图表它有主图跟副图啊, macd 它是在副图中展示的, 而地图的话又是在主图中展示的,所以写起来的话,如果要处理这个问题的话,它相对来说就比较麻烦,我是建议你先把这个指标,嗯,这个弹琴啊,先输出到主图去,然后再另外加一个 m a c d 的 这个指标进去,它就可以看得到啊,不需要额外写啊,就先写成这样子吧。 那我们看一下这里的话,它就是 a t r, 这里有个函数是求这个真实波动范围的这个 a t r 的 值嘛? 那我们来看一下我们今天的话是怎么样去做它的这个开仓。首先那肯定要没有持仓嘛, occupation 等于零嘛?没有持仓对不对? 我们的最高价如果大于等于我们弹琴通道的上轨,就突破上轨加 m a c d 多头的话,其实就是 m a c d 的 值又大于零,就是出现的它不是有红绿柱吗?它出现的红柱的情况下, m a c d 又大于零啊, 那这样子的话,我们就买一手这个呃,这个多单,然后这也是它的价格啊, 写价格的话要注意写成这种形式,要避免他的一个呃跳空偷价的问题啊,一定要写成这样,如果你看到谁的代码不是写成这样子的话,除非他全部回数了,不然的话他都得写成这个样子啊,不然会偷价。 那我们看一下我们这里这个变量的话,我们是用开盘价就建仓时候的开盘价减去三倍的 atr 啊,这里的话我们作为一个开盘,到时候开盘价就我们就开仓价啊,不是开盘价开仓价啊, 我们开仓价减去三倍的 atr 的 话,其实作为我们一个呃比较保险的一个止损, 因为我最多啊就亏三倍的 atr, 看这个健康价格减去三倍 atr, 健康的开返价嘛,对吧?我减去三倍 atr, 最多最多我就跌货,这里我就平了啊,这是止损最低最低的止损要求啊, 那我们做空洞,我们看一下,它是弹琴安通道跌破加 m a c d 的 空投嘛,那怎么写呢?最低价的话,它肯定是小于这个弹琴安通道下轨嘛,对吧? 那我们 m a c d 的 只要小于零,对不对?这个的话,那这里的话其实它就是跌破的弹琴下轨 m a c d, 它说白了就是个绿柱嘛,绿色的柱子嘛,对吧? 那我们这边的话呢,上边也是一样的,就把它卖出一手嘛,然后这边我们看到这个的话,这个是我们建仓的开盘价啊,加上三倍的 a t r, 说白了就是空投的止损 最多最多就是建仓价格,建仓的开盘价减去三倍 a t r, 对 吧? ok, 那 我们看一下止损怎么写, a t r 的 跟踪止损怎么写呢?看一下。首先那你肯定要分开他有没有什么时差,对不对?这里有个多单的时差,其实这里的话最好还要再加一个东西啊,这里再加一个, 把这个函数大于零加上去啊,因为不能再建仓那个点进去平啊,最好的话还是要把这个加上去啊, 进去之后我们看一下啊, occupation 等于一是有多单对不对?不在建厂这种贴线上面,对吧?那我们看一下,之前的话,我们开仓的时候记录这个价格是开盘价 减去啊,我们的开仓价减去三倍的 a p r 对 不对?那它之后对吧?有没有可能有之后的价格, 嗯,这样子的话,我看一下它一盘就要减去三倍的一点,其实可能也用不上这一个,因为它这个价格的话,嗯,如果有时差, 最低价如果低过它,如果我们更新的话,用最大的那一个,它是怎么什么意思呢?首先 我们这边记录的一个这个值啊,就我们的开盘价减去了三倍的 atr, 对 吧?那取最大值,那开仓之后有多单它有什么情况呢?首先它有可能往上涨, 对不对?它直接往上涨,对不对?这样子的话,我们用下一根 k 线的最低价减去三倍的 atr, 它会一直往上涨嘛?用前一根 k 线的 atr 嘛? 呃,用最低价嘛,减去三倍的 a t r。 这样子的话,如果它能够跟着一直往上涨,比如它一直往上涨,对不对?然后再跌回来一点, 它能够平掉,然后我们这里如果它是直接往下跌的话,那我们的最大值依然一直都是这个开盘价减去三倍的 a t r, 因为如果它往下跌的话,它的最低价会更新的, 嗯,还是依然是这个值啊,到时候依然还是这个值,赋值,给,重新赋值给他嘛,对吧? 但是如果他是往上涨的话,他就到时候会切换成这个,因为他一直往上涨的话,这个最低价他也会比原来开盘的那个开盘价都要大,对不对?到时候我们用的就是这个的值啊,他就能够实现一个 这个趋势跟踪的一个目的,对吧?然后我们复制给这里,然后如果做多,我们的最低价小于等于前一个记录下来的这个的值,那我们就把它卖掉,不管到时候他的值是这个还是这个啊,都一样。 嗯,前一根 k 线啊,对,因为这建成 k 线不能停啊,这里是对的啊,这里的话我们用前一个就前一根 k 线的这个值也好,还是这里重新不值的,取这个值也好,都可以啊,没问题,把它卖掉,对吧? 那我们这里看一下做空,做空的话,那就不选等于负一,不在建成这个贴线上面。那我们这个平常的这个价格怎么取呢?首先肯定是要取这个记录下来的,做空的时候记录下来的这个哪个小我就要哪个, 因为如果再往上涨的话,他是止损嘛?止损,那我们肯定取这个 止损,他往做空,他往上涨,其实止损,对吧?他一旦跌破了这个值,我们就止损啊,用最高价大有胆于这个值的话, 如果满足这个条件,那我们这里也要把它给平掉,对吧?所以这个的话他可以做到一个趋势跟踪的效果,可以说是他是最简单的一种趋势跟踪的方式。用这个 最低价减去多少倍的 a t 啊?这可以说是最简单的一种趋势跟踪啊,他没有比他更简单的, 所以大家可以看一下,考虑用这种也可以,或者你用 记录下来的最高价那种的话也可以,因为你建仓之后你可以记录一下他的最高价,跟你呃,前一根 k 线去 请跟 k 线的最高线去对比啊,然后不停的复制那种也可以,但是那种相对来说会他的逻辑会复杂一点,像这种的话,他 直接用最低价减去多少倍 a d r 这种趋势跟踪其实是最简单的这种方式啊。 ok, 那 我们今天的课程的话就先讲到这里啊,拜拜。

呃,大家好啊,呃,我是莫言,今天呢我们来学习的这个策略呢,是用三均线来构造一个趋势,然后均线的斜率的话,我们用来过滤一下震荡, 然后还要突破前期的一个高低点来进行入场,再加上一个 a t r 的 动态风控屏障。我们来看一下,首先 我们这里用到的这段代码,其实是我们用到的参数写的参数啊,这一部分呢是我们需要用到的这个变量的字, 我们来看一下,首先我们要计算一下我们的指标啊,这里这三段代码呢,其实是用来计算这个均线,三格均线,我们看一下这个参数啊,参数的话分别是九十、三十跟十, 这样的话其实这条就是慢线,这条是中线,这条是快线嘛?啊,就快、中慢三条线嘛,我们把它给输出,然后这里的话我们这段代码写了一段 atr, 因为我们到时候平仓的话,需要用到这个 atr 来作为它的平仓条件。 然后我们这里记录的一下这个边线这个参数名是什么, 这个的话是把过去八根 k 线的最高价的最高值跟最低价的最低值分别不止给这两个。 然后我们看一下这段代码的话,其实我们计算的是斜率啊,均线的斜率,我们看一下怎么计算呢?首先我们用到的是这条中线,这条中线中线减去十四根中线的平均值, 比如说我们遇到的差值,然后再除以这条中线的平均值, 就是我们要用最新的这根中线的值减去它中线的平均值,这个我们看一下这个参数是不是啊? 就是我们用中线的现在的中线的值,减去过去五根 k 线,五根这个中线的平均值啊,再除以这个中线的平均值,我们计算出来这个斜率。 然后我们看一下我们的开平昌信号啊,我们这个开昌信号怎么写?首先呢,我们这个快线要大于我们的中线,我们的中线呢?又要大于我们的慢线, 对吧?快线大于中线,东线大于慢线,对吧?这个是做多的,那做空的话它就相反,对不对? 然后我们这里有个 slope up 跟 slope down 这两个变量,它分别赋值的是它的斜率大于零点零零二跟小于负零点零二啊,这个是我们用来赋值这个斜率 啊。那我们再看一下这个 break up 跟 down, 我 们用的是收盘价大于过去多少根 k 线的最高值,这是八根嘛?过去八根 k 线的最高值的话,我们作为开波的条件,如果是小于过去八根 k 线的最低值的话,那作为这个 开空的 k 线开开空的这个条线啊。然后我们再来看这里啊,我们这一看这两段代码的话,它其实是这个 快线上穿这个中线,下穿这个中线,它作为平仓条件呢?这部分是平仓的条件啊, 这个是 close under 嘛?这里是挺多的,这是快线下传中线,这个是快线上传中线,这个挺挺多平空。那我们来这里看一下怎么写开仓。 首先 marketing 的 原理,没有直仓的情况下,我们这个条件嘛,要回数啊,不然会信号闪烁啊,然后我们再加上这个条件也要满足,斜率也满足,对吧?然后我们再看一下 这个收盘价,他也要大于过去八根 k 线的最高值啊,这样子的话我们就开多,对吧?我们就多 做空的话,其实就相反嘛,对吧?做空的话,这里是小于我们这个区间的,排列的话,是快线小于中线,中线小于慢这个慢线,对吧? 然后在这里又满足了这个斜率要小于负零点零零二,对吧?那我们再看一下这里啊,收盘价要小于这个最过去八根出现最低价的最低值,对吧?那我们做空, 然后这里的话,我们复制了一个建仓的的第一次建仓的价格给这个 cost breeze 这个变量,因为我们这边到时候要平仓的话,你总你总得知道它的建仓价格是什么,对吧? 那我们看一下,首先这里多单平仓怎么写呢?首先我们只有多单,并且会在建仓这根 k 线上面,对吧? 我们看一下,首先这里有个 slope 啊, stop l 啊, stop l 这个变量呢?它其实是建仓的平均价格减去,你看一下这个参数是什么?一点五倍啊,减去了一点五倍的 at 啊,对吧? 这个是是 stop l 啊,是我们建仓的价格减去一点五倍的 at 啊,那我们这个 tech profit 啊,它是健康的价格加上三倍的这个 a t 啊,我们在这里只有多单的时候,我们再复制这两个, 再看一下怎么平。首先这里如果这个条件成立,这个条件成立在哪里啊?其实就是快线,快线下穿的中线吧, 那如果我只有多单快线下穿的中线,他有没有可能出现空投和趋势啊?这是有可能的,对吧?那我们把多单给平掉, 否则如果我们的最低价下穿小于,等于了这个健康的价格减去了这个,呃,这一点五倍吧。啊?一点五倍的 atr 之后, 那么我们要不要把它给停掉,对吧?因为这里是 a t r 的 一个呃,止损嘛? 对这个幅度的话,你可以自己改一下那个参数,我这里写的是一点五作为参考。要否则如果我们的最高价大于等于这个 tech pro fit, 那 就是建仓的价格加上了三倍的 a t r。 那 这种时候的话,我们要不要, 对吧?我只赢的话,我们把它平掉,这个你也可以自己选择把它改成五倍也可以啊,这没问题啊,要做空的,凭空的话,我们也一样,我们看一下,这里只有空的,不再建成这种曲线。上面我们这个 top 是 什么? 这里只有空单的时候,我们是建成价格加上了一点五倍的 a t r。 比如说它如果做了空单,它距离这个建成价格上涨了一点五倍的 a t r 的 话,那我们是不要把它比掉,对,止损的嘛,对吧? 那我们照样看这个 tech profit 的 话,那这里其实是建仓的,平均这个建仓的价格减去了三倍的这个 atr, 因为它是建仓价格减去三倍 atr 的 话,它是盈利的三倍 atr。 这两个的话,其实上边这个是止损的,下边这个是止盈的啊,我们看一下,首先我们这个收缩也 except 啊,我们看一下这里的话,它其实是出现了一个快线 跟中线的金叉,对吧?那我们如果去空单呢?快快线的中线出现金叉之后,他有可能是多头的,这个趋势啊,对吧?那我们要不要把它给掉? 那这里否则如果最高价如果大于了我们这个止损的价格,在这里止损的条件的话,那么我们也要把它这个空档止损掉,对吧? 那否则如果我们的最低价已经小于等于我们这个止盈的价格了,那我们是不是也要把它给平掉,对吧?所以这套策略的话,其实你可以看到我们用到的首先是三个均线, 用来构造一个均线的一个快中慢线的一个,呃,趋势排列,对吧?然后我们又 用这个均线的中线计算的一个均线的斜率,对吧?然后还用到了过去多少根 k 线的最高最低价,我们得大于过去多少根 k 线最高最低价,我们才作为开仓,这里的平仓的话,他相当于趋势做法了之后, 那走反了之后我们要提前把它给平掉啊。这个的话我们这两个参数你可以自己改,这个是止损,这个是指引的,你可以自己改 看一下。呃,哪个和哪个根据不同的品种自己改正一下,对吧? ok, 那 今天的话我们就先讲到这里,拜拜。

好,我们的 t b 量化编写课程已经完结,目前一共是四十二节,那么这四十二节啊,围绕了甲醇的策略编写,以及我们盘中还做了一些涨停量化的编写,围绕着这两个程序去编写的这道课程啊 啊,这道课程你会得到,首先来说你会得到的,四十二级的视频课程啊,你还会得到我们在课程当中所运用的啊,自建函数,包括啊这一种函数,对, 这里自建函数都是会发给你的,而且会得到我们的甲醇,哎,变化就是这一款变化,这一款变化的元代码包括, 嗯, s c, s, c, f f 格式啊,以及 m p f i n b k 格式啊,那么这套量化啊,表现整体表现不错啊,我们再打开资料报告上去看啊啊,更多的是方便大家去学习使用 啊,从它的年化收益率以及哎,下浮率还有胜率啊,都是不错的啊。

呃,大家好啊,呃,我是莫言,今天呢,我们用这个坦其安通道加这个 atr 来写一个趋势型的策略啊,趋势型的策略大概就是这样子啊,他都是吃这种大趋势的, 他都是吃就震荡的话呢,基本上是,呃,小赚小亏咯,他基本上靠这种大趋势来吃到它的利润。而且今天我们 写的这个策略是多品种可以用的不,不止一个品种啊,他是多个品种可以用的,你调整一下这个参数啊,就可以。这个参数是可调的啊,就是他的回测就这个他距距离最高最低点, 他回测多少跳的这个参数,你调整一下他就可以多品种可以用的啊, 那这里的话是我们需要用到的参数和这里是我们需要用到的变量。 那我们看一下,首先我们写代码的话一定要带上这一段代码,因为这一段代码的话他是用来设置这个后付权用的啊,他在回测的时候可以给你预测这个真实价格,自动换仓之类的啊,所以这段 自动代码的话,你在八八八合约中做委托印刷的时候做回测,那都是很有用的啊。那我们具体来看一下,首先呢,我们这里写了呃几行代码, 这几样代码其实就是弹祁安通道啊,其实弹祁安通道的逻辑很简单的,它就是过去二十个最高价或者最低价的这个,呃,最高值跟最低值,也就是说你可以看到它在这里啊,这这上下轨就是过去二十根 k 线的最高最低值,然后我们用 plotum 把这个上下轨给它输出。 然后我们再看一下这里,首先我们要用到成交量,因为一般来说你要做趋势的话, 趋势策略他很重要的一点就是有趋势,他一定有成交量放大的一个,呃,这个前提,对吧?因为没有成交量的话,他不可能有趋势,对吧?所以一般来说我们做趋势需要加上这个成交量,成交量要大于过去一点五倍, 过去多少个成交量的均值的一点五倍啊,或者两倍啊?都可以啊,把它作为一个限制条件, 因为你如果只是简单的突破上下轨去做这个开仓的话,他有可能有很多假信号的,所以我们要做一下这个限制条件。首先我们限制条件的话,需要这个成交量大于过去啊,过去十个成交量的一点五倍。 然后我们这有个 atr, atr 的 话,它一般来说它是指这个真实波动范围,那你越大的话,它可能它的波动率就它就越高,对吧?所以我们第二个限制条件,其实要用 atr 要大于过去十个 atr 的 这个均值,这部分的话,这三行代码它是一个限制条件。 然后我们再回到这边的话,我们来看一下这段的话,其实他就是做趋势跟随的这个 最重要的一段代码,因为趋势跟随的话,你也可以看到趋势跟随,他会一直跟着,跟着往上跑,跑,跑到最高的地方,然后回来,对不对? 要回来多少对不对?那这种情况的话,说实话我们要做趋势跟随的话,他一般来说他要记录他开仓之后的最高最低值是什么,对吧? 首先在建强这根 k 线上面啊,就是建强 k 线吗?它等于零的话是建强 k 线,建强 k 线的话它有最高最低值吗?其实没有,因为建强那根 k 线的话,它还没走完的,没走完的话你知道它的最高最低在哪里吗? 没有办法确定,对吧?所以在建仓这根 k 线的话,我们一般用这个 close, 就是 用最新价来首先复制给这两个最记录最高最低值的这个变量, 然后它有时差的,对吧?它建仓 k 线的话肯定是有时差的,对吧?那就 market 不 等于零,就有时差, 那有时差的情况下的话,我们最高最低怎么去计算呢?首先我们用前面记记录下来的这个最新价 跟我们的健康价格去对比,哪个大我们就要哪个,因为他有可能是往上串的,对吧?往上涨的话,那肯定是最新价,肯定会大于我们这个健康价格,对不对?他会往上涨, 那记录最低的话,那我们肯定也是用我们之前记录的这个最新价跟我们的建强价格去对比,哪个小五呢?就要哪个,因为他最新价也有可能往下走, 对吧?所以在建强这个 k 线上面记录最高最低值的话,其实就是用最新价跟建强价格去对比,哪个大五要哪个哪个,这样的话建强这个 k 线他最高最低值他就会记录下来, 那如果不在建仓这个天线呢?对不对?那不在这根建仓这个天线,我们可以看到,比如他在这里建了个仓,对不对?他往上走走走走走走,走到这里来,对不对?他是不是最 高价应该要进入这一个啊?或者说他做了个空档,他一直往下走的话,他一直往下走,走走,走到这里,那最低的话,我是不是应该要用这个来更新呢?对吧? 所以我们看一下怎么样去处理。首先这个是记录最高值的,那记录最高值的话,我们用前边记录下来的这个最高值跟现在的最高值, 然后我前边的话,你看我这里有记录一下最高值,然后我用这个最高记录下来的前根 k 线,可能是也因为他会向后传递的,用记录下来的最高的那根 k 线的那个最高值跟现在的 最高价去做对比,哪个大我要哪个,对不对?用记录下来的最低值跟那个现在的最低价去做对比,哪个小我就要哪个,对不对?那这样子的话,他就可以在 他会跟着,你看他会跟着从这里他慢慢往上涨,是不是最高价?这里的最高价又比这个大,那我就取这个,对不对?他到这里这个最高价是不是比这个大,那我就取这个了,他就会一直跟着那个趋势往上走, 对吧?也就是说这段代码的话是做趋势跟随的这个重点的代码啊。 然后我们看一下它的开,开仓怎么开?首先如果 maxim 等于零,它是没有持仓的情况下啊,如果最高价大于等于啊,这个不零的,呃,这个弹起安通道的上轨啊。 然后它的成交量也满足这个过滤条件,就是最成交量要大于过去十个成交量的一点五倍啊,那我就满足一个限制条件。第二个限制条件的话是这个 atr, atr 的 话它要大于过去十个 atr 的 均值, 那如果是满足的话,那我们就开多,对吧?那做空也一样,完全等于没有止仓的情况下,如果我的最低价小于,等于我们的谈起安通到了这个下轨,对吧?并且也是满足这两个条件,这个两个限制条件,那我们就开空,对吧? 这一段代码的话,它其实是,呃,开不开空用的,那我们再看一下怎么平。 我们刚才说到的要做趋势跟随,趋势跟随的话,他说白了就是你看他一直跟着这个趋势走走走走,走到这里,他记录下来这段行情的最高价在这里往下跌多少票,我就把它平掉, 明白吧?就一直跟随,跟随最高,然后往下走多少调,我就把它平掉,明白吧?那怎么写呢?如果这 marketing 大 于零,对不对? marketing 大 于零的情况下的话, 那我前边记录下来的最高值,你不能用最新的那个记录下来的最高值啊,因为最新的那个他没走完,他可能是会变化的,知道吧。 所以我们要用前一根 k 线记录下来的最高值减去八十票,但这个多少票,你根据不同的品种, 你可以去更改。我们的配送小零那是只有空单的,那我记录下来最低值往上涨了多少票,那我也要平场,对不对?我跟着那个趋势一直走,走到这里往下跌一点, 一直跌,跌到这里往上涨一点,我就要走掉,我要吃到这一段的行情,对吧? 来,如果 market price 等于一,就只有多单,怎么平?最低价小于等于这个底 t 就是 我最高点,我在最高点在这里, 然后一直跌,跌到这里啊,就是这个是平常点位,如果我最低价跌破了这个平常点位,那我是不是要把它平掉啊?对吧?最低价小于等于 dt 的 时候,那我就把它平掉。 那做空也一样,做空的话我们选的负盈手空单,那最高价如果往上涨,涨破了这个 kt, 对吧?那我依然也要把他给停掉。也就是说这个策略首先他用到了这个,呃, 这个坦翔通道的作为一个突破,然后加了一段的限制条件,再加上了这个,呃趋势跟踪的这种止盈止损的方式, 呃,也就是说这这是一个典型,典型的突破型的策略啊,突破家趋势跟随的策略来的啊。代码的话逻辑并不难哈,新手都能看得懂这这些, 大家如果有兴趣的话可以呃,可以直接去试一下。你改一下这个参数啊,按照不同的品种,你优化一下这个参数,优化一下它它回测的幅度,那你就可以呃用在不同的品种上面, 那大家有兴趣的话可以试一下。那今天的这节课就先讲到这里,拜拜。

呃,大家好啊,呃,我是莫言,今天呢我们来学习一下用均线来做这个趋势确认, 再加上这个波动率来作为一个呃,过滤震荡,还有最终我们用这个跟踪指数来作为平常条件的这种趋,这种趋势策略,首先我们看到了这一部分的话,是我们需要用到的参数, 而这一部分的话是我们需要用到的这个变样。那这一段代码的话,我前几节课都有说明啊,他是用来做这个储存换月的,主要是做回测用的啊,那这里的话之前的课程都讲过,那我就不详细再说这个了啊, 那我们看一下今天我们这个策略的核心逻辑是怎么样的,怎么样做这个三重的确认。 首先我们的多头趋势啊,我们的 m a 六零这条均线呢,那趋势得向上,那怎么样才说叫做趋势向上呢?就是现在的 m a 六零呢? 要大于前两根 k 线的 m a 六零,并且收盘价要大于 m a 六零,那空投趋势的话,它就正好相反,对吧? 那第二个条件啊,那波动率怎么过滤啊?怎么去过滤震荡呢?过滤震荡的话,首先我们有一个很常用的这个指标,它其实就是 a t r, 对 吧? 那我们只有在 atr 的 波动率比较大的时候,我们才开场,这样子的话可以初步的过滤下,过滤一部分的正档,对吧?那波动率怎么样才叫达标呢?就当前的 atr 呀,要大于近三十个周期的 atr 的 均值 乘以零点八啊,就过去三十个 atr 的 均值的零点八倍啊,这样子我们才叫 atr 达标, 那怎么样去精准的入场呢?那首先我们趋势的话,前面一个趋势要确认,第二个波动要达标,第三个是价格要突破前三根 k 线的最高点啊,做空的话他就是跌破前三根 k 线的最低点, 这样子的话,这三条都满足的话,我们作为一个,呃,入场条件啊。那第四个其实不仅控制的话,我们直接采用跟踪止损的方式为主场。那我们来看一下, 首先在这里啊,我写了一条均线,其实就是这个函数是专门用来计算均线的嘛,六十个收盘价的移动平均嘛,就是 m a 六零嘛,对吧?然后我这里写了个 a t r 这个函数的话,它是用来求这个真实波动范围的 啊,这个是 a t r, 那 我们看一下它的条件怎么写啊?首先 m a 六零要大于前两根 k 线的 m a 六零,是不是要满足这个条件对不对? 并且收盘价要大于这个 k 零六比啊?收盘价大于零六比,对吧?然后我们第二个的话, 我们写的另外一个 atr 的 话,它是需要 atr 大 于近三十个周期的 atr 的 均值的零点八倍,让我们看一下这个 atr, atr 大 于这个是三十三十个 atr 的 平均的零点八倍啊,就这一段, 那像这一个的话,价格突破且三根 k 线的高点,三根 k 线的低点,但这个三的话,你自己改也可以这三,因为他在这里呢啊,他就这个参数跟二这个参数,你想改成五也可以,改成十也可以啊。 那我们看一下这里这两两段代码,这两段代码的话,就过去三个最高价的最高值跟过去三个最低价的最低值帮别人复制给这两个变量的嘛,对吧?那这部分开箱等件的话我们就写完了, 那像这一部分的话我们先不看,因为这部分的话是我们的平仓条件的,我们先来看一下它怎么开平仓,要怎么开仓。首先 maxim 等于零,对不对?那 m a r 是 不是第一个条件满足了,对不对? 要尾数,哦不,尾数会信号闪烁,要 a t r 啊, a t r 这个条件它也满足了,对吧?然后我的最高价大于等于过去三根 k 线的最高价的最高值,对吧? 这个条件也满足之后我就开空啊,相反的话,那我就开空了。首先 f d 对 不对?那这个条件是不是满足了,对不对?满足之后 a t r 也满足,最低价要小于等过去三根 k 线最低价的最低值 也就小于这一个值嘛,对不对?那它是不是也满足了?这样子的话我就开空,对不对? 那我们开仓解决之后,我们最后回头来确认一下怎么样做这个 止盈止损跟踪,止盈的话,我要不要再写一个固定止损,来控制一下他一开始的亏损的幅度呢, 对不对?这个要不要呢?我们看一下我们怎么写。首先这两段代码的话,首先这里他是最小变动值,是一种固定的写法啊,这个变量他赋值的是健康的平均价格。 那我们再来看一下这段代码的话,我之前的课程也讲过几次了啊,他是专门用来记录健康之后的最高最低值的, 这个的话他做趋势跟踪的策略的话,他是最好用的一种方法。就很简单嘛,首先在建成这种贴线上,我复制最高价、最低价的。这 这两个变量首先给他复制是最新价嘛?因为建成这种贴线他没走完的,他没走完的话,你就没办法确认他的最高最低值是什么,对吧?那如果有持仓的情况下, 我在当建强那根天线,怎么样记录最高值啊?最高值就是我前面记录下来的这个最新价跟建强价格去做对比,哪个大我要哪个? 就在建强那根线上他的最高值的话,说白了我就用最新的跟建强价格去对比,哪个大我要哪个 啊?那相反来说的话,我用我记录下的最新价跟建成价格去对比,哪个小不要哪个。那自动代码的话,他记录的就建成那根天线的最高最低值是什么,对吧?那否则他不在建成那根天线, 他不在建成那根天线之后,你会发现一个问题,发现一个问题,你把这个啊先注射掉它啊, 来我们插入这个, 那把这个代码插入之后,你可以看到,如果它 push pull 还有反手,哦,没有反手,你看一下,你可以看到啊,它在这里,它吃了这么一大一段的。 呃,你可以看到它在这里,如果它记录啊,它不在渐长这根 k 线上面的话,你可以看到。就比如啊,它在这里拍了一手空单,对不对? 那空单的话,它逐渐的往下跌,跌跌一直跌,是不是?那这根 k, 比如它在这里渐长,它一直跌到这里,那最低价是不是这个呢?它再跌到这里,它最低价就变成这个的最低值, 再跌到这里啊,他的最低价就变成这个幺六幺四了,对吧?他一直往下跌的话,他会一路更新的,要怎么做呢? 首先我用我之前记录下来的最高价,对不对?建成那根天线的最高价跟下一根天线的最高值去做对比,哪个大我就要哪个。 相反进入最低值的话,那就是我之前建强这根 k 线记录下来的这个最低值跟下一根 k 线的最低价去做对比,哪个小就要哪个。那他是不是会一直跟着这个 k 线往上走,或者一直记录着这个 k 线往下走啊?哪个小就要哪个,他一直跌,我肯定要去想那个,对吧? 那这个如果你能够理解的话,那我们再来看一下它平仓怎么平?首先 proportion 大 于零对不对?持有多单的情况下,我要用记录向量的最高值,要前一个啊,因为最细那根 k 线没走完,你确定不了 记录下来的最高的那个值?就比如他有我找个做多的啊,比如在这里啊,他有个做多的,对不对?他这有个做多的,他记录下来的最高值大概在这里啊,在这里 啊,这这个值我要跌下来多少个点,我把它平掉,对不对?因为我记录下来的他跌下来多少个点,我就把多当平掉,他可能是指一点,可能是指顺的啊, 那我要用前一根呢,记录线的 k 线最高值减去多少票,或者我持有空单,那我记录线的最低值要加上多少票?也就是说做多它是先涨后跌,做空了你可以看到它是先跌了这么多,然后往上涨,知道吧?先跌后涨, 对吧?这个的话我们作为跟踪止盈止损的一个必要的条件,说白了这 dt 跟 k t 这两个它就是多空的止盈点,止盈止损点,明白吧?那我们看一下, 首先 market profit 等于持有多单,那我 dt 是 多单的一个执行值点,我最低价如果小于等于这个 dt 的 话,那我就把它卖掉,明白吗?如果 market profit 等于负一,我只有空单的情况下, 那最高价大于等于这个 kt 这个执行空单的执行值点的话,那我依然也要把它平差,那这个就是跟踪执行率了。 那后边还有一段是用来做什么的?这段的话,因为我有跟踪止损,那我一开仓的话,他有可能直接就亏损了,我不想他亏那么多。那我这里还可以设置一个,只要跌破 我建仓价格多少个点,那我就固定止损。这里有个固定,加了一个固定止损 monet 不 选等于一,并且不在建厂这种贴线上面啊,那最低价如果小于等于建厂价格减去了多少票?这个一百二十五也好,一百五也好,你自己设置这个变量这个参数的值就可以了。减去,比如减去一百二十五票, 那平仓价格他是不是健康价格减去了一百二十五条啊?那这里要不要处理一个跳空低开的问题?如果跳空低开的话,我平仓,我的平仓价格直接用开盘价给替代,他知道吧?然后把它给平掉,那这个是固定,固定的一个止损啊, 那空投的固定尺寸也是道理也是一样的,他就不选的不一对不对?不在建成这种贴心上面,如果最高价大,等于建成价格加上了一百二十五条,比如吧?啊,这里也可以写成一百五也行,这个变量你,你自己改,这个参数你自己改啊。 那我的平常价格是不是等于建成价格加上一百二十五条,对不对?他把做空了,他直接往上涨一百二十五条,我要不要把它止损掉,对不对? 那如果你开盘价,我的开盘价直接大于平价,可怎么办?那直接用开盘价把它平掉对不对?那这里是不是艾特卡,我把它给止损掉,对不对?所以这套策略的话,说实话 他的平仓还是相对来说比较复杂的。首先他有这个跟踪的一个,呃, 跟踪执行率吧,对不对?他加上了一个趋势跟踪的执行率,然后在区趋势跟踪执行的基础上,他还加了一个固定的指数来控制你开仓亏损的风险。 就是你接受能接受开仓亏损多少,那你就调一下这个参数,也就是这个 啊,这个一百二十五这个参数就可以,这个可以控制你时长的整体风险,而这个的话是可以控制你这个趋势预测的利润是多少, 这两个是核心的这个趋势当中的参数,明白吗? ok, 那 今天就讲到这里了,拜拜。

各位朋友大家下午好,那个我们三点半准时开始我们每周四的呃量化的直播,今天呢,呃我要给大家介绍的呢是一个 实际上非常重要的一个话题啊。呃而且呢这这个话题呢,不是特别好理解呃,尤其是对一些新手刚刚接触 tb 的 朋友来说, 会是比较难以理解的一个一个东西。所以今天呢,呃我想把这个话题专门拎出来,呃做一些相对比较深入的一个底层逻辑的一个分析啊。呃 题目呢,我就取了一个大家可能问的比较多的啊一个题目就是为什么图标指令和 a 函数的指令不能混在一起使用, 那我这堂课呢,我还是把它归一为量子三的实验课,因为我在给大家讲这些原理的时候呢,我会用一些例子来做演示,那么我们就呃开始我们今天的这个分享, 我们在服务客户的过程当中啊,经常被问到一些问题。呃说实话这些问题呢, 看起来都是刚接触 t b 的 人经常会问到的一些问题,但是呢说实话这些问题你如果要把它回答好或者回答清楚,其实不是一个非常容易的事情。 所以之前呢,我们很多时候会要求客户,呃请他们到我们官网去把一些基础的或者那个篇基本知识的这些内容,无论是文档也好还是视频也好先看一看,那这样的话呢,就会比较清楚 tb 大 概是一个什么样的机制。 那这些问题呢,站在一个对量化有一些憧憬的这种客户来讲,他确实容易问出这些问题,我觉得也很也能理解啊, 但是难的是什么呢?因为他对量化有一个他自己主观的一个想象,然后问的问题都是基于自己的想象问到的这问题。 那这些问题实际上在 tb 的 这个平台,在实现的过程当中,我们有一套处理这些问题的机制,如果你不了解这些机制的话,那么你的问题会源源不断的提出来。 我这里随便举几个例子啊,比如说第一个问题,很多客户说我策略交易已经启动,在策略单元甚至图表啊里面也能看到有什么多仓、空仓、盈亏的这些显示,但实际账户为什么是空的? 那这个问题呢?有两个层面的可能,一种可能就是确实你的策略有些什么问题,导致他没有发单, 那么这个是属于正常的技术问题。但是更多的时候呢,其实客户的问题其实是因为他并不了解一个策略单元里面显示的那些仓位和你实际账户的仓位之间是个什么关系, 他是属于不了解这个机制,所以他会问。而实际上呢,很多时候是因为这个车的单元你刚刚启动,你里面显示的都是历史的磁场信号和历史的图表的盈亏, 因为这个时候你还没有启动到实际账户没有关联,所以实际账户当然就没有没有仓位了,你需要做一个头寸同步啊,走入此类的, 这是第一个问题。还有类似的,比如说报表上有信号,账户没发单,或者说实际上我有发单,也有持仓,但图标上没信号,那这些呢?如果从 正常角度来讲,就是如果不是属于这种理解上的问题的话,那这个肯定就是策略要去调试,那是那这些问题的发生呢?实际上很多时候就是因为策略没写好,对吧?这信号可能有闪烁,或者说是有 先没有信号,后面再补的信号这种情况,这种不叫闪烁啊,这种不叫消失了,他相当于是呃,两次运行的这个信号不一样啊,就这这是第二种情况, 像我今天举的这个例子呢,大概举了我举了八个,但实际上实际上平时问到的例子各种各样都有,但是不管这个 问题怎么变化,其实他的本质都是跟我们今天后面要讨论到的这个公式运行的一些底层机制是有很大的关系的啊。比如这里面有些提到的要及时的进出场,那为什么我们不能实现及时的进出场呢?实际上也不是不能实现 啊, a 函数策略就可以啊啊,或者图表策略其实也是可以做到的,只是说他涉及到历史回测会有些问题 啊,还有的想根据实际账户的权益,或者根据权益的回测,或者根据策略的实际账户的表现等等来对策略本身做一些调整。那这个东西就是因为他对图表策略的原理没有搞清楚啊, 当然你说 a 函数的这些都不存在对不对?你完全可以读到这些账户的信息,包括很多客户问问题的时候呢,他也没有一个基本的 你的使用场景的一个描述,一上来就是直接问问题。那当然我也不知道你是用 a 函数写还是用图标来写啊?我们一般当然是默认这个用户是用懂图标交易指令来实现的,是吧? 还有的更让我都不知道怎么回答的,就是说我们正常是交易账户和图标去同步,因为图标他是,他是根本,交易账户是实际上是把执行图标的一些指令而已, 他要求不要交易账户和报表同步,而要报表和交易账户去同步, 我觉得这个就就有点本末倒置了,对吧?因为你本身所有的交易都是基于报表的处理结果, 那你怎么可能继续交易账户的结果呢?是吧?当然了,如果你有手工交易,然后程序化,怎么样去监控他做后续处理,那这又是一个策略的问题,那就另当别论了啊。还有一些这个类似洁面的啊,或者说要和其他品种交交互的这么一种这些策略, 那这个呢?其实都不是一两句话就能说清楚的,你在没有对这个 tb 这个策略平台的运行机制有了足够的了解之前,你问这些问题只是因为 你想实现这一类的策略。但是在这样一个很陌生的平台,你去实现这样一个策略,你如果对平台的特性没有一定了解,这种策略你就算有一定的边界能力,你都没法做啊,是这么一个情况。 好,那我们今天呢,就想把这个问题来来聊透一下,为什么 会出现这些问题,甚至这些问题你都很不好用几句话说清楚。这里面我认为本质是因为客户对量化策略的运行的 理解,或者说他理想的一个目标,和我们平台所提供的这个运行机制之间是存在相当大的一个差异的,那我是根据很多客户的提问,我得出一个大概的结论就是用户的理想目标 大概是相当于我们 a 函数指令实时交易,再加上图表指令的历史回折这两部分的一个合集,它需要的是这两套交易指令的一个完美的一个结合。 但是现实的状况是我们暂时没有办法提供这个很完美的结合, 原因我后面会讲到为什么会这样?所以目前现实的状况就是我们 a 函数 只有在实时的时候有效,它历史是没有效果的,所以 a 函数做不了历史回测的事情。 而图标指令呢,它理论上是可以实现 a 函数所做的一切实时的交易,它都能做,通过什么全聚变量啊,这些各种变量啊,数据库啊,或者说是宿主啊这些数据结构, 理论上它也能做到和 a 函数类似的功能。但是 a 函数指令的它一个 非常大的一个职责是他还要承担历史回测的这个重任,所以图标指令的策略他即使能实现,他也必须要考虑如何应对这个历史回测的问题。 这就是用户的想象中的一个策略,平台和我们现实能提供这个平台之间存在着很大的一个差异,这就产生的很多很多的问题。 那么当然我认为正确的做法肯定是根据平台目前能提供的状态,而不能活在你自己的一个一个想象当中,对吧?你认为车里平台应该是这样,应该这样,那这个世界有很多东西因为科技的进步还没有到那个地步,所以你没有办法实现啊。 那么接下来呢?我会,呃,先把这个道理啊,就原理跟大家讲一下,然后我会在我们软件当中通过 a 函数图表的一些策略的,已经实现的策略的实力啊,就是它怎么运行的?我来给大家讲解这里面的一个一个里面的一个底层的原理。 为什么我们现在没有办法提供一个非常完美的这个公司运行机制,或者说是完美解决用户想象中的问题的一套机制呢? 这个核心原因是因为我们目前的机制是这个样子啊,待会讲。那那为什么不采用更好的机制呢? 是因为我们目前技术上还很难做到啊,而且目前市场上也基本上没有这种这种能够完美解决历史回溯和事实交易的这种这种平台啊。那我们现在 t p 平台是怎么处理的呢?我们是用了一种呃,我认为是折中 同时兼具性能和效率的一个比较好的一个性能效率比的一套解决方案。 我们现在采取的是什么?是同一套策略,身兼两职,他既要负责实施完成实施交易,又要负责支持历史回测以及策略优化等等。 但是实时交易和历史回测他们的运行机制是是不一样的,这是有差异的。 为什么有差异?天然的他们两者的数据就不一样。实时交易是什么?是每个 tick 都在更新数据,按照我们目前国内期货市场呢,大概是每五百毫秒更新一次行情,当然还有不成交的情况啊。 那历史的话,我们目前只能根据,就绝大部分的历史回测,我们只能根据历史的 k 线来做,那和用户想当然的会提出要求对不对?历史回测为什么不能像实时交易一样逐个替个来回放呢? 从技术上来讲,目前是可以这么做,但是这里面带来的 效率的下降是远远我认为是得不偿失的。因为假如说我要回车十年的这个做十年的历史回车,那我得把十年的历史数据每个 tick 的 重新跑一遍, 这个难度有多大?首先你得有十年的 tick 数据,第二个就算你有 tick 数据,你的测试也只能基于数据本身而无法结合。像我们前面的问题提到的,有些用户他会结合账户的情况, 结合盘口的情况,那这些数据你是没有办法在历史回溯的时候,除了行情的这个数据你要提供,你还要提供账户的每时每刻的数据,还要提供盘口的每时每刻的数据,这个能做的到吗?这个目前国内应该是没有,没有公司能做到的, 没有平台能说。那我们现在历史回测只能什么?在基于 tick 数据的情况下,我们做一个有限的时间的一个回放是可以的,比如说你做个几个月是吧?甚至一年是有可能的,但是你要再长就难了, 而且即使只能够实现,这种回测的速度是非常非常慢的,更不要谈优化了,是吧?所以从 最终结果来讲, tb 现在提供的是一种历史回测,一种近似的接近真实结果的一种回测,而实时交易力求精精、准,那么这样的话就能达到一个 性能和效率的一个平衡,就是我性能,可以说百分之八九十的性能肯定是已经达到了足够满足用户的需求了,而效率我们比刚才的那个 tick 回测知道快了多少倍,对不对? 所以是目前是这样一种情况,所以我们采取了同一道策略,同时兼顾历史与同时兼顾实时交易的这么一种方案。 但是这里面的难点就在于,实时交易我是可以根据 tick 数据来做一些判断的,而历史回测我只有一根 k 线的一个数据,不管看你在什么周期上面,对吧?你是日线还是分钟,你始终是只能拿到这个时间周期的一根 k 线, 而实时是可以拿到这根 k 线的所有的 tick, 这是两者之间的区别。而更难的一点是什么?因为我们是同一套策略, 那么我们同一套策略呢?这我画了一个图啊,叫历史不断向前,当前的实时终将成为历史。就是假如我现在是在这根 k 线上面跑,这是实时, 这根 k 线上面我可以对所有的 tik 进行处理,但是处理完之后,到了后面时间往后推,随着时间的往后推移,他这根也成为历史了,而新的实时交易又出现了, 那这个实时交易刚才每个 tik 跑出来的结果,在历史回测的时候,他怎么去跑?他没办法再按照实时重新跑一遍,他又会归入像历史回测一样的机制,就是根据他的最终 k 线来进行策略的运行。 所以难的是实时会变成历史,如果他一直是实时也好办,对吧?那实时又变成历史,那历史回溯的它结果和这个实时就有可能会不一致,那我们整个这道平台,我们要求我们的策略在实时和历史之间是要求无缝衔接, 你在实时产生的信号在历史当中也要能产生,否则就是我们经常听到的信号闪烁或者信号消失。 所以我们在真正用能够支持回测的这个图表交易指令编辑策略的时候呢,我们虽然实时的时候可以做很多处理,但是我们没办法做这个处理,因为当它变成历史之后,你就相当于你没有实时的这些数据的支撑了, 这是我们真正写策略,写图表交易指令的策略的难点和为难的地方。那那大家会说为什么信号必须保持一致呢?我就闪烁又怎么样呢? 那么这就涉及到历史回测的一个一个关键的点,如果实时交易的时候,我做了五笔交易,历史回测我只挑赚钱的 列出来,亏钱的我就抹掉,那这个历史回折是不是会变得非常好,而实时交易亏的一塌糊涂呢?那如果是这样的话,历史回折还有什么意义呢? 是吧?所以我们还是要保持实时是什么状态,历史回折就是什么状态,报告也是什么状态,这样就能保证历史回折和实时交易基本达到 几乎相同的结果。当他实际的时候是有差异的,因为还有盘口,还有撮合是吧?还有滑点等等这些这些因素。所以实时和历史的哪怕是同样的数据,什么都同样,他真正跑的时候还是会有差异,但这种差异一定是在量化投资者可以接受的范围之内 啊。这就是我们 t b 平台运行机制当中,目前对这个问题比较难,难以解决的一个一个关键啊。 那当然呢,可能的解决办法也有很多啊,当然这个只是基于我个人的一些认知,我提的一些一些方案啊。呃, 当然可能的方法可能还有更多啊,我待会呢,讲完这个我们就回到这个软件里面,我就给大家做介绍啊,我们是怎么,大家是怎么想的?我们是怎么想的?我刚刚讲的这些问题是是怎么样一个问题?因为这个我这个描述可能 讲起来比较轻松,但大家可能对这个东西理解是要花一定的时间来来慢慢领悟的。 那可能的解决办法一个就人为拆分,我就是历史回溯之,就负责历史回溯,我就用图表的这一套,只基于 k 线,不管实时的状态。那如果是实时交易呢?我完全可以基于实时交易的做一些特殊的处理。 那当然如果做得好一点,我实时交易做完之后,如果这部分成为历史之后呢?我还想 这个,把这个历史啊,把把这个实施交易做过的部分怎么展现出来,那就回到这个地方,实施写法和历史的写法分开处理,就是你判断他如果是在实施交易的时候怎么判断?判断完了之后 回到历史了,那怎么让历史上能把他做过的这些信号完整的展现出来?那这里面当然手法可以很多,但这是原则性的东西啊,就是你,你怎么样让你实际跑过的,在在成为历史以后,你还能保持这个信号不变, 但这两种方式说实话都会导致一个问题,就是你实时的这些写法只是影响实时交易,无法影响历史啊,无法影响历史历史还得按照比较粗的那一套方法去做一些测试。 那么还有一种方式就是用 a 函数指实际跑策略回测呢?就通过账户分析。那为什么 a 函数它不能够做回测呢? 因为他没办法对历史做处理,他一定是基于实时的行情的,对吧?他会,他会根据你当前的账户情况,行情情况,甚至盘口的情况,他来做一些处理,但一旦成为历史,他就没这些东西了,是吧?账户是没有历史的东西的, 他的回测就只能通过账务分析来进行,但是这种回测方式呢?测不了太长时间,历史你也测不了。 那当然还有一些变通的方法,像我们平台啊,也提供了一些这个回放啊,包括可能第三方也有一些回放,将来我们可能还会在回放这方面做的更强大。那我通过 a 函数来回放,回放的时间如果足够长的话,实际上也相当于是,呃, 实际跑过这个策略以后的一个掌握分析结果是一样的。那还有一个方法呢,就是我们矿的三里面提供了一个跨周期的一个新机制。 那这个呢?我们以前在介绍量子三的新功能的时候,我们讲过啊,就是它是提供了一个对小周期 小的基础周期的一个一个支持。那什么意思呢?就是本来我们的历史只有一根 k 线,我只能运行一次,对吧?我只能运行一次, 那现在呢?我有了一个小的时间周期之后,比如这个是小时线,那如果引入一个一分钟的基础周期呢?就相当于把我这个一个小时的六十分钟我拆成了 六十个状态,每个状态都是反映了我这个小时线的它的当时的状态。那这就好了呀,我相当于我把这个小时线可以在历史上面也跑六十次,虽然六十次和 tick 数据的 一百二十次。一小时六十分钟,还不是啊,一分钟六十秒不止,说错了啊,就一小时六十分钟,六十分钟等于乘以六十秒,等于三千六百秒,等于七万两千次的运行, 那这个差别还是很大,这六十次和三千六百次的七千二百次的概念。但是对于很多中频的策略来讲,也许你已经可以规避绝大多数的问题, 除非是非常高频的策略。那你需要到更小的时间周期上面,而我们是矿的三的跨周期是可以支持 更小的时间周期的,是吧?我们可以支持到这个这个一秒,那这样的话实际上也就可以跑三千六百次, 但是同样受之于我们要需要这么长的一个历史数据,而且运行效率太慢啊,所以这些问题解决是可以解决,只是效率很慢啊, 这就是我今天把问题提出来,大概有这些问题啊,然后我接下来呢,我想进软件里面来给大家做一个,呃,就上述这些问题的一个一个讲解吧, 我先看看有没有问题啊?好,没有什么问题,太好了,那我们开始啊。呃,为了讲解这个, 这个大家期望的是什么样的策略,以及我们能实现到什么程度。呃,我, 我把这个我们 t b 里面实现策略的两种方式啊,或者说两 两大两套。这个交易指令我分别实现了一个简单的一个策略。呃,本来是写了一个四周,但是我后面我想为了演示方便呢?我我我想了一下还是改成用单均线啊,用单均线来做演示,那我先写了一个 a 函数的, 哦,忘了,糟糕,还是还漏了一个内容了啊,就是我本来昨天是用四周写的,那四周的那个那个图标策略都忘了,忘了改了啊, 但没关系啊,原理是一样的。我们先看这个,我用 a 函数写的一个单均线的一个一个策略,我现在是在回放的环境下在跑啊。呃, 我们现在看一下这个大概的我这个页面的一个布局啊,给大家先讲一下就知道大概什么意思。 左边呢?我是放了一个 k 线图,再跑一个,跑一个策略,这个是 a 函数写的策略, 我觉得大家可能大家心目当中期望的策略大概应该是这个样子啊,当然他有他的缺点,他就不能回撤,对吧?我在这个地方跑,那 a 函数我为什么要放在 这个 k 线里面跑,而没有放在策略单元里面跑呢?就是因为我毕竟还要还要看他的这个,呃, 这个行情走势以及这个交易指令是不是吻合的一些,要做一些调试,那如果放在撤退单元里面呢?那就等于是两眼一抹黑,什么都没有,因为它本身又没有信号,只能看这个。呃,最后账户的一个成交情况那一啊,那右边呢?我是放了一个 三个,呃,应该是四个啊,三个,四个,哎,为什么我这里还多了一个 啊?应该是四个啊,放了四个窗口,那这个是通过主键切分出来的,我给大家演示一下这个基本操作啊,虽然这个本来不在今天的这个讲的这个范围之内。刚才有一个朋友,呃,讲这个基本操作大概是怎么做的,我也就给大家稍微演示一下。 哎呀,这个挡的了一点啊, 点这个加号新建页面,就会出来一个有各种布局以及空白的这个页面啊,那么我这个页面呢,实际上有点类似,这个有点类似一号模板啊,也可以用一号模板来做啊,也可以用空白的来做,都可以。 呃,我是用空白的来做的,比如说我点空白,空白之后呢,那么这个就有个桌面了,有个页面在这个地方,然后你可以点右键添加内容,对吧?我首先呢我来了一个 k 线图,这 k 线图呢,就是我准备跑这个 跑策略的,我把它换成一分钟,对吧?然后这个地方待会结束编辑以后把它插入策略就可以了。 那我现在想在右边这个地方,你看有一个这个箭头,很多朋友不知道啊,他说怎么展开,看右边的这个调试台, 如果缩小了,就这个地方有个箭头把它展开,这右边就是有分笔的这个信息有分架,是吧?还有信息,这个就以前的 comment 输出的一些信息就可以在这个地方看到,还可以调试,就是用 print 输出的信息。 好,那我在右边我要插入四个那样的显示委托成交时仓以及账户资金的信息的那个窗口,那么我先点 右键,这个地方有个右插入,我就点个右插入,那这边就来了一块,就把屏幕把整个页面分成了左右两块,然后右边呢就是一大块,那么这一块我又可以继续什么?在下面插入,又可以分一下,然后上面我也可以点一个下插入,是吧?下面我还可以再点个下插入, 这样就分成了四大块的四个组建的空白区域,然后我们再分别点右键,把它更换成相应的内容啊,点右键也可以,或者从这边拖拽也可以,是吧?这边不是有一个竖形的结构吗?比如说我们点呃交易相关的对吧? 委托列表放在这对吧?成交列表放在这, 时长列表放在这,然后还有一个账户信息的啊,是资金列表放在这, 那这样就是我刚才那个图怎么来的?然后要运行策略的时候,我们再点啊,我们退出编辑,然后在这个地方点一个策略应用,再把这个公式添加进来就就可以了。好比如我这个公式就照照这个,但是呢这样一运行呢,等于两个公式会在两个地方运行啊, 然后输一些参数啊,改一下参数就可以了。 那我们回到这个啊,那我这里面呢,我是我们来看一下这个参数设置啊,我写了一个什么大致什么东西呢?我只是为了这个,不是策略啊,我只是为了呃,讲解大家实践过程当中可能会碰到的一些一些问题,那么我想这些问题 如果要实现大家的要求当然是用 a 函数来写,是功能最强或者最能适应你的各种策略需求都可以 啊。我大概写了个什么东西,就是一个单均线,然后我加了一个突破的偏移,否则的话呢,如果单均线往上突破一个点就做做多,往下一个点做空,那可能会再来回的 这个反手啊,我为了让这个信号不要变得那么多啊,过滤一些这个噪声,所以我加了一个突破偏移,加一个几跳的偏移,那么这个就是跳数,我这里加了五跳,加了五跳之后呢?然后这个是交易的手速, 如果等于一的话就做一手,如果是等于零的话,就表示不是固定的手速,而是什么?而是 而是按杠杆啊,而是按杠杆,那么那么这个杠杆呢?就是我们这个地方设的, 那为什么我要做一个杠杆的演示呢?就像我前面在 ppt 里面展示的有些客户提到的问题,对吧?他希望我我的策略呢,能够根据实际账户的权益来决定做多少手, 那这个是图表策略没办法做到的是吧?他虽然也可以做到,但就像我刚刚在 ppt 讲的,他只能在实时的时候做到,那历史的那些信号怎么办呢?他的手术怎么决定啊?就会存在各种各样的问题 啊。所以如果你是对这个非常在意,我就一定要用交易账户的实际的这个这个权益来做的话,那么你就用这个 实际账户的交易杠杆啊,这么来做。那么 a 函数为什么能实现呢?因为他可以去读账户的信息,对不对?所以我这个地方呢,就是为了演示 a 函数,为什么能做到啊?因为他有这种这种功能,对吧?然后接下来就是一些大家常常见的一些需求啊,比如说 止损多少跳,止盈多少跳,然后我这个地方还做了一个跟踪止盈,我做的为了说明问题,我还特地做的比较复杂一点啊,就是 设了三级的跟踪止盈,达到多少盈利多少跳游回落多少跳啊?盈利多少跳,游回落多少跳,盈利多少跳回落的啊,这个地方还写错了,这三级啊,嗯, 就是一级、二级,三级啊,三级。那现在呢?我把这个三,这个三个呢,我全部改成了一个很大的数字,就等于是没起,这个就不起作用了,我只设了一个最简单的一个,一个止损,一个止盈,对吧?然后一个杠杆,如果是你设了手术的话,就不用杠杆,就大大概这么一个东西。 然后呢?我这边,呃,因为 a 函数呢,它是它可以按照你的需求做任何事情啊,它可以做得很好,就是你你只要把这个指令说清楚了,但是当然这个本身复复杂度也是很高的啊,就是 a 函数它的它的编辑和调试都是非常难的,所以, 但是呢,它有这种能力,是吧?只要你策略能够把逻辑给它梳理清楚,你是能实现的,那只是工作量大而已, 但是他没有什么很好的展示,因为底层就是我们 tb 平台的底层,除了提供一些函数之外,我们并没有为 a 函数的运行,我来帮你做一些事情,相当于他把一个完全 定制化的东西交给用户自己来做了,所以这个难度是是很高的。但是如果你有一些就是一定要实时处理的东西的话,那么 a 函数显然是有他的优势的,这个对图标策略来讲就非常的非常的难啊,非常的难, 所以我这边通过 print 呢,我输出了一些呃信息,就是呃我当前的买屏买开,卖屏卖开的大致是个什么情况,是吧?我现在是是属于 呃什么时差?比如现在是我身上已经平仓了,对吧?平仓了,那这个地方呢?我就有一个当前的 mp, mp 呢?是我取一个变量啊,我自己用了一个变量来记录当前的类似图标的 market prediction, 那 么那么这个 market prediction 呢?是 目前是等于零的,他前面是一个做空,是吧?做空然后这个地方止盈了,对吧?我我设了个六十条就止盈,他就止盈了,止盈了以后呢?他就变成没有没有单子了。那这个呢?是当时持仓当中的一些 这个盈利的情况,最大盈利了多少?这个是跟踪止盈用的,是吧?还有最大盈利的价格是多少啊?当前这个呃 引力的跳数是多少跳?当然这个都是基于当时止仓的时候的一个信息啊,变成清仓之后没有把这个清掉。为什么呢?我觉得也没必要,是吧?等到下一个信息来的时候,他马上用新信息代替嘛。然后这个地方就可以看到前一笔大概是个什么情况啊?然后 然后这边是你整个账户的持仓情况,可可平情况,可得空,那这边是做多做空的这这几根线的情况啊,就大概是个这么情况。然后呢?这个是因为我我在准备这个时候呢就一直在跑 啊,但是你可以看到我这个地方也有些买平啊,迈开啊这样的,这个好像类似跟信号差不多的东西,那这个呢?只是产生信号的时候,我把它输出了,对不对?那一旦我来来一个刷新的话,我重新运行的话, 大家可以看到这些信号通通没有了,为什么?因为这些已经成为历史,而 a 函数呢?他是 只有实时的时候有效,他这些历史的时候不管怎么跑,他是产生不了任何东西的,所以这是和图表的一个最大不同,虽然我在做的时候,我可以我不刷新他,我可以看到他当时是怎么做怎么做, 但是一旦它现在最新变成这根呢?它只有从这根开始运行的东西才有可能留下来,之前的东西一概全部清零了 啊,这就是我们大家想用的,比如说很多人觉得 a 函数很好啊,我就喜欢 a 函数啊,对不对?但 a 函数它也有它的一个短板,就是 那么今天呢?其实我花了很多时间来准备今天的这个讲课的一个短板,就是那么今天呢?其实我想写一个 a 函数的一个例子,放到这 跑给大家看啊,你 a 函数大概是怎么回事?当然这个代码调试过程中,即便我已经最近说实话已经写过好几个这个 a 函数的这个代码了,但实际上在调试当中还是碰到了很多的,呃,各种不小心啊,或者不注意啊,或者逻辑上的一些没树立清楚啊,还是有同样有这些问题, 所以整个 a 函数的编写难度是非常非常大的啊,非常非常大的。好,那我讲完讲这个 a 函数呢,我只是想说明它的这些功能, 它在实时的能实现的功能,我们其实用图标也是能够实现的啊,也是能够实现的那一种方式呢?在图标实现的时候呢,就是你还是和这个 这个东西没开哈,我把它启动起来就继续让它跑吧。 那么如果你用图标策略去写这个东西的时候呢?你实时的时候也是可以像 a 函数一样的用各种的全区变量啊,什么 map 类型啊,什么来记录也是可以的,都是没问题的。 但是它存在的问题和刚才我 a 函数刷新的这个问题是一样的,就是一旦回到历史以后,你刚才产生的那些信号通通消失了, 那这对 a 函数来讲无足轻重,因为他本来就不做回测,他只要实施交易正常就可以,是吧?你像我刚才已经停了一遍,然后重新启动的时候,我马上去图账户自己的本身的磁仓是吧?当前什么信号我重新来过就是了,本来也是没有磁仓对不对? 他基本上可以根据实际的情况及时的做调整,而且他图标上是没有任何基于图标的东西,他是完全跟账户实际结合的非常紧密的一类策略,所以这种策略实时对他来讲一点问题都没有,那历史没有,本来就没有,对不对? 但是如果你用图表的话,你就要考虑你现在能做一些处理,那回到回到历史怎么办?那就不好办了,对不对?好,那讲完了这个之后呢? 我们我们这样哈,待会有什么问题,我们等到提问的环节我们再来看啊,我就先闷着头子把这个,把这个内容先讲完啊,那么这是这是这个 a 函数的情况,然后同样呢,我还做了一个 图标的例子啊,做了一个图标策略的例子,但图标策略我是怎么做的呢?我跟刚才的那个 呃 a 函数的就完全不同,我做了一个跨周期啊,那为什么要作为跨周期呢?我只是想演示通过图表策略同样可以实现 a 函数类似的功能啊,类似的功能, 而且还可以兼顾一定的历史信号,只不过这个数据不能太时间段,不能太长。 呃,因为图表策略呢,实际上它在实时的时候,它每个行情的变化,它和 a 函数是一样的,它也能够获取到,甚至包括你账户的 慈善情况,权益情况,他也能获取到,只不过是当他成为历史以后,他就没有这些信息,所以他的信号就没有办法利用这部分信息。而我现在呢,因为我希望把历史的信号保留下来,所以图标的数量呢,就 就没有办法利用当前最新的一些实时信息。这是图标 交易指令,为了完成他身兼两职啊,既要做实时交易,又要做历史回测,身兼两职而做出的一个一个让步,或者说一个一个折中处理,没有办法。 当然我在实际写策略的时候,我曾经也写过类似这样的策略,就是我实时的时候会做一些处理,然后历史的像这种呢,我也会把当时的一些信息全部保留下来,这样的话,当我重新去刷新这个是吧?你看我,我可以无论怎么刷新,他这个信号都不会变的。 那这样的话,我可以保证我在刷新的时候我这个信号仍然是有效的,但是这个代价很大,因为我相当于我每一次产生的任何的操作的信号的时候,我都要把这个信号记录到一个持久化的地方,就是类似数据库或者文件啊,或者基础数据类似这样的东西。 那这样的话是可以做到我只要从什么时候开始跑,我的历史信号也在我实时还可以继续处理, 就比 a 函数的要稍微完美那么一丢丢,是吧?因为它至少还可以做一个已经操作过的历史回测。 那我现在这个图标策略我是怎么实现的呢?我是在一个一秒图啊,是吧?你看到大家可以看到吧?我的这个策略单元是一个什么?是一个?是一个秒 n, 秒图 n 等于一是一个一秒图, 一秒图就相当于是比一个 tick 稍微大了一倍啊,就是颗粒度大了一倍,那这种情况下,但是一秒的行情不会有太大的变化,对一般用户来讲已经足够了,除非你是非常非常极高频的。但是 tb 也做不了极高频啊,因为我们本身的行情就是走行情服务器的,不像那些 高频,他是要把他自己的这个这个交易的机器放在这个交易所啊,或者放在这个机房旁边的,那他们对速度的要求是非常非常高,而我们这个是没有那么高,我只要保证我信号不闪烁,是吧?我能够基于一些最新的这个行情做一些处理就够了。 所以呢,我这个策略的实现呢,实际上是通过一个跨周期的方式,我就叫 m t, 就是 啊, multi time frame 啊,就是多周多个时间周期,那用一秒图来产生信号做处理,但是它实际上它它读的呢,是一个, 是一个十五分钟的图,当然你也可以改啊,因为这个有参数的,我这里是用的十五分钟的一个图,那么这个车呢?我就忘了改成这个单均线的啊,我还是用四周的例子啊,所以,所以两个例子不太一样啊。那个 a 函数的我已经把它改成单均线了,因为单均线比较好演示的是什么, 他看的非常清楚,是吧?上去买开,下下来卖开,对吧?是非常非常清楚的,所以这个这个这个这个是不一样的啊,那那个那个刚的啊头, 但是我这个呢用的是四周的例子,但是不管用什么例子,这个原理其实是我们其实需要学习的是怎么去实现这个的一些基础的东西啊,就是公司运行机制当中很基本很基本的一些原理。那你把这些东西搞清楚之后呢?你再去 处理各种各样的问题的时候,你就,你就心里有数了,对不对?你就心里有数了啊?像前面我们在 ppt 里面讲到的,有些用户说,呃,为什么我在这个这个地方啊有信号没发单,那很简单呀,你就 当然已经过去的事情,你要调试是非常难的啊,除非你去看日制,你去看这个这个点到底发生了什么,对吧?这个系统会做一些日制,但是系统的日制没那么全,那么我们调试设备的时候呢,你就把这个每个产生信号的地方,你会输出一些日制,比如我,我做这些东西的时候,我, 我其实是有写日记的,对吧?我就放在我第一盘,比如说这个白银,对吧?我就说止损处理怎么怎么样,对吧?罚单又怎么样,对吧?我都,我都有一些,呃,比如说这个合约买入它价格是多少是吧?它的坝是哪个?它的那个盈利峰值 是多少?盈利了多少点是吧?这个这个都都有一些东西的啊,那你有了这些东西以后呢?你就你就可以去做一些 类似这样的跟踪,对吧?你就知道,哎,为什么这个地方明明有四手这个做空的,为什么我当时没有发单呢?然后就看他当时的这个这个记录的这个情况以及发单的情况,对吧?你你再去看就是了, 是因为有可能是一种情况,是什么?这个现在显示这个地方做试守,实际上在当时这个晚上这个地方是什么?十一点钟这个这个时间的时候呢?其实并没有出现这个信号,只不过是你后面在刷新的时候,他他这个信号又出来了。 那么这种就是策略编写存在一些问题啊,就是编写不正确,正确的情况应该是什么?就像我现在这个,这个,这个啊,我比如说我随便回测一下啊,这个是转一一零一九零,对不对?好,那那我刷新 是吧?我刷新等于是重新运行一遍嘛?运行完之后我再来看策略报告,一零一九零,对不对啊?当然这是现在,因为是没有持仓啊,如果有持仓,因为这行情还在走,那他理论上会有些变化,但现在是因为已经平仓了,所以你,你怎么刷? 无论你怎么刷新,你这个运行多少遍,你哪怕关机以后再重新运行它的这个信号都应该是要不变,这才是对的啊。 当然如果你的信号什么都正常,那你要去查这个数据是不是样本,是不是一样,是吧?比如我现在是从哪天开始的,那么下次关机以后开始,可能这个样本书又发生变化了, 所以这个各种 t b 问题的,无论是提出问题也好,还是解决问题也好,其实你都少不了要去这个对 t b 的 这个 这个各种运行机制,你要有一个非常深的了解,所以我我个人是认为今天我讲的这个内容呢,呃,说实话,听起来我不知道多少人能听懂啊,就是说可能大家听起来也许会感觉到有些吃力,那么 那么对新手来讲,要听这堂课完全听懂,我不知道难度大概有多大,因为我我也说实话,没办法, 准备时间还是不够啊,我没办法举出那种非常非常有,有又生动又有趣,又能够这个说明很恰当的说明问题的这个例子。所以我只是先把这个这两种策略的一个大概的一个情况跟大家讲一讲。 这些内容呢,我按照我的理解,我认为是应该在呃, tb 的 各种培训教程啊,就是量化的这一块啊,尤其是涉及到编程的这个这个教程当中呢,我认为是应该放在非常前面的位置来介绍的。但是呢, 非常麻烦的一点是什么呢?这些东西的理解可能又对用户来讲又有一点点难度, 所以这个是一个比较矛盾的事情啊。就这个事情,我觉得本来应该放在最前面的地方来介绍,下载完软软件,把一个环境搭建完之后,讲量化策略的运行和编辑的时候,我觉得就应该介绍这部分的知识,因为 今天这个知识的介绍给用户有一个非常大的一个,一个解决问题的一个一个地方,在什么呢?就是如果用户能够很好的理解 图表策略和 a 函数策略它们之间的这个本质的差别的时候,你就会发现你想把 a 函数的一些那个实时的东西和图表函数结合起来的想法是 几乎不可行的啊,几乎不可行的啊。这个原因就是我们刚才已经讲了好多遍的,就是我实时能获取到的东西,等到历史的时候他没有办法获取到,这就是这个问题的关键啊。那实际上我们公司的这个 好,那这个例子呢?因为今天呢,我不想讲代码,实际上这些代码我我都写好了啊,就是,呃, 这个其实也很简单,就是你在大周期上面运行一下,然后小周期上就把大周期的那个数据读过来,然后跟在小周期上面的产生信号,那其他的处理就跟你在一个周期上处理一模一样,那这样你就可以做到秒周期的进场,是吧?这就是图表 策略,通过这种跨周期的方式其实可以实现一个非常强大的一个功能,它唯一的缺点就是历史回测的时间稍微短了一点啊,稍微短了一点。 好,那我们在这个例子,我们到时候再看那个,如果大家有什么疑问,等到大家提问的时候,我再来给大家这个,呃,再来更深的讲解啊。本来呢就说我,我本来是想那个 就是通过录屏的方式把这个回放的这个速度啊,把它,把它调快一点,因为我现在虽然我也是在回放状态在回放,但是因为我这里面呢有一些处理,所以我这个速度呢,嗯, 好像也也不能提的太快啊。一个提快之后呢可能,呃一些 tick 的 处理呢?会不会漏数据?这个我不是特别确定啊,就是我怕有这种问题。还有一个就是,呃,我自己在测试过程当中确实速度快了之后,他有时候软件有点有点这个, 这个不知道是这个负荷太重还是怎回事啊?就是会有点有点问题,所以我现在也只敢用常数在这在这放啊。但这个好处是可以来回,你可以回到某个点重新开始,你去看一些信号,他是不是处理对了 啊?这个测试我测了,我也调试了很长时间,因因为中间有一些出乎我意料之外的一些各种各样的问题啊。 呃,其实这个就是做策略的过程啊,这个你对 a 函数的理,这个机制的理解是一方面,那么你对策略的理解又是另一方面,那么这里面是有太多东西要要去处理了啊。 好,那我们再回到 ppt 里面,呃,我再把剩下的一些内容,呃,再再讲一下。好,那,那刚才是讲了这些啊,这些, 好,那接下来呢,我想做一个,呃呃,也算对今天的内容做一个简单的总结,然后呢 对未来做一个一个一个期待吧。因为是这样的啊,为什么我今天选择这个时间我要去讲这个内容呢?其实这个内容我我想了很久啊,本来因为我刚才讲了这个内容,我认为应该是在 t b 的 呃量化的使用或者编程的 整个培训教程当中,我觉得应该是在应该前置的一个位置啊,应该在很很开始的位置就要讲这个东西,至于大家懂不懂,可以在使用的过程中慢慢去体会,但至少要有这个概念。 那,那为什么今天这个节点我来讲这个东西呢?呃,是因为我觉得这今天算是一个我认为的一个分水岭啊,就是一个,也算一个呃即将到来的一个节点吧。因为我们公司呢,呃即将推出一套 呃,除了图表交易指令和 ai 数字交易指令之外的一个新的一套交易指令,那么它的 他的这个基础呢?实际上,呃可以认为借鉴呢?这个图表交易指令的这个跨周期的这部分,呃功能,但是把这部分做的 更加异于使用啊。呃,公司也对这个专专门做了一些开发啊,做了一些,嗯,花了还花了不少精力来做这个事情,他的优点是功能应该也足够强大。就是,呃,因为图表交易指令是这样的啊,图表交易指令功能够用 好实现,就是你写写代,写代码简单,可以回测,可以优化性能,效率比比较高啊,性能教育效率比较高啊,就他基本上是一个比较均衡的一个状态,但他的缺点就是信号闪烁 对编程限制比较大,就像我刚刚说的,实时的时候你可以处理很多东西,但是你到到历史就不能用了,到历史回溯就不能用,所以这个你就要考虑,就是这个信号闪烁可能带来就是你在策略实现上面你会有一些 不得不做一些让步啊。还有一个就是实时交互的能力比较弱,本身他交互能力并不弱,但是你实现了也没用,是吧?一旦回到历史,你就这些东西都都用不上,所以就没办法更好的来利用这个实时交互的能力。 这是图标函数的这个缺点啊。优缺点?那 a a 函数的优点呢?是功能、性能都是都是杠杠的啊,都是最强的,那么策略实现能力也强,就什么样的你各种各样的,是吧?要做个性化的处理,理论上 a a 函数应该都能做啊,只是工作量的 大小的问题。还有一个就实时交互比较方便,他可以读账户,读这个橱窗是吧?读什么数据库读什么都可以啊,你要你要读基础数据,他想读什么都可以读,因为因为他就是实时处理的,对吧?他不存在历史回车的问题, 当然他的缺点也很明显,不可回测,不可做优化,是吧?而且编写复杂,呃,调试也很困难啊,这是呃图表交易指令和 a 函数交易指令的各自的优缺点。那我们即将推出的这套交易指令呢?它的功能足够强大,应该说它的功能应该比 比图表还要强一点,比 a 函数可能稍微弱一点,是吧?策略实现也同样容易,而且甚至比这个图表还要容易。 另外他的交互能力也比较强,因为他可以通过,他实际上是利用了我们这个刚刚演示的图标 策略的这个跨周期的这一块,只不过他的跨周期他不需要你专门去跨周期,他相当于内置了一个一个基础周期的一个运行机制啊,所以专门为这个呢,把这个机制改了一改,所以这个他应该交互能力也是比 本身的图标交易指定要强的,而且关键的一点,新手上手比较容易,甚至可以说特别容易啊。当然这个因为这个版本还没有推出,那我们现在也是内部在测试,所以呢,嗯,而且这个整个这一套呢,他的 它的性能效率比是最高的,因为它性能很强,所以效率又很高,又不像 a 函数这么复杂啊。 a 函数是非常复杂的,所以不到万不得已,我一般也不愿意用 a 函数去写啊,除非是没办法啊,图表实在实现不了啊。 那实际上呢?有些图表利用这个,刚才我像类似我刚才的秒图做一些实时交易,他也能实现类似 a 函数的功能。那如果是这样的,我都建议用图表来做,不用 a 函数来做啊, a 函数还是还是工作量比较大的,还是比较复杂的啊。那今天呢,所以我说为什么是一个分水岭呢?因为 这这套东西本来是应该在培训教程的最开始就要讲,但是因为我们软件的更新说实话也是比较频繁的,所以其实矿的三的 这个培训视频和培训教程我们就有点缺失。当然了,这个大部分的原理,框的三和框的是实际上是相同的,只不过是界面有点不一样,所以如果在框的三的界面上再重新录一遍呢?这个效率其实我觉得也是不高的,只是 解决了客户一些看到这个界面好像不太对的这个问题啊,那当然有时间本来也是要把矿的三的这个教程是要是要准备啊,近期也是准备稍微梳理一下,整理整理,该该补的要补一补啊,那么但是呢,因为我们 不久的将来,我们公司就会推出这道新的交易指令体系啊,啊,只要交易指令系统,所以呢,我想后面的这个培训教程呢,可能会 以新的这个交易指令为主,然后矿的三的为辅,是吧,那么 a 函数只是不到万不得已,我们不建议大家去使用啊,是这么一个状态,所以我说今天,呃,先抛砖引玉,先把这个老的系统 各自的问题先扔出来,然后呢我们接下来后面呢推出新的这个交易系统之后呢,交易指令之后呢,我们会详细的介绍这个新的指令,它到底有什么这个 优点啊,这这些我们说的这些优点他到底怎么体现的是吧?那是接下来后面这套系统推出之啊,这套指定推出之后呢,我们重点要给大家介绍的啊, 那么这个就是我们今天那个课程的主要想跟大家探讨啊和剖析的啊东西。呃,感谢大家的收看,然后这个呢是我的 呃,企业微信二维码啊,如果大家有什么问题呢,可以扫码加我,然后有什么问题的可以给我留言啊,我会在第一时间啊,只要是有空我都会回复大家。好,那我们这个今天的内容就到这里啊,感谢大家收看。