查看: 9449|回复: 84
打印 上一主题 下一主题

谈谈程序化,纯技术贴,向AJ致敬。

  [复制链接]
跳转到指定楼层
1
发表于 2013-9-26 17:15:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 双木成林 于 2013-9-26 19:54 编辑

按照国际惯例,美女镇楼先。
很多坛友发消息想学程序化,集思广益,所以专门开个帖子谈谈程序化。
首先声明,我并不是什么高手,之所以在这里谈程序化。我觉得,如果没有程序化,我不知道什么时候才能摆脱亏损的魔咒。


谈历程
        我是11年初开始接触期货,我天生比较谨慎,开始交易之前,买了很多书看,约翰墨菲,斯坦利克罗,拉里威廉斯,马丁舒华兹,青泽,等等,还有好多,主流的书基本都看过。边看边炒,边炒边亏,一手一手亏,一直持续到年底,老爸给我的5万块,就还剩4万(感谢自己的谨慎)。12年初,接触到程序化交易,从文华财经开始,由于大学念的信息技术,上手很快。我当时惊奇的发现,很多简单的均线上穿下穿,就能取得很好的盈利,如果使用多均线组合,再加上参数优化,资金曲线就更漂亮了。我很快设计了自己的第一个系统,并投入使用,发现并不理想,资金来回摆动,和回测的结果大相径庭。后来才知道自己走进了参数优化的误区。第一次放枪虽然没打到猎物,但是也没伤到自己,这段时间并没有亏钱。后来在网上找了很多资料,慢慢修改自己的策略,然后边运行边修改,到12年5月,资金竟然回到了5万。然后又加入了新的策略,一直交易到8月底,资金上到了8万多。9月对我来说是一次打击,由于市场的变化,9月亏掉了差不多1万,后来我找原因,发现很多品种的k线走势都发生了一些变化,于是我停了下来,从新设计了策略。从11月7万多开始,又慢慢交易,到今年4月底,资金上到了12万。从5月开始,到现在9月了,没怎么赚到钱。这期间我明显的感觉到单纯做趋势,很难做到持续盈利,AJ的帖子给了我很大的启发,轻仓并不代表不会爆仓(我一直是25-30的仓位运作),顺势也不是那么好赚钱的。这段时间也不断的尝试日内策略,高频策略(类似炒单)。高频交易是程序化交易皇冠上的那颗明珠,如果没有福气带上她,摸一下也无妨,呵呵。

谈平台
        说到程序化交易,绕不开平台,不同的平台有不同的特点,适合不同的交易模式。
1、初级平台:文华财经。优点:文华是我的入门平台,简单的语法,丰富的指标,对于编程能力不是很强的朋友是个不错的选择。缺点:很难写出复杂的策略。
2、中级平台:TB,MC,金字塔,易盛程序化。优点:这几款软件的语法很相似,丰富的函数库能快速的搭建策略。金字塔是包年,tb、mc是按每笔交易所20-25%收费,易盛现在是免费的。缺点:tb是发送指令到tb服务器,然后转发到期货公司,多一个环节,速度上是硬伤,尤其遇到变化快的品种和行情,滑点较大。易盛虽然是免费的,但是现在还不是很成熟,有些小问题。tb和mc中规中矩吧。暂时都不支持高频交易。
3、高级平台:magicquant(简称mq),openquant,飞创stp,盛立spt,大智慧龙软dts,apama。盛立,龙软,apama需要有开发实力,适合机构使用,这里就不谈了。mq是国产的软件,支持ctp接口下的事件驱动,支持高频交易,策略使用vs在C#语言下开发,对于追求高速度和低滑点的朋友绝对是利器。oq嘛,呃。。。和mq,类似msn和QQ,淘宝和ebay的关系,神马东西总会有个国产的卖得很好,呵呵。飞创是大商所旗下的平台,java语言开发,同样支持高频交易,不过似乎用的人不多。4、抡锤造车:易盛,ctp都开发了api接口,有软件开发能力的朋友,可以使用集成开发环境,自己写,自由度大,速度快,还免费。缺点是开发难度大,周期长,还容易出错。

谈策略
        刚开始写策略,最多的恐怕就是均线上下啊,布林线上下啊等等,发单呢就对价吃。这样的策略简单,明了,如果长期坚持,也是能赚到钱的。缺点是难熬(99%都坚持不下去这样的策略)。慢慢的,可以琢磨一些新的思路,比如开盘价上面多少做多,下面多少做空,上去又下来怎样,下来又上去怎样,等等,这些都是很好的思路,关键还是一个字,执行,让你的策略10天不赚钱(很正常的事),你就难熬了。还有一些呢,根据持仓量,成交量,价格变化幅度等等编写策略。短线和高频策略呢,要难一点,尽量不要使用滞后指标入场(比如均线,但可以用来参考方向),还有就是高频策略对平台和下单的精细化控制都有很高要求。反正思路很多,有点像头脑风暴,有很多点子都可以写成策略用历史数据进行测试。程序化最大的好处,是你的思路到底能不能盈利,可以用历史数据验证,少走弯路。

谈参数优化
        参数优化的误区每个人都会犯,甚至是反复犯错。测试历史数据的时候,多维度的参数组合中,总会找到一个高收益的参数组(但并不代表你将来也会有如此高的收益)。我把他比喻成选美,我们要确定这样一个关系,10个美女站成一排,第几个是美女。回测就像是睁开眼睛选,实盘就是闭着眼选。如果你只选一次(所有数据只做一次优化参数),好了,第七个是美女,但这并不代表下一次也是第七个是美女。该怎样选呢,有很多方法,我一一谈。第一种方法:所有的数据,分成两部分,前70%优化出参数,后30%做验证。验证结果要和优化结果一致,至少不能相差太大。第二种方法:分段优化,把数据分成3部分,分别优化出参数,看参数差别大不大。第三种方法:区间优化,可以观察优化出来的参数,集中在某个区间都有比较好的收益,则可信度较大。有条件的可以将所有参数导出到matlab,用三维视图进行观察。这些方法可以综合使用,效果更优。
谈滑点控制和精细化下单
        滑点控制也是程序化绕不开的点,很多朋友抱怨滑点太大。什么是滑点,比如100:101的盘口,你发市价单101买进。有些人认为这1个价差就是滑点,其实这叫点差,不叫滑点,随便你多么牛逼的平台,你要立即成交,就要承认这一个点。正确的滑点理解是:比如你要以101市价买进,但是最后成交价格是102,那么这1个点才是真正意义上的滑点。(为何是102,因为很多人做程序化直接发市价单(市价单并非是你看到的当前价下单,而是直接下必成单,当你调用函数发市价单,有些程序化平台底层直接将价格转化成涨跌停价的委托),有时价差变化快,或者是网络延迟的问题,导致的。手工下单的话,很多人会直接对手价吃,吃不到就算了),根据很多搞高频的朋友测试,发现滑点和合约点差,活跃度,发单时机都是有关系的。尤其是很多做突破的朋友,突破点往往是价差快速变动点,你能看到的价格已经不是交易所实时的盘口了,所以滑点会比较大。很多高频策略对滑点很敏感,就算半个点的滑动已经无法盈利了。怎样控制滑点,第一、速度要快,你可以把策略托管在期货公司,或者离服务器很近的地方,有很多这样的服务商。第二、最好支持事件响应驱动,事件驱动就是事件回调函数复写,编过C++程序的应该很熟这个,举个例子,价格快速变化时,你获取到对手价是101,你发101,没有成交回报,50毫秒就撤单发102,成交,只滑一个点。如果没有事件驱动,你就要等待交易发布500毫秒一次快照,等快照过来,说不定已经105了(极端情况)。第三,就是代码,这是我为啥要把精细化下单放在这里,举个例子,盘口先在是100元:101元,量比是1000手:1000手,你要买一手,怎么做呢,你先挂100元放哪儿,等他吃单,如果运气好,你就100元成交了。如果没有呢,等他吃到500手:100手,你基本无望了,赶紧101元发一单,立即撤掉100元的单子。




0eb30f2442a7d9331754d85cac4bd11373f00124.jpg (112.84 KB, 下载次数: 125)

0eb30f2442a7d9331754d85cac4bd11373f00124.jpg

评分

3

查看全部评分






推荐
发表于 2013-10-4 13:27:08 | 只看该作者
楼主的贴子很好,有一个大体方向。
哥的感觉是时间粒度越小的交易策略对自适应性的要求越高;
最起码在铜里面,感觉上认为是有专门杀程序化交易的程序化手法。
感谢楼主,有了个较为整体的认识。
回复 支持 0 反对 1

使用道具 举报

推荐
 楼主| 发表于 2013-9-26 20:40:11 | 只看该作者
贼头 发表于 2013-9-26 20:26
楼主在交易时会看盘吗还是开着程序自动运行就可以做其他事了?

我是两台电脑,一台挂策略,另一台自己用。刚开始的几天要看,慢慢的就可以不用管了。
回复 支持 1 反对 0

使用道具 举报

4
发表于 2013-9-26 17:26:48 | 只看该作者
这么好的帖子,沙发啊!
5
发表于 2013-9-26 17:28:54 | 只看该作者
兄弟做隔夜趋势的吧?本人做日内,想问下,程序化时信号会不会出现不符合自己策略要求的情况?
6
发表于 2013-9-26 17:33:29 | 只看该作者
妹子不错。
回复

使用道具 举报

7
发表于 2013-9-26 18:31:03 | 只看该作者
真厉害的程序化啊
8
 楼主| 发表于 2013-9-26 20:10:52 | 只看该作者
·相忘于江湖 发表于 2013-9-26 17:28
兄弟做隔夜趋势的吧?本人做日内,想问下,程序化时信号会不会出现不符合自己策略要求的情况?

我现在也开始做日内了,只要量化条件是精确的,代码也是写严密了的,是不会的。
9
发表于 2013-9-26 20:26:11 来自手机 | 只看该作者
楼主在交易时会看盘吗还是开着程序自动运行就可以做其他事了?
10
发表于 2013-9-26 20:33:53 | 只看该作者
学习了.
回复

使用道具 举报

11
发表于 2013-9-26 21:09:14 | 只看该作者
楼主现在用哪个平台 做程序化?
12
发表于 2013-9-26 21:13:39 | 只看该作者
lz采用的策略可否点拨一下我们?
除了均线指标
13
发表于 2013-9-26 21:39:01 | 只看该作者
{:soso_e179:}
14
发表于 2013-9-26 21:43:13 | 只看该作者
顶一个{:soso_e160:}
15
发表于 2013-9-26 22:11:18 | 只看该作者
我也想问你在用什么平台做程序化,金字塔最熟悉,但数据要出错,推荐下
16
发表于 2013-9-26 22:28:49 | 只看该作者
搬个板凳来学习
17
发表于 2013-9-26 22:50:41 | 只看该作者
只看妹子,不看帖子
18
 楼主| 发表于 2013-9-26 23:10:42 | 只看该作者
海峰 发表于 2013-9-26 21:09
楼主现在用哪个平台 做程序化?

一分钟k线以上级别的,是易盛在做。短线是mq在做。
19
 楼主| 发表于 2013-9-26 23:20:18 | 只看该作者
粤B-南山小散 发表于 2013-9-26 21:13
lz采用的策略可否点拨一下我们?
除了均线指标

我曾经使用过的一个策略是,监测成交量和价格变化,如果小成交量对应大价格变化,说明行情一边倒,大家都在往一个方向做。而大成交量比上小的价格移动,说明分歧还比较严重,多空双方力量相差无几。有点像论坛王老师的全周期理中的多空力量对比。然后把它计算成一个变量,确定一个多空范围,也可以动态调整持仓量,对订单的精细控制也是很重要的。现在也是我的基础策略之一,不过有很多改进版本,加入了很多新策略加以组合。
20
 楼主| 发表于 2013-9-26 23:23:34 | 只看该作者
·相忘于江湖 发表于 2013-9-26 22:11
我也想问你在用什么平台做程序化,金字塔最熟悉,但数据要出错,推荐下

易盛的数据也会出错,tb也不少错误。但是出错比较不是经常有的事,小的数据误差不影响策略的最终结果,大的数据错误可以在程序中进行清洗,过滤掉错误的数据。
21
发表于 2013-9-27 09:51:42 | 只看该作者
楼主我很佩服你  
您需要登录后才可以回帖 登录 | 注册入住  

本版积分规则

易家网  ©2015-2023  郑州期米信息技术有限公司版权所有  豫公网安备 41010502005136号 豫ICP备16010300号