下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序化交易实战连载7:策略编写陷阱未来函数1. 未来函数概念介绍未来函数是指引用未来数据的函数,在策略中的表现形式也就是引用未来时刻的信息作为判断条件,对现在时刻下达开平仓指令。换句话说,函数利用了现在还不知道的信息,产生交易信号。这在历史后验中是完全可以实现的,因为在程序化交易的历史后验中,我们从一开始就拥有所有的历史数据。而且,Bar 驱动策略是基于 Bar 信息开发的策略,如果不加以注意,很容易在编写策略时出错,引用未来的信息。但是在实盘交易中,行情是按时间顺序到达,在“现在”这个时间点上,我们只能拥有这个时间点以前的信息,也就是过去的数据,不可能获取这个时间点之后的信息,即未来的行情。
2、因此,我们必须确保在历史后验中也遵循这一规则,发出的每一个交易信号都是基于该时点以前的信息,而并不包含该时点之后的信息,以避免这种“偷窥未来”的错误。与偷价格类似,未来函数也一样会为我们带来一条完美的后验曲线和漂亮的后验数据,但是在实盘使用这个策略之后,它会立即现出原形,丧失盈利能力。下面我们分别举几个未来函数的例子,并分析其发生的原因。原因解析与偷价格类似,未来函数的表现形式也有很多,但归根结底,原因只有一个:我们使用了未来才能知道的信息作为现在的判断条件或者开仓条件。这并非是我们根据现在的信息有效地预测了未来,而是通过bar后验的机制,偷看到了未来的信息,并且加以利用。我们也通过几个例子来
3、仔细分析一下未来函数出现的原因。案例一上面这段代码是Q语言编写的一段开仓条件:如果上一根bar的收盘价高于长期均线,且当前K线收阳,也就是说这根bar的收盘价大于这根bar的开盘价,则以这根bar的开盘价做多。这就是一个典型的未来函数。问题在于,下单价格是当前K线的开盘价Open0。所以“现在”这一时间点就是当前K线开盘的一瞬间,而判断条件中使用了当前K线的收盘价Close0,也就是“未来”的信息。这相当于我们知道了这根K线收阳之后,通过时光机再回到开盘的那个时间点进行下单,这样当然可以盈利。上图就是这个策略的后验曲线,股指年化收益率达到500%,而且收益曲线极其平滑,几乎没有回撤。但非常遗憾
4、,这在实盘交易中显然是不可能实现的。因为我们在开盘时是无法知道收盘价是多少的;而等到收盘以后,虽然我们已经知道了收盘价是多少,却再也无法以开盘价成交。这是用Q语言编写的一个多头止盈的模块,当头寸价格上涨超过0.5%时,一旦从最高点回撤0.8个点即止盈平仓。这段代码中也存在未来函数。在历史后验中,由于使用的是bar驱动的后验机制,在这根bar执行主程序的时候,我们就已经知道Open0,High0,Low0和Close0的最终值。但是在实盘中,只有Open0是在这根bar开盘的时候就固定下来的,而High0,Low0和Close0在这根bar结束之前,都是不停变动的。只有在bar结束之后,才成为固
5、定的值,并且当新的bar到来之后立即变成High1,Low1和Close1。上面这段代码相当于在这根bar还没有结束的时候,就已经使用了这根bar结束之后才能知道的信息作为判断条件,那么下面K线图中所有的平仓点位都接近每根bar的高点也就不足为奇了。然而,一旦我们实盘使用这个策略,程序会这样运行:在前面几个条件都满足的情况下,在bar内第一次出现比0.8个点更大的回落时,就会触发Close0 = UpperBand刚好得到满足。而一旦满足,该条件便会固定下来,无论接下来价格如何变化,都不会改变。在此过程中,我们没有引入任何未来的信息。因此,这段代码中不存在任何未来函数。相反,如果我们以High
6、0 = UpperBand作为判断条件,就会落入未来函数的陷阱。因为,在后验中是以整根K线的最高价与UpperBand进行比较,而实盘中会在刚开盘时就将当时的最高价与UpperBand进行比较。有可能出现这样的情况:K线开盘时High0 = UpperBand成立,导致实盘中策略开仓;但收盘时High0 = UpperBand不再成立,导致后验中策略不开仓。案例四在上面的代码中,在判断条件中同时使用了High0和Low0,这也会导致未来函数的错误。因为在实时行情中,Low0 = UpperBand条件发生之后,等到这两个条件同时满足的时候,我们设定的开仓价格已经不复存在了。而在Bar后验时,我
7、们并没有考虑到时间的先后。相当于我们在High0 = UpperBand的一瞬间已经知道了未来会触发Low0 = UpperBand和Low0 = LowerBand这两个条件不都被满足时,这段代码不会出现问题。但是,一旦同一根bar内这两个条件都被满足,就会引入未来函数。在实盘中,程序执行的是开仓条件先被触发的代码。如果先触发了Low0 = UpperBand,然后开多仓。这意味着,在后验中,我们在开空仓条件成立的时候,知道了未来开多仓的条件也会成立,所以没有开仓,并且等到开多仓条件成立的时候开了多仓。这相当于将未来的信息引入了判断条件,造成后验与实盘不一致。总结综上所述,未来函数也是一个非常容易导致策略的历史后验与实盘表现不一致的陷阱。与偷价格相比,未来函数更加隐蔽,更不容易被人察觉,对后验真实度的影响也更大。因为通过在K线上画出辅助线的方法,结合K线上的开平仓信号,大部分偷价格的问题都可以直观地看出来。而未来函数则不同,它的出现是由于策略在设计逻辑上出了问题,因此无法通过观察K线直接判断,而只能通过检查代码的逻辑来识别。这个问题在比较复杂的策略中更加容易出现。所以,当我们在看到很平滑的后验曲线之后,一定要仔
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年国产操作系统与AI PC软硬件生态协同发展
- 2026年推动跨境电商 海外仓扩容升级:内外贸一体化新动能培育
- 2026年电池管理系统BMS核心算法与故障诊断
- 2025-2026学年上海延安中学初三(上)期末化学试题试卷试卷含解析
- 河北省邢台市英华集团初中部市级名校2026届初三下学期猜题卷生物试题试卷含解析
- 重庆市第二外国语校2026年初三第一次大考生物试题含解析
- 2026年湖南省岳阳市汨罗市弼时片区初三二模生物试题(详细答案版)含解析
- 江西省吉安市朝宗实验校2025-2026学年初三4月阶段性考试化学试题含解析
- 2026年河北省石家庄市新乐市初三下期末生物试题试卷含解析
- 浙江省新昌县联考2026届重点高中联盟领军考试4月初三化学试题(文)试题含解析
- 口腔冠髓切断术
- 脑梗的观察与护理
- 坐校车安全教育
- 健康类直播课件
- 2025年高校教师资格证之高等教育法规题库(综合题)
- 学校食堂员工培训课件
- DB11∕T 1448-2024 城市轨道交通工程资料管理规程
- 房屋测绘单位管理制度
- 热电厂中水供水工程可行性研究报告
- 2025年中考数学压轴专题汇编(江苏专用)压轴专题09定角定高模型(原卷版+解析)
- 开票提额合同协议
评论
0/150
提交评论