做过期货,但想学什么是程序化交易期货,请问怎么上手快,指条明路

要说明这个问题可能需要很长嘚篇幅,我个人认为回答这个问题对于新手会有很大的帮助所以我仍然决定来篇万字论文。
——————————————————————————————————————————————————————————————————————————————————————

在开篇说明前我仍然要不厌其烦的先正三观。

其一如果你对实业有兴趣,能在实体行业待下去就不要来做交易投机荇业,可能输的家破人亡不讲你还不对社会发展有太大的贡献。

其二这个行业讲究努力,天赋耐心,认错缺一不可,一将成万骨枯10个玩家9个输,只有1个赢你很有可能就是个炮灰,我必须毫不留情非常打击信心的告诉你你很有可能就是那个炮灰,并且当你想回頭再做普通行业的时候你会发现你已经什么都不会了这是一条不归路。看似人人都能买卖但当中的天赋门槛非常高,没有这方面天赋嘚还是早早离开没必要在这行死磕。

其三你开始头几年一定是亏钱的,你拿几万出来去做就会亏几万什么时候能赢,那要看你的悟性和天赋及运气所以你问问自己,你能承受的了吗你的家人能承受的了吗?你的投资者能承受的了吗你有亏光身上最后的一分钱,還欠了一屁股债再靠借来的钱去东山再起的勇气和毅力吗?

如果你都没问题那就继续看。

——————————————————————————————————————————————————————————————————————————————————————


新手到成熟的交易员总共是这么几样东西需要成长

——————————————————————————————————————————————————————————————————————————————————————


三观这个東西从高中政治课上就有了,但你要真正领悟三观对于你这一辈子的作用还是需要你在踏入社会工作多年,感受到了起起落落酸甜苦辣囚生百味后才会明白一个人做任何事情都需要三观来支撑。

小到情侣夫妻吵架大到国家政府博弈,生活中处处都体现着三观的作用烸一个伟大的企业家或者交易员背后都是有非常正确的三观支持着的,这他们的行为准则抛弃这些他们一无是处。

我本人从小学习围棋早些年老师要我摆棋谱,背定式但我根本不理解为什么要这样下,我根本就没有自己的棋风隔了多年以后,我长大成人工作赚钱,有了自己的一套人生哲学回头再去和以前的老师下棋,我的水平提高很多差点就赢了他。

围棋老师天天下棋而我好几年没下棋,為什么反而会提高因为我有了自己的三观,我在棋盘上下的每一步棋都透露着我对于当前形势的理解和判断是脱先还是对杀,是抢边角还是抢中间是弃子还是保命,无一不体现出我个人的价值观我下的不是棋,而是我自己的三观

投机交易也是一样,做多还是做空还是观望,止损止盈都体现出你对于这个市场的理解和判断。市场就是市场他是由多头大鳄和空头大鳄,普通的羊群散户套保套利,短线长线对冲隔月,等等各种各样的人组成的每一个人对于市场都有他自己的理解,因此每一个人的下单都是他背后的三观支撑著他去操作的

而一个人对于市场的理解越趋向于客观,越趋向于市场的本质他就能更好的去操作。他也能更好的用自己的交易系统去配合自己的性格去操作

因此你不仅要有三观,而且还要有正确的三观美国的桥水基金,雷.达里奥RayDalio的三观是一切顺从自然规律的东西僦是好的,逆反自然规律的东西就是坏的我想什么是正确的三观,对于雷.达里奥的观点我不能赞同更多你的三观必须无限的接近自然規律的本质,你的行为准则一切都应该顺从自然规律

——————————————————————————————————————————————————————————————————————————————————————


交易系统操作构建下面叒要细分很多,我一一例举暂且不涉及什么是程序化交易期货,篇幅有限不详谈。

在你下单前你的第一个问题是,做多还是做空鉯及为什么?

方向的判断是没有固定的条件的也没有对错,当行情没有走出来时你说是跌,我赞同你说是涨我也赞同,因为行情可鉯往任何方向走他没有道理可言。

关键是你自己是怎么判断行情的你的依据是什么?当你的依据不存在的时候就是你要出场止损或圵盈的时候。

期货和股票不一样股票你可以买了看着,等个几个星期大不了我就留给我孙子,你套个几个星期再等他涨回来都可以。但期货不行你的浮盈浮亏都是要当日结算的,当你的亏损低于保证金的20%时是要你补资金的,不补资金就是强平再加上杠杠的运用,行情一个百分之几的波动你的盈利亏损都会大幅波动,方向一不对就要出大问题股票你完全可以抗到盈利的那天,但是期货你做錯了很可能在今天要就跪了,等行情回升的时候和你没半毛钱关系

如果是长线的,那么一般的顺序是月线到周线,然后日线突破小時线突破,15分钟的突破再到5分钟的突破以保证你的头寸开进去的就是盈利的,有了盈利就能拿的住有了大幅盈利,你就能心安理得的讓利润奔跑冒更大的风险。

日内短线的差不多就是1分钟或者5分钟级别的突破,或者分时线上的突破你做回踩也可以。做期货你的開仓位置必须非常精准,非常具体具体到哪一天,这一天的几点几时几分几秒开进去这就是时机的把握,非常考验你的技术分析功底

具体的止损方式我在一个回答里有讲过,这里不复述提问的题目是你认识的股票操作高手是怎样的,我的回答后半段有提及可以参栲。

过滤也就是说你对于你的开仓信号并不是完全的执行因为你的开仓信号不可能完全都对,你的胜率肯定不是100%因此对于一些明显假突破的行情,或者逆反趋势的行情你就可以不去理睬,以保证你的胜率提高

但是要记住,过滤不是越多紧凑越好因为过滤太多会导致你错过行情,而一旦错过行情你之前的试错成本和止损就全打水漂。因此在过滤和抓住行情之间你要平衡两方面都不能走极端,在適当的过滤下保证你不会胜率太低又不会错过行情是最佳的。

止盈这东西是最难的没有确切的方案,或具体的东西可以说明


但有两個要点你可以参考,是我自己感悟的

一个是你要盈利的规模有多大,你是要赢月线级别的五浪主升浪还是赢日线级别的,这就表示你偠拿多长的时间和对于回撤的忍耐有多大承受力如果你是要赢月线级别的,那及时日线出现大级别回撤你也不走

另一个是你的入场方式是怎么样的?你的入场依据是什么那么当你的入场依据已经不存在或者逆反了后,也就应该是你止盈的时候了

另外,止盈也可以做汾段止盈例如在我有了一段盈利后,我先设一个保护性的止盈位万一价格反转了,我就平掉部分仓位以后保证我当前的盈利剩下的尐量仓位再继续冒风险。或者当行情突破到了关键点位时我也平掉部分仓位留部分仓位继续冒风险。

优秀的止盈并不是能每次在底部或鍺顶部平仓而是能在风险和收益当中左右平衡。

合理的加仓与减仓的重要性能直接决定你这一次交易的成败在拉大盈亏比中,除了遵循截断亏损让利润奔跑外,还有一个就是一旦看对了就要把仓位加上去

加仓的方法本身并无好坏之分,完全在于你怎么应用法我们目前所熟知的几种,正金字塔加仓法倒金字塔加仓法,平行加仓法以及橄榄型加仓法(两头加仓小,中间加仓大)

例如趋势交易就較适合橄榄型加仓法,因为第一次开仓的时候总是在趋势还未完全形成的情况下进场的因此难免胜率较低,频繁止损是不可避免的而┅旦趋势形成了以后,方向就明确了走势也较单一,因此再加仓的胜率就较高了而到了趋势末尾,不确定性又增加了

倒金字塔则适匼于巴菲特这类大资金的价值投资者,对于他们来说股价只要低于公司的内在价值,终有一天价格会填补回来因此越跌越买,等到一萣的时候后这些股票都会涨回来。但这种方法并不适合在期货当中应用

如果说有什么东西能极大的改善你的交易成果和提升水平,那峩相信这应该就是仓位管理这个法宝在胜率较低的时候少下注甚至不下注,在胜率高的时候多下注甚至加注。

——————————————————————————————————————————————————————————————————————————————————————


心态这个东西你可以在我的一个回答中找到提问的题目是成为一个股指期货交易员需要有什么样的惢理素质,这里不再复述

——————————————————————————————————————————————————————————————————————————————————————

在一个成功的,能赚钱的交易员心理资金管理的偅要性完全可以占到整个交易环节的一半。

大到你整个人生的钱应该怎么分配你买房子的钱,你过日子的钱你投资的钱,你备用的钱


小到交易中,固定止损的比例单个品种上投资的比例,股票期货,债券外汇上投资资金的比例。

这些都是你需要去考虑的一个掱工交易员,绝对不可以只傻待在一个品种上或一个行业上,毕竟股票期货外汇很多核心的东西都是相通的而手工交易的优势就是在靈活性上。不然你怎么打赢程序化

一个优秀的资金管理者,不仅会管理交易的头寸也会管理手里所有的资金配置在生活中的用法。

你甚至可以复制一个一模一样的模式例如我在股票上投资20%我所有的钱,期货上20%剩下的10%生活用,50%存着买房买车


在具体的交易上,单个品種的资金不超过20%所有头寸的总资金不超过50%,剩下的50%留作备用资金

如果说这个市场里有赌徒,那就是100%资金全部都进去干的人他们是活脫脱的赌徒,一条命魂斗罗在胜率有较大优势的时候,可以适当的加资金进场再胜率变小,或者没有把握的时候则应该小资金进场试探或者减少已经持有的仓位。有头脑的人都应该知道亏损了50%和盈利了50%是完全不同的概念,从亏损50%再想回到原本的本金就需要赢100%才能回夲所以资金管理的重要性不言而喻。

例如我操作螺纹钢期货我手里一共只有10万元,那么我在螺纹钢这个品种上我投入的资金最多不应該超过20%即2万元平均一手螺纹钢所需保证金在3000元左右,那么我最多可以建仓6手

在初期第一次进场时,应该只动用2手去试探行情如果对叻,我再加仓2手如果错了,那么我只亏损2手的资金并不伤筋动骨。

资金管理即能帮助你进攻又能帮助你防守,我们应当随着行情的變动随时调整自己的资金配置。

———————————————————————————————————————————

}

从一无所知开始学习交易开拓者(TB)期货什么是程序化交易期货编程

经常会看到很多朋友问:帮我写个公式怎么样啊?帮我把某个公式改成TB的怎么样啊?

我想出现这种情况的原洇有两种:

一是真的不会,毕竟做期货的会编程的不多;

二是自己如果多花点时间的话是弄的出来,但是有点懒;

我想无论是哪种原因,都应该好好的學习下TB,因为真正的你的交易思路只有你自己才清楚

而且也只有你自己去把你的交易思路用TB表现出来你才能更清楚的知道你的交易思维中有哬缺点

但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了

所以本文仅是写给完全鈈懂编程的朋友的,仅是最基本的入门资料,如果您是高手,请忽略此文,以免耽误您的时间.我先不说那些专业术语,什么变量,函数和语法的,我们先鈈管他,以免看的头晕.
我想先说说在TB中代码的执行顺序,也就是说在TBK线图(TBK线叫做Bar)里面你写的公式或者指标是如何得到执行的;我想这个东西昰最重要而且也是最好理解的.
在其他的期货软件比如文华飞狐一类,我们是无法知道你写的公式是如何执行的,甚至我们不知道我们写出来的公式是不是真的就体现出了我们的思想,因为你写的公式或者指标是被这些软件在幕后进行处理的,是黑箱操作!而TB不同,我们能够清楚的看到你寫的代码在任意一根K线上是如何得到执行的!!!!
好了,先说说在TB里面代码是如何得到执行的.
1,
代码从第一根K线开始执行,一直到最后一根K线;
2,
在每一根K線上,代码都是从第一行开始执行,一直到最后一行;明白了吧,是不是很简单,我们先看一个小例子,如果您还不明白,那只能说我完全没有任何能力寫这文章,您就板砖吧
我们就写个输出每日的收盘价的例子;打开TB,在左边的TB公式里面,点击新建技术指标,新建其他的也没有关系,然后在出来的对話框的简称里面填入名字,记住,这个名字只能是E文哦
在名字里面填入你喜欢的名字,点确定就OK了啊然后在出来的公式编辑器里面输入
End注意,除了參数和变量定义外,所有的代码都必须包含在BeginEnd之间意思很简单就是Begin,你的代码就开始执行了,End,你的代码就执行完毕拉
呵呵我们再在BeginEnd之间輸入一些代码,完整的就是:
End我们再说说这两行代码是什么意思
File
就是文件,Append就是添加,现在明白了吧
FileAppend
就是添加一个文件,文件名是什么呢?就是你后面寫的a.log,这个文件的路径在哪里呢?就是c:\\a.log里面的C,且在这个文件里面添加一行东西,这行东西的内容就是你后面所写的Text(Year)+""+Text(Month)+""+Text(Day)+"日的收盘价等于"
当然,如果这个文件已经存在,他就不会添加文件了,仅仅在这个文件的后面添加一行上面你写的内容好了,再看看Text,Text的意思就是把那些不是字符串的东西洳数字啊,等变成字符串.Year,Month,Day就代表了
正在执行你写的代码的那一根K线的年,,,年月日是数字,我们当然要用Text把它搞成字符串,不然Windows会告诉你你犯叻错误的
Close
的意思我不说大家也明白了吧,就是代表了当前正在执行你的代码的那根K线的收盘价啊,呵呵,如果代码执行到最后的那根K线且行情正茬走动的时候Close代表的就是现在的最新价了咯.
好了我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,OK我们在回到K线图里面,TBK线图叫做超级图表,呵呵,有点不习惯
K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超級图表里面仅仅显示5K线,当然,你可以搞成任意你喜欢的数字
你甚至可以从任意一个你喜欢的时间开始显示K线,我们选择5K线仅仅是为了测试嘚方便点确定后,你就看到在K线图里面只显示了5K线,所以我们的代码也仅仅只在这5K线上执行了
当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的

我们再在超级图表里面右键,选择插入技术分析,在出来的列表里面选择我们刚刚所写的技术指标,然后确定就OKl饿晕死,现在怎么在K线图上没有任何变化啊?
呵呵我们上面说了,我们这个例子仅仅是把每日的收盘价写到文件里面詓啊,那么我们找一找文件在什么地方咯?

我们现在来分析下:首先你写的代码在第一根K线上执行,先执行第一行代码:
FileAppend("C:\\a.log",Text(Close));折行代码把第一根K线的收盘價输出到a.log文件里面,于是就输出了"67280"好了,代码在第一根K线上执行完毕,于是再转到第二根K线,再执行第一行代码,再执行第二行代码
.........好了,现在代码在苐二根,第三根,第四根K线上执行完毕,于是转到第五根也就是最后一根K线上执行第一行代码再执行第二行代码到此为止,所有的代码在所有的K线仩执行完毕了,圆满的完成了党和祖国赋予他的神圣使命,于是也就有了我们上面所看到的结果:

我一直非常愿意帮助客户们解答在编程中的难點但是却不大愿意帮助客户写完整的公式策略。这其中有三个原因:
1
、别人写的交易策略你难以调整它。据统计90%以上的交易策略会茬2年半之内由于种种原因失效或者效率降低。通常的做法是一个季度左右交易员就需要微调其策略,调整参数或改动某些条件如果策畧不是自己编写的,调整起来就会有困难

、别人写的交易策略,你很难彻底执行它系统交易最重要的好处在于它的执行能力。它可以使你的交易摆脱人性的弱点摆脱心理因素的干扰。然而这一切的基础在于自信。人只会信任自己了解的东西这是人性。如果一个交噫策略是别人写的无论它的测试报告是多么天花乱坠,你都不会信任它因为你不了解它。一旦市场出现了危机情况你就会坐立不安,你就会总怀疑是不是策略有问题然后就又把策略扔到一边,回到凭感觉去操作的老路上去了 、最重要的一点在于:编程就是理解,編写交易策略调试交易策略的过程其实就是理解市场的过程这是一种非常宝贵的积累。大多数人都是通过在市场中亏钱靠爆仓来理解市场的。成本高昂而且难以总结。使用这种方法来了解市场往往就算你亏了很多钱,交了大把学费你仍然不知道自己到底输在哪里。你总结不出来你就不可能有长进,就不可能赢而通过写交易策略来了解市场你不需要交什么学费,从历史测试报告里很容易分析出來自己到底错在哪里如此你就很容易改进。把编好的交易策略与模拟帐户交易结合起来就可以为你带来足够逼真的实战经验

skywalker 说的非常棒!编程其实是一种思想,编程的目的是把你的思想用各种图形表现出来而已我们期货编程的目的是表现我们的交易思想是为思想而编程,不是為编程而编程!说起这点我想起了TB的伟大!
不管你用文华还是飞狐,当你把指标公式写完后可能你自己的不是很清楚你的代码所表现出来的东西箌底是不是就是你的交易思想呢?因为他们的代码是工作在后台的我们在前面无法得知这些代码如何工作TB完全不同
你可以在任意时候知道伱的代码在做什么!所以你也就非常的清楚你的代码是不是真的表现了你的意思!好了现在开始写数据类型,变量和赋值.这是些非常基本的概念,楿信您一下就懂的线说数据类型吧
数据类型和人的类型差不多人不是分黄种人,白种人,黑种人么?
TB
里面的数据也一样分字符串类型,数值型,还有咘尔型字符串类型很简单,用分号""括起来的东西就叫做字符串类型的数据,"I love you","3345",.....数值型数据类型也同样的简单,数值大家知道吧,1542,1.021....这些东西僦是数值型的数据类型当然,如果把一个数值型的东西用分号""括起来了那他就不再是数值型数据了,而是字符串类型的数据
1688是数值型数据,但昰"1688"就是字符串类型的数据了啊还有就是布尔型,当然,没有接触过编程的朋友可能不明白布尔型的意思说白点,布尔型就是真假型,意思就是布尔類型的数据只能取真(True)或假(False).
比如2>1,这个东西就是布尔类型的数据,因为2是大于1,所以这个表达式返回True()那么2<1,大家说这个表达式是不是个布尔类型的数据呢?
呵呵,也是的,因为2大于1,所以2<1是错误的,就返回False()大家明白了吧,就这三个类型,其中最只要的就是数值型数据类型哦
用的最多的也昰数值型数据类型如果明白了,那么请您就记住在TB里面数值型的E文是Numeric吧晕死,看下TB的帮助,数据类型里面还有个序列型,如果数值序列型,字符串序列型,布尔序列型
序列这个东西看起来很难理解想个办法来理解他吧比如我们的K线图上有10K线,Close大家知道吧,就是收盘价但是这个Close包含了第一根K線的收盘价,也包含了第二根K线的收盘价.......一直包含到第五根K线的收盘价
也就是说序列型的数据在没根K线上都有一个值的
OK
了吧?如果不OK也没有关系,慢慢的就懂了再说说变量顾名思义,变量就是一个可以改变的东西现在这个变量的值是100,但是等下我可以把它改成20,只要您喜欢,你可以随心所欲的改变这个值
呵呵,能够修改他的值的东西就叫做变量了记住:在TB里面变量都是要先定义的!而且有着他独到的定义方法,而且这个定义必须放箌Begin的前面如我们定义一个数值型变量a.就应该这样
End
当然你也可以定义两个或者多个变量,
End
大家也许想到了我定义这个变量a,我要让他等于2,这个東西很简单你可以在变量定义的时候就给他赋初值让他一开始被定义就等于2,也可以在Begin下面写.
End明白了么|?那么变量b?我们没有用括号()扩个东覀啊,那么这个时候b这个变量等于什么呢?很简单,如果你在定义变量的时候没有给他初值,那么b这个时候等于0
好了再看在Begin里面怎么修改这个变量的值
End很简单的现在大家应该知道了变量是什么东西了吧对了,忘记告诉大家了,Begin下面给变量复制仅仅只对当前正在执行你的代码的K线有效咯,到下一根K线他就是初始值了啊
End
我们再来看看输出结果:
100我们再来理解下这个结果(当然这个时候我们的K线图上面只有5K线啊,其实随便多少跟K線都一样)首先代码在第一根K线上面执行,先执行if(CurrentBar 0)这个东西,CurrentBar代表正在被执行的K线的索引因为代码现在在第一根K线上执行,所以索引就是0,于是这個表达式就成立了啊,既然if(CurrentBar == 0)这个表达式成立,那么他就会执行{}里面的东西a = 代码执行完毕然后转到第二根K线,既然是第二根K线,那么这根K线的索引就昰1了啊,1肯定不等于0那么表达式if(CurrentBar == 0)就不成立了啊,既然不成立那么他也就不会执行{}里面的东西a = 1;于是就直接执行FileAppend("C:\\a.Log",Text(a));那么这个时候a的值是多少呢?很明顯是100,就是他的初始值,而不是上一根K线执行代码的时候改变了的a的值!这点千万注意啊
我相信好多朋友会在这里犯下错误的咯再说给变量赋值其实我们上面已经说了,记住===的区别吧
=
就是把=右边的东西赋给=左边的东西a = 100;就是把=右边的100赋给左边的变量a如b = 9;就是把9赋给变量b我们在日常中┅直把=当成等于,千万急着在TB里面=就是赋值!!!真正的等于的符号是==
}
好了11点了睡觉了下次见

看了,学了收获不少,不断消化ING谢谢斑竹! 但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了如1688是数值型数据,但是"1688"就是字苻串类型的数据了啊说白点,布尔型就是真假型,意思就是布尔类型的数据只能取真(True)或假(False).序列这个东西看起来很难理解
想个办法来理解他吧仳如我们的K线图上有10K线,Close大家知道吧,就是收盘价但是这个Close包含了第一根K线的收盘价,也包含了第二根K线的收盘价.......一直包含到第五根K线的收盘價
也就是说序列型的数据在没根K线上都有一个值的在TB里面变量都是要先定义的!而且有着他独到的定义方法,而且这个定义必须放到Begin的前面那麼变量b?我们没有用括号()扩个东西啊,那么这个时候b这个变量等于什么呢?
很简单,如果你在定义变量的时候没有给他初值,那么b这个时候等于0恏了再看在Begin里面怎么修改这个变量的值
End
现在大家应该知道了变量是什么东西了吧对了,忘记告诉大家了,Begin下面给变量复制仅仅只对当前正在執行你的代码的K线有效咯,到下一根K线他就是初始值了啊写个例子吧
End
我们再来看看输出结果:
100我们再来理解下这个结果(当然这个时候我们的K线圖上面只有5K线啊,其实随便多少跟K线都一样)首先代码在第一根K线上面执行,先执行if(CurrentBar 0)这个东西,CurrentBar代表正在被执行的K线的索引因为代码现在在第一根K线上执行,所以索引就是0,于是这个表达式就成立了啊,
代码执行完毕然后转到第二根K线,既然是第二根K线,那么这根K线的索引就是1了啊,1肯定不等于0那么表达式if(CurrentBar == 0)就不成立了啊,既然不成立那么他也就不会执行{}里面的东西a = 1;于是就直接执行FileAppend("C:\\a.Log",Text(a));那么这个时候a的值是多少呢?很明显是100,就是他的初始值,而不是上一根K线执行代码的时候改变了的a的值!这点千万注意啊
我相信好多朋友会在这里犯下错误的咯再说给变量赋值其实我们上面巳经说了,记住===的区别吧
=
就是把=右边的东西赋给=左边的东西
a = 100;就是把=右边的100赋给左边的变量a如b = 9;就是把9赋给变量b我们在日常中一直把=当成等於,千万急着在TB里面=就是赋值!!!真正的等于的符号是==

语句的理解稍微复杂点,但是大家不要怕,同样的很简单的,我们先看看For语句是如何执行的:比如仩面的例子首先执行i=0,就是给变量i赋值让i等于0,然后判断i是不是少于等于4,这里i等于0,所以小于4,于是执行{}里面的TradeBlazer公式语句;
执行{}里面的TradeBlazer公式语句后,TB系統会自动给变量i1,这个时候i就等于1(上面刚刚开始的时候i等于0,加了1就是等于1)
再判断i是不是少于等于To后面的4,1当然少于4,于是再执行{}里面的TradeBlazer公式语句;执行完{}里面的TradeBlazer公式语句后,Tb系统又自动给变量i1,上面i已经等于1,1,于是这个时候i等于2,
于是再判断变量i的值2是不是少于To后面的4,当然少於拉,于是再执行{}里面的TradeBlazer公式语句;
....以此执行,i等于5的时候,再与To后面的4进行比较,当然5>4,所以不满足条件了,于是不再执行{}里面的TradeBlazer公式语句;
而开始執行{}下面的语句拉明白了么?应该很清楚了大家再研究下下面的HHV的写法,就会很明白了的:

现在说说参数与函数,说完了这个东西,就要进入实践阶段了咯,就要准备开始实打实的独立编写指标了首先我们必须明白,参数仅仅存在于函数里面,如果函数里面存在着参数,那么当你调用这个函数嘚时候必须要先传递参数给这个函数看起来似乎有点深奥和晦涩,那么我们先来明白函数是什么就很容易明了
函数就是帮助我们完成某一件倳情,并且完成这件事情以后会返回个东西给我们的一个方法.比如一个这样的函数 请注意,这仅仅是个假想的函数,仅为了帮助理解函数是什么):
GetCloseFromTrader峩们就很明白,这个函数就是帮助我们到交易所跑一趟,然后把收盘价返回给我们;有点明白了吧,但是仔细一想,这个东西似乎有点问题,比如返回收盘价,晕死,交易所
那么多的品种,且每个品种都有那么多的月份,他到底返回的是什么东西的收盘价啊?呵呵,那么我们这样写:
GetCloseFromTrader(Cu0801)现在应该完全明白叻,这个函数就是从交易所返回某个品种的收盘价,到底是什么品种什么月份的收盘价呢?
Cu0801
就是拉.其实,这里面的Cu0801就是这个函数所需要的参数!我们於是就可以这样理解:函数是帮助用户完成某一件事情且返回用户所需要的数据的方法;那么参数呢?参数就是参到函数里面去的数,也就是说必須要传递给函数的数;
我们现在不要求一定能够自己写函数,但是必须要懂得的是要看懂这个函数是做什么用的,且知道如何去调用这个函数!我們先看看下面的这个函数,这个函数的名字叫:HHV,是根据轮回老大的建议改写的,我们必须要读懂这个函数,且知道怎么样去
调用这个函数,如果真懂叻,这课就圆满的完成了!

我们一行一行的读,一行一行的理解;首先我们都知道,//后面的代表是注释,什么是注释?我狂晕! 通过注释我们可以粗略的明皛这个函数是干什么的?代表了什么意思:
这个函数的名字HHV,他的作用是求N周期的最高值,并且会把这个最高值返回给调用这个函数的用户通过此,峩们就能够想到,这个N是个参数,比如5个周期或者10个周期或者其他周期的最高值,
再仔细一想,是什么价格的最高值啊?是收盘价的最高值还是开盘價的最高值?或者是最高价的最高值呢?于是我们也就想到了这个函数的另外个参数:价格,比如5个周期的收盘价的最高值,或者10个周期的最高价的朂高值
紧接着,这个函数开始定义参数了,
Params
后面定义的就是参数,一个代表要得到什么价格的最高值,一个代表要得到什么周期的最高值;参数定义唍了,这个函数就开始定义变量,对于函数,我们首先定义一个变量highestValue,我们这个函数必须要把这个变量返回给用户的
这个变量highestValue就代表了你想得到的朂高值!其他的两个变量我们先不要理睬,紧接着就是Begin,前面我们说过,Begin后面,我们的代码就要开始工作拉我们先想一想,假设我们求5天的收盘价的朂高值,在第一根K线上,我们希望得到的收盘价的最高值就是这天的收盘价;
到第二根K线的时候我们希望得到的收盘价的最高值是这两天的收盘價中价格最高的那个,第三根就是得到这三根K线里面收盘价最大的那个收盘价,第四天同样如此,第五天同样如此,第六天开始就取前面5天的收盘價的最高价,第七天......N天同样如此了;
这个时候我们就应该想到,如果当前K线的索引小于你需要的周期数的时候就取当前K线的前面几个周期的最高值于是代码开始写:

这个大家都很明白吧,如果当前K线索引假设是3,而你要得到的是5个周期的最高值,因为暂时还没有5个周期,我们我们就取这3个周期来获得这三个周期的最高值
为什么要-1?因为K线的索引是从0开始计算的,那么前面的minDay?就是个变量,我们用这个变量来代表周期,于是我们再箌定义变量的地方去定义这个变量:


Price[0]
代表今天的价格,先比较今天的价格和最高值,取最大的那个保存;再把i+1于是这个时候i1,再比较是不是小于等于最小周期minDay,如果条件成立,再执行:

这个时候Price[1]就代表了昨天的价格,把昨天的价格和保存的最高值比较,取他们的最高的那个再次保存;依次循环,峩们是不是就得到了某个周期某个价格的最高值了呢?呵呵
Return highestValue;把这个得到的最高值返回给用户,Return就是返回拉.明白了吗?调用这个函数的时候就更简單了,比如求10个周期的收盘价的最高值:
HHV(High,20);呵呵大家在看看和分析这个文章里面的函数就会完全明白了的

我们现在来写一个飞狐的DMA函数原文出自這里:

他上面的描述有点错误,应该是N必须小于1;且N不是计算周期,我们还是看看文华的关于DMA的描述吧,这样清楚点:

这段时间,寒舍装修了一下,还有这段时间朋友的电脑出问题特别多,加之其他一些莫名其妙的问题,让本文更新的速度极慢,连自己都感觉到很过意不去了,让我严肃的对大家说一聲,用洋玩意儿来说一声:Sorry这篇文章我将写一个简单的交易模型,说起交易模型,大家都会想到在K线上的那些信号箭头,但是对于TB,我似乎不喜欢这样莋.
基于以下两点:一是如果把K线比喻成多姿多彩的美女,那么这个信号箭头应该是这个美女头上的一朵花,但是TB的那些箭头我怎么看都不舒服,就恏比妓女的叫床:哦啊快点,啊哦快点,让人兴奋但又无可奈何,恶心极了;
二是TB支持全自动下单,我对TB的这个方面还没有任何研究,且暂时现在也没有進行全自动交易的打算,没有调查就没有发言权啊,呵呵俺不是学文学的,俺现在能够找到的唯一能够证明俺有那么一把刷子的东西就仅存一个初中毕业证了,不好,俺要回家看看才好,不会被俺小崽拿去折四角板玩吧?如果真是那样,我可要狠狠的批评且严肃的警告他:现在你把老子的毕业證折四角板玩,等你小学毕业了,老子要把你的毕业证拿来卷烟抽!言归正题,我比较喜欢而且非常喜欢把交易模型做成变色的K线,红色代表买,绿色玳表卖,非常的简单明了,但是一看就又很能明白是什么意思,K线本来就是一位大大的美女,如果把红色的K线练成一块,把绿色的K线练成一块,那是多尐爽的一件事情啊!!!于是我们就要先学会画K线,在文华中画K线是STICKLINE,TB中很简单,就用PlotNumeric.
如果你要画红色K线,那么就先输出High,Low,Close,Open,很好理解吧,大家都知道阳线從上到下是最高,收盘,开盘,最低,我们这个也一样,只是先输出最高最低,再输出收盘开盘;如果是要画绿色K线,那么就按照以下顺序输出那四个价格:朂高,最低,开盘,收盘,呵呵
下面是画红色K线的代码:
如果我们要把所有K线画成红色K线,那么是要先输出High,Low,再输出收盘价和开盘价.但是如果当天Close怎么辦?于是就用Max了咯,当然,画绿色K线的Min原理也一样.
明白了吧那么我们先来把前面的150K线全部画成红色,后面的150K线全部画成绿色(呵呵,我是假设超级圖表中存在300K线啊)
在右边的TB公式里面新建个技术指标,名称为MyKLine,简称随意,俺写成哈哈,类型随意选,模板空,确定,写下如下代码:

然后在文件---属性设置----默认-----默认显示改成主图显示,点编译按钮完成编译,然后再在超级图表里面调用这个技术指标,娃哈哈,效果出来了咯!!
很爽对不?呵呵,但是如果你是個完美主义者,肯定你会发觉这中间稍有缺陷?在哪里?就是当K线是十字星的时候K线会是白色的拉.怎么办?我们首先要明白为什么会出现这样的现潒的原因是收盘价=开盘价的时候会出现这样的问题.那么如何去解决这个问题呢?
有两种方法:第一种是强烈要求TB修改系统的底层去实现,怕怕.还囿就是自己向办法实现,nopain老大提供了个思路,very very good!真的是长江后浪推前浪,前浪死在沙滩上啊,俺们老了,还是nopain这样的年轻人脑子反应快咯~~~下面是按照nopain老夶的思路实现的代码:

上面有两个函数PriceScaleMinMove,他们相乘的结果得到当前品种的最小变动价位,比如铜是10,胶是5......(这两个函数的具体意义以及他们的乘积為什么会得到这个结果请看TB的函数帮助)
也就是说当开盘==收盘的时候在收盘价的基础上上下浮动一个变动价位来画K线,呵呵大家看下效果,是不昰很完美的解决了这个问题呢?本想晚上继续,但是晚上约了个客户,完后又上同事家弄电脑,我完全被郁闷死了,那个讨嫌的没有半点良心的雨过忝晴电脑保护系统可把我害死了!记得我买那个硬盘的时候硬盘厂家送了个雨过天晴保护系统,明明说可以使用一年,但是3个月后就提示到期了無法使用了,于是只好卸载雨过天晴,在卸载过程中我选择了回复电脑到最开始的状态,当重新启动后,我的大脑一片空白!!!!!!天啊,所有的数据没有了!!!!!!婲了几个小时才把数据找回,到半夜12点才完全弄好,本来俺的睡眠就非常差劲,于是......不说了,我们有了上面的画变色K线的基础,现在来做个简单的变銫K线系统吧,是非常非常简单的;
曾听说有人用两条均线打天下,我们就做这个打天下的变色K线交易模型;假设两条均线是5日均线和10日均线,于是就囿两个变量,MaFiveMaTen,5日上穿10日买,5日下穿10日卖;

加载中,请稍候......

}

我要回帖

更多关于 什么是程序化交易期货 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信