打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
简单实现一个自动化交易程序
外号:好币网官方群 304868671 我们喜欢看新闻,欢迎每一位爱好者的加入!

作为昨天这篇文章的呼应: http://www.51cion.com/article/3730.html 讲过了抽象的想法,再简略描述一下实现一个自动化(程序化)交易程序的思路。

程序化交易程序主要可以作为一个沙盘,用于测试你的策略。这个程序我写下前面这篇文章的前天下午就实现了一个,是用Python写成的,核心代码不到一百行。如果写成Java,就可以在手机上运行了。国内相似的程序如大智慧、同花顺,一年购买使用权2~3万。我觉得很搞笑,因为这个程序并不复杂,而且金融界的编程水平有目共睹,谈不上什么优雅,和大多数IT行业的商业化产品比起来,也只是勉强能跑而已。我提供一个思路,学过高级语言2~3个月的人也可以写一个一模一样的程序出来;这样一年也能赚下来2、3万。

我想首先声明的是,写一个这样的程序应该先明确几点原则:

1. 免责;2. 安全性;3. 可用性。

这是一个交易沙盘,不会对任何账户进行自动化操作,最好这样避免可能的经济和责任纠纷。下单和出货仍由用户手动去操作,程序不做这件事。沙盘仅仅提供数据模拟,生成报告,并且策略(何时买进卖出)是由用户来写入的;决定完全在用户,责任也完全由用户来承担。所谓程序化交易,可以看做是一种不自觉地自然形成的去发现、遵守市场规则的习惯;相对是主观交易,即交易带着期望、理性屈从于情绪,一旦开跌就十分恐慌,一旦上涨就跟风买入。主观交易至少在我观察来,很普遍。都是赔钱的。

一、获取实时数据

Python的函数库很丰富,httplib提供了获取API接口数据的功能。API返回参数是json格式的,可以用非标准库的json Parser去解析,也可以用正则表达式过滤。比如说:

{“ticker”:{“high”:”611.97″,”low”:”561.03″,”buy”:”581.00″,”sell”:”583.98″,”last”:”583.99″,”vol”:”14246.56″}}

就包含了最高价、最低价、买入价、卖出价、最新价、成交量,每十秒更新一次。每个交易所的API文档都声明了如何获取这些返回值,通常最简单的是,使用“GET” method(请查阅Python手册,详细介绍了httplib的用法,还包含例程)。

可以将getrespond(),parser(),httpConnection()写成一个类,如:class instant_Data()。使用类的方法调用来使用这些函数。

二、获取同步时间

同样声明一个类Timer(),使用网络同步时间,精确到秒就可以了。因为网络传输(请求)基本是以秒为单位计算的,timeapi是个很好的选择:http://www.timeapi.org/ 各个时区的日期、秒数都可以读取。请求方式同上。用正则表达式过滤。

时间用于计算和记录每一笔交易的时间、为策略中的操作提供最基本的数据。选择短线策略还是中线?不同的策略会调用不同时间段内的数据,生成不一样的分析结果。一份准确的交易报告也应当包括每一笔交易下单、平仓的时间。以秒为单位符合人的手动操作精度。就沙盘来说,这个模拟精度够了。

三、数据报告

美国最主流的交易程序Tradestation比国内相应程序好太多了,它生成的报告很详细,参考的主要指标有几个:

1. 一段时间内开盘/收盘价;

2. 空头/多头的交易量;

3. 历史平均价格;

4. 一段时间的最高/最低价格.

当用户确定策略的时候,根据相应策略内的参数(指定交易周期、交易金额、建仓和止损位,等等),对收集到的数据做相应调整。5分钟的开盘、收盘价,10分钟的开盘、收盘价,就是相应计数时间的简单记录。交易量是5分钟、10分钟内多、空交易量各自的总额。历史平均价格是相应时间价格加权平均数。最低、最高价格是个简单的数字排序问题。

简单的数据提供给程序,和K线给人的直观感觉是一样的。背后都是一样的数据,K线是把它们画成图了;同样的分析,程序一样可以做到(在这些小数据操作上,Python的响应速度根本感觉不到)。

当成交一笔交易,将生成相应的时间、价格、盈亏报告。

四、确定策略

如果每个人都使用程序化交易,市场会怎么样?程序化交易的灵魂是策略,何时建仓、减仓、设置止损、如何做出趋势判断,决定策略的成败。简单策略适合短线,复杂策略适合中长线,当策略稳定获得一定胜率,这个策略就在市场中有了立足之地。复杂策略涉及长期、大量的数据存储和处理,甚至包含模式匹配、换入换出,类似于一个操作系统,根据不一样的行情做出不一样的响应方式。简单策略则快进快出,只做得好短线。比如说连续两天行情大涨,你是不是会很紧张?紧张是正确的,因为随着时间和数据的推移,之前两天能够匹配的模式开始变化了。

模拟还包括:滑点、手续费、形态判断。

形态判断可能是最难的部分,我的简单程序中没有进行形态判断(牵涉价格波动、交易量变化),仅仅匹配了开盘、收盘价。对程序来说,没有必要画图,设计的时候图是画在脑袋里的。你可以包含大多数常见的形态:尖顶、圆顶、双顶、三顶、整理收敛、上升通道…针对每一个形态,设定相应最程序化的操作,通过实时测试,去修改得到最佳参数。形态是内嵌在程序中的,但用户需要决定:建仓价格、建仓方向、平仓价格、止损位置、交易周期、分析深度(包含单一时间段还是多个时间段的报告)。

记录每一单交易、盈亏额、胜率,调整参数,优化策略。然后就可以赚钱了。没错,赚钱并非那么容易,Tradestation建议的测试数据时间跨度是五年。靠直觉?直觉不费脑子,你还不如去买彩票。打游戏一样可以满足你的直觉需求。

比特币呢?比特币期货产生的时间才刚刚一年罢了。

作者: ender.viking

btc地址:1GjA5viMZWtETEqVNe9oDDdkd5x62AUJ4w

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
123
[新手入门]什么是量化策略
形态致胜:五点结构形态交易策略与应用(连载十一)
全链路数据治理在网易严选的实践
GSR - 流动性服务介绍 最新(1)
浅谈系统交易和程序交易
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服