龙听期货论坛's Archiver

龙听 发表于 2024-8-22 10:46

手把手教会你构建自己的交易系统(四)

[font=宋体][size=20px] 很多人都知道交易成功的三个要素。[/size][/font][b][color=#FF0000]第一要素就是方法[/color][/b][font=宋体][size=20px],也就是这里所讲的交易系统。[/size][/font][b][color=#FF0000]其次就是资金管理[/color][/b][font=宋体][size=20px],最简单地说,就是[/size][/font][color=#1206FF][font=宋体][size=20px][b]止损[/b][/size][/font][/color][font=宋体][size=20px]([/size][/font][size=20px]Stop Loss[/size][font=宋体][size=20px])和[/size][/font][b][color=#2902F6]分仓操作[/color][/b][font=宋体][size=20px]([/size][/font][size=20px]Position Sizing[/size][font=宋体][size=20px]),我稍后会谈及。[/size][/font][b][color=#FF0000]最后是心理[/color][/b][font=宋体][size=20px]。[/size][/font][p=30, 2, left][font=宋体][size=20px] 上周我做了一个分享,题目是《Mindset Development in Successful Trading》(成功交易的心智模式发展)。成功交易要素中的心理,在我的理解,只是心智模式的一部分。Mindset,在中文里没有直接对应的翻译。它的意思里包含有心智模式、思维习惯,以及心理行为的条件反射等等,在这里我将其翻译为心智模式。比如说,有人看见股价下跌,他直接的条件反射就是卖;而有人的条件反射就是买。这就是一种心智模式的反映。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px] 我曾经谈过我的反权威的观点。专业人士在大家眼里可能都是某些行业的成功人士,比如CMT(注册市场技术分析师)和CFA(注册金融分析师)。我没有瞧不起这些人的意思,我曾经也是他们中的一员。但是我发现,随便抓100个CMT或者CFA问问他们的投资收益,我几乎可以确定的是,他们中超过80%的答案可能都是亏损。也可能有一些不亏损的,那是因为他们根本就不交易。我为什么这么说?这是因为,[b][color=#FF0000]知识本身是没有生产力的,只有知识的正确应用才能带来生产力。[/color][/b][/size][/font][/p][p=30, 2, left][font=宋体][size=20px] [b]在交易中,心智模式发展的第一步,就是知识的获得也就是对交易的理解。[/b]在交易中,知识的获得有两种渠道:学习他人提供的知识(比如书本,参加培训等)和交易经验(从自己的交易经验中获得知识)。没有交易经验,学习再多的知识也没用。不学习,经验的累积将付出巨大的代价。[b][color=#FF0000]只有将学习和交易经验相结合,才会迈出正确的第一步。[/color][/b]经验很容易获得,只要坚持就好,可是学习呢?如果学错了方向呢?比如很多人热衷于跟庄,这就是典型的学错了方向。这个世界上各行各业中,成功人永远是少数。向对的人请教,看被验证过的经典的教材,是这个阶段的关键。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]随着第一步的深入,交易商开始有些收获,甚至在某几个年份里能够获得稳定的收益。这个时候,开始相信这个行业中稳定盈利是确定的,并且对自己开始产生信心。[b][color=#FF0000]自信是在交易中生存至关重要的因素。[/color][/b]自卑和自大往往是孪生兄弟。[b][color=#FF0000]要相信自己,懂得成功人士之所以成功不是因为他们和自己不一样,而是因为他们失败的次数比自己多。[/color][/b]我最喜欢的格言是乔丹的“My Pain is my Motivation”(我的疼痛就是对我的激励!)相信吧![b][color=#0609FD]如果你失败得足够多,你就是明天的交易之神![/color][/b][/size][/font][/p][p=30, 2, left][font=宋体][size=20px] 第二个阶段的核心是“相信”。而第三个阶段,是第二个阶段发展的必然结果,[b][color=#FF0000]承诺与投入[/color][/b]。到这个阶段,交易商必然是全职经营,而且全身心投入。第四个阶段,我称为[b][color=#FF0000]个人成长的中间点[/color][/b]。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px] 看过我文章的朋友,发现我经常强调个人成长和人品。人品修炼是个人成长到后来的必然阶段。可是什么是个人成长呢?我举一个不太恰当但方便理解的例子。比如说有人就是喜欢追涨杀跌,后来发现自己的本金越来越少,于是决定买低卖高。当股票跌的时候,他需要克服他以往的思维习惯,需要克服恐惧,这时他下决定买的时候,需要勇气和冷静。但是买一次,又亏了。第二次,鼓励自己买低,又亏了。痛苦的决定,第三次,这次盈利了。无数次的痛苦,让他最终懂得了低买高卖的快乐。但是大家看看这个转变过程,对于这个交易商来说,是痛苦的?还是快乐的?这个转变是迅速的?还是渐进的?答案显而易见。所以我一直强调,[b][color=#FF0000]如果你在交易中没感到过痛苦,你就不会有个人成长。而智慧,来自于痛苦。如果对交易没有过痛彻心扉的体会,你绝对无法成为顶尖高手。[/color][/b][/size][/font][/p][p=30, 2, left][font=宋体][size=20px] 其次,我们眼中所看到的世界不是真实的疆域。我们每个人都应该懂得自己的无知和局限。从不同角度看到的世界,所反映到我们心中的世界,和真实的世界是不同的。瞎子摸象的故事,大家都知道。有人说,象是一堵墙;有人说,象是一条蛇;有人说,象是蒲扇;有人说,象是柱子。这些人都对,也都不对。他们的说法,只是来自于他们自己的看法。由此想到,[b]我们眼中每天看到的K线图,真的就是股价的波动吗?一个最高价,一个最低价,一个开盘价,一个收盘价,加上成交量组成的图形,真地反映了股价的波动吗?也许,同样的日K线,当日日内走势完全不同。可是我们在分析的时候,却一视同仁。对这样的数据,经过变换,生成了成千上万的指标,就算不考虑其滞后性,这样的指标给出的信号,难道就能预测上涨或下跌?这显然有相当的局限性。[/b][/size][/font][/p][p=30, 2, left][font=宋体][size=20px] 再次,我们所看到的交易对象,其上涨下跌,完全是K线在我们心中的映像。而我们的反馈,来自于我们的自身。所谓心中是佛看人就是佛,所谓心中是粪看人就是粪。[b][color=#FF0000]当心中满是贪念,你看到的股价走势,永远都会是涨。当心中不再预测股市的时候,恭喜你!进入了下一成长阶段。[/color][/b][/size][/font][/p][p=30, 2, left][font=宋体][size=20px][b]心智模式发展的话题,是永无止境的话题。活到老,学到老,是证券交易市场唯一的生存之道。[/b][/size][/font][/p][p=30, 2, left][font=宋体][size=20px] [b][color=#FF0000]最后我想强调的是积极正面的交易态度。[/color][/b]在无数次失败中看到成功的希望,这是所有成功交易商所必需具备的。[b][color=#FF0000]我一直以为,无法让他人快乐的人是没有资格快乐的。大家可以想想我这句话。[/color][/b]一个每天抱怨自己苦命、抱怨中国到处是贪官的,不懂得自己的幸福所在,也无视中国过去30年创造的经济奇迹,不懂得面向阳光就看不见身后阴影的哲理,我对他在证券市场的前途持保留态度。[b][color=#FF0000]积极正面的态度也是个人成长的一部分。[/color][/b][/size][/font][/p][p=30, 2, left][font=宋体][size=20px]下面我继续谈交易系统的构建。前几次,我用的是SPY的5分钟分时数据,主要是希望大家熟悉Excel及其公式。从现在开始起,我将采用a股数据。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]安装好通达信的朋友,请进入通达信。如附件1.jpg所示,选择600028中国石化。主图指标选择5日、30日和250日均线。副图指标选择macd(12,26,9)和ATR(14)。将其导出为Excel格式。见附件2.jpg所示。然后将表格数据进行整理,去掉我们不需要的行列,将spreadsheet也就是日线数据表名字改为daily。如附件3所示。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]
[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]很多人喜欢使用指标,甚至自己定制的指标。下面我就简单地讲述在Excel中如何构建一个指标。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]之所以Excel可以作为一个开发平台,是因为Excel提供了非常灵活和简单的编程平台:Visual Basic for Application,或者简称VBA。VBA是以BASIC语言为基础的编程语言,所以非常容易上手。对于所有Excel用户来说,如果他们渴望成为高级用户,VBA编程是必须的。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]打开附件中的600028.xls,按ALT+F11,进入VBA编程环境。双击工程模块Functions,大家会看到如下公式:[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]Function TrueRange(ByVal high As Double, ByVal low As Double, ByVal previousclose As Double) As Double[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]Dim returnValue As Double[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]diffHighLow1 = Math.Abs(high - low)[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]diffHighLow2 = Math.Abs(high - previousclose)[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]diffHighLow3 = Math.Abs(previousclose - low)[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]If (diffHighLow1 > diffHighLow2) Then[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]   returnValue = diffHighLow1[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]Else[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]   returnValue = diffHighLow2[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]End If[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]If (diffHighLow3 > returnValue) Then[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]   returnValue = diffHighLow3[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]End If[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]TrueRange = returnValue[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]End Function[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]这是指标TrueRange的实现过程。如果有不懂的,先去了解TrueRange指标是如何计算的,然后再来看VBA是如何实现的。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]好了,咱们再进入表格调用这个指标。在ATR.ATR列的右边单元格输入TrueRange。因为TrueRange指标需要今日的最高、最低价和昨日的收盘价,所以我们选中单元格O3,输入=truerange(C3,D3,E2),然后下拉使该列所有单元格都采用同样的公式和对应的引用参数。大家可以看到,我们这里用函数计算的结果O列和通达信的计算结果M列,在开始的计算中有小数点的区别。但是后面的数据都一样了。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]这里采用的VBA编写函数的方法,是Excel最有魅力的一部分,也是VBA的中级使用。对VBA不熟的朋友,可以多多采用记录宏的方法,然后学习宏的编写。虽然从记录宏中学习VBA的方法,学到的不见得是效率最高的编程方法,但却是最简单的入门方法。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]有人可能觉得每个指标都要写函数,过于麻烦。我的观点是,因为我们在写函数的时候,指标的细节必须重点关注,所以会帮助我们对指标的理解。如果将所有编写好的指标公式放在一起,作为自己的专用指标库函数,那么日积月累的工作会让自己后面的工作越来越简单。如果希望不编写函数而直接调用市面上现有的指标,我自己也有专门的解决方案。但那是VBA的高级用户的学习内容了。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]请大家对这个系列的文章多给些反馈。是太容易了?还是太难了?拜托请不要只说谢谢分享!给些反馈就是对我的谢谢!谢谢大家的支持![/size][/font][/p][p=30, 2, left][font=宋体][size=20px]很多人对交易系统有神秘感,其实神秘感的来源主要是因为不懂什么是交易系统所以好奇导致。任何人都可以根据任何买进卖出信号构建自己的交易系统。但是,一个交易系统需要投资者投入大量的时间和精力。那如何判断一个交易系统的好坏呢?[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]今天我给大家讲讲交易系统最重要的评测指标。市场上评测交易系统的指标有很多,我个人最喜欢的是wealth-lab的系统构建平台。为了方便大家了解交易系统的本质,我将wealth-lab里面的交易系统中的评测指标全部做了翻译和解释。这些指标希望大家记住,甚至要背熟。为下一阶段的工作做准备。[/size][/font][/p][p=30, 2, left][size=20px][font=宋体]Starting Capital[/font] [font=宋体](初始资金)   系统测试开始时的全部资金[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Ending Capital[/font] [font=宋体](终止资金)     系统测试结束时的全部资金,包括账户内的股票以收盘价计算的价值[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Net Profit[/font][font=宋体](净利润)            全部的利润。这是净利润的总和,已经减除掉每笔交易的佣金和slippage。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Net Profit %[/font][font=宋体](净利润%或者投资回报率)   净利润占初始资金的百分比[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Profit per Bar[/font][font=宋体](每根K线的利润)   [/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]全部的净利润除以进出场所经历的K线根数。和中长线投资相比,每根K线的利润,对不同的交易系统之间的效率比较提供了公平的指标。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]如果和中长线投资系统比较,我们通过每根K线利润就可以直接比较其交易系统的盈利效率。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Annualized Gain % (Annual Percentage Return, APR[/font][font=宋体],年投资回报率)   [/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]年投资回报率是复合年增长率[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Exposure (%[/font][font=宋体],暴露风险)       简单地说,就是持仓所占全部账户资产的百分比,也有人翻译为投资比例。 我个人理解,所持仓位就是暴露在市场的风险。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Total Commission[/font][font=宋体](佣金总额)   全部模拟交易的佣金总额。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Return on Cash[/font][font=宋体](现金回报)   系统测试期间,现金的全部利息回报。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Margin Interest Paid[/font][font=宋体](所付融资利息)   [/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]测试期间的全部融资利息支出[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Dividends Received[/font][font=宋体](所得分红)   测试期间的股票分红总额。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Number of Trades[/font][font=宋体](交易数量)   买卖交易的总数加上目前的持仓;对于中长线投资,这等于买卖的股票支数。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Avg Profit (Loss)[/font][font=宋体](平均利润/损失)[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]减去佣金和slippage后的每笔交易平均利润或亏损。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Avg Profit % (Loss %)[/font][font=宋体](平均利润/损失率)[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]减去佣金和slippage后的每笔交易平均利润率或亏损率[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Avg Bars Held[/font][font=宋体](平均持仓时间)[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]每笔交易平均K线根数,对于日线来说,就是平均持仓天数。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Win/Loss Rate[/font][font=宋体](盈利/亏损率)   交易中盈利交易和亏损交易所占全部交易百分比[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Gross Profit/Loss[/font][font=宋体](毛利润/亏损)[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]全部盈利交易带来的利润或者全部亏损交易带来的亏损,减去佣金和slippage。账户中当前仓位的账面利润和亏损不计入盈亏。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Max Consecutive[/font][font=宋体](最大连续盈利/亏损次数)[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]               [/font][font=宋体]连续盈利次数的最大值或者连续亏损次数的最大值。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Max Drawdown[/font][font=宋体](最大系统回撤$)   以账户资产(资金和股票净值)计算,最大峰值到最低峰值之间的下降金额。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Max Drawdown Date[/font][font=宋体](最大回撤日)   最大回撤结束的那一天。[/font][/size][/p][p=30, 2, left][size=20px][font=宋体]Max Drawdown %[/font][font=宋体](最大回撤$)   以账户资产(资金和股票净值)计算,最大峰值到最低峰值之间的下降%。[/font][/size][/p][p=30, 2, left][font=宋体][size=20px]上面的内容中有一个slippage,不能简单翻译。有人翻译为滑价差,让我看得摸不着头脑。slippage,是指我们决定以当前价格市场价成交,可是实际成交价却不同于我们看到的市场价。这两者之间的价差会增交易成本,被称为slippage。因为找不到对应的词汇,所以专门在这里做个解释。[/size][/font][/p][p=30, 2, left][font=宋体][size=20px]大家一定要记住这些名词的意思,这样到后面才不会困难。[/size][/font][/p]

页: [1]