- UID
- 2
- 积分
- 2874664
- 威望
- 1387361 布
- 龙e币
- 1487303 刀
- 在线时间
- 13156 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
一个被期交所警告的高频交易
一个盘后的下午,电话那头响起,一接起是从没听过陌生的声音……
对方那头说道:“账户送单删单太频繁,超过每秒2单,因为是首次,口头警告,第二次直接Ban ID……”
温斌老师是MC多年的低调客户,询问个人资料,温斌老师总是谦虚的回应自己只是一名始终在想算法的程序猿,让我们来看看温斌老师的HFT历程。
我的Coding历程
最开始是想业余时间偷懒,如今的计算机行业这么发达,我是不是可以把自己的想法丢给计算机?然后才发现自己进了一个更大的坑。(笑)
有了想法就动手干,开始在网络上找各种程序化的商用软件,接触的包括TB,麦语言,但是使用过后总感觉不太理想。
我后来搜索国外的软件知道有TradeStation,下了各种试用版本,后来准备都开始交易美股了,才摸到了MC。
这其实在搜寻软件和开发平台的时候,我就已经走了一条弯路,再后来就摸瓜到了MC,就开始全力的以MC作为自己的主力开发平台。
(实盘代码执行图)
跳出舒适区 —— HFT
在盯着更多交易窗口和更多的交易曲线,我每天看着K线的涨涨跌跌,我一直很想知道到底是什么力量和原因来控制它的涨跌的。
我开了DOM窗口,看着数据在跳动,一会有一笔大买单扫掉了所有的卖单,行情报价上去了1 tick,然后又一笔买单扫掉了Ask Size,然后价格又上去了1 tick。
其实就这么简单也真的很简单 — 在这个价格有多少人卖,有多少人买,买的多上涨,卖的多下跌,这就产生了HFT的一种策略最核心的设计思想和思路 Order Book。
跟踪分析自己手里这份交易所order book镜像的变化,来制定交易策略,是高频交易算法的核心思想。
(实盘代码执行图)
什么是HFT?
如何定义高频交易 — 简单来说,只要速度快的,时间短的都可以叫高频交易。必须对市场微结构有非常细致的认识,也就是对交易所的数据协议要很清楚。
HFT需要什么条件?
现在HFT需要的硬件和条件?这我稍微搜索和查了一会,就五花八门什么都有。有服务器架设在交易所,拉光纤,用微波,走海底电缆,直接破译网卡写程序用FPGA的什么都有,这已经跳脱了民用范畴。
硬件我们烧不起,软件上我们能用什么方式做高频呢?有,并不是没有。我的答案是用MC,为什么,听我一一道来。
现在主流直接能接入交易的,有C++ 和 JAVA 这两种主流语言,但是,它开发和学习的维度太长,并且开放的空间太大还不如不开放。
我们需要实现的是交易和策略层面的问题,我把硬件优化和低延迟解决的再好,策略不赚钱,它就是不赚钱,在我看来,一个赚钱的策略比降低5纳秒的延迟,对于普通交易员来的更有效,更有帮助。
那么策略开发中最大的核心问题 — 不是硬件,不是网速,是算法。高频交易的主流四大交易策略 — 做市商,事件,套利,订单流向,哪一项都需要算法的支持,去研究算法是小散有最高投入产出比的方式。
在更多的语言写的高频交易的策略或者是源码中,许多的代码都是在控制接口和信息流,而交易需要的往往是策略,防止本末倒置。
(实盘代码执行图)
实际上把交易压到秒以后,我自己感受高频策略的优缺点在哪呢?
优点:风险小,如果策略OK,那么可以稳定收益。
缺点:开发投入巨大,阀值(交易手续费和滑点)很高。
如果策略无法预测或者是准确率不高,速度不够快,单纯介入短差交易,没啥意义。就我目前工作和研究的方向我简单归纳一下 — 就是订单流系统还有差价系统, Order Flow — Bid AskSpread。
核心思想
通过扫描订单,能够抢先一步买入或者卖出获利,或者等待差价回归。在我看来,整个好的 strategy ,它的优秀不在于订单的成交或者风控的管理,好的策略其实在于它的源头,就是进场,在进场的那一刻其实就已经决定你是否已经输了。
高频交易的从原来的被动扫单 — 到主动去人工扫单Drak 和 Chix 的通道撤单,到用计算机下大量的订单去幌骗(Spoofing)和FPGA(可编程逻辑阵列)到现在的时序,概率,统计,线性回归,标准差等等都应有尽有。简单的就不一定是不好的。
(实盘代码执行图)
专注Open PL
为什么单独说PL,因为走的弯路太多,印象过于深刻。止损,止损,止损,老生常谈的止损大家都知道,但是有多少人说过止盈?
只说了1:3的风险和报酬比例,那么什么情况下是1:3?在短周期下还是1:3么?
盈利值 — 准确率 — 交易阀值,一把三项之力。到底是小盈利,大止损?还是大盈利,小止损呢?
怎么来解读这把 三项之力 ?在一个波动的市场中,这是我们所有有盈利可能的前提,不波动的市场是无法盈利的,市场有波动,我们就有进出场赚取差价的可能。
短期的盈利比长期的盈利更容易预期,小额的目标比大额的目标更容易达成,交易的策略周期,和策略重点就决定了高频交易不适合那么高的盈亏比。那么多少是合适?有参考和参照么?
在伊士顿事件中,它用的比例实际是4 tick的止损,对8tick的止盈。换算下风险和亏损比例大概是2:1,盈亏的平衡点在 1.5:1 的样子。
如果有足够高的准确率,止损 1,止盈 0.5 也不是不可以,但是交易的阀值很容易吃掉这部分的盈利导致整体的亏损。
阀值和损耗 — 滑点或者是手续费成本是相当高昂的。价格的个人主观歧视是一种信息和大众选择的体现,没有任何证据能证明下次的行为概率在这个价格形态还会反复出现。
※ 备注伊士顿件: 2个俄罗斯人写高频交易用500万交易期指,赚走约5个亿,其交易量占据IH、IF、IC合约市场百分之三。
关于程序化交易带来的思考
统计和概率还有速度,能够让你一定能够盈利么?我觉得并不是,任何的价格浮动并不包含对未来行情的预测,如果真的觉得自己可以预测未来,那他离出局就不远了,淘汰自己的不是市场,反而是他自己。
想要活下来,只能兢兢业业,如履薄冰。扎扎实实以不变应万变,随着时间和时代的弄潮不停的更新自己,更新策略,充实自己的实力,这才是立于不败之地的不二法门。
实战开发日志
1、实盘中间跳过的N个坑。
我觉得所有程序的第一课都该教大家如何连接自己的账户。重要的事要反复提及。有很多课程都是教大家策略和函数的,但是就没有一个很完整的课程手把手的教大家做一个小项目。
把这个项目从建立到分析,到设计结构代码和模拟测试,让大家有一个完善的思路和理念,让大家真正的明白该怎么做。
2、行情和数据连接不稳,连接超时。所以我要写一些小的挂钩去测试账户的掉线和行情的突然中断,安置一些逻辑锁来保证我的账户不会乱发单。
3、HFT需要把MC中的交易安全全关了,不然会交易报错。
4、发单和撤单太多,首先就会容易被MC锁掉账号,其次,最严重的申报和撤销交易次数太多容易被交易所盯上,大概500次左右。第一次警告,第二次封账号。
一句话结尾:大奖章基金用的核心策略只有2个 — 趋势追踪和均值回归。另,我希望大家好好读读《算法导论》。
后记
当大家都想干高频或者是统计套利等各种高大上之流,我到想问多少人很认真的研究了底层的函数和代码,有多少人认真调试过了简单的单均线突破和双均线突破这种谁都知道‘烂大街’的系统?
有研究过进出场么?有研究过每笔进场单和盈亏比么?有真的放到模拟盘跑数据和认真的看每天盘口去修改模型么?
每次一写程序就是股指期货,还不如实际点写一个瘸腿的小代码去跑螺纹钢还实际点,比纸上谈兵强。
代码和金融世界天马行空,纵有万般风云,又与我何干?做好自己,稳扎稳打,这才是真正硬核的道理。实际的偏差永远比模拟精确错误的要好。超越自己,我相信总有一天能看到更好的未来。 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|