今天看啥  ›  专栏  ›  安爸讲教育

关于股票交易系统开发之已见

安爸讲教育  · 简书  ·  · 2021-01-03 18:05

股票交易系统实际是指一套对股票进行买卖操作规则方法集合,随着信息技术的发展,很多人用软件来实现系统功能。用软件的好处是客观呈现市场情绪并能最大程度克服人性不能自控的不足。

刚开始炒股的人都希望能买到稳赚不赔的股票,又或者买在低点抛在高点,很美好的愿望却是天下最难的事。讨论这个问题很复杂,我们试着简单点。这里面有两种观点,一种是“股票是可以预测的”,另一种是“股票是不可以预测的”,当然两种观点代表的是不同的逻辑思维和哲学观,从实事求是的角度出发,我认为后者是客观的。在这种认识的基础上我们再讨论交易系统的可行性就有讨论的基点了。

前面说过为什么股票交易需要很多知识,80%其实和股票无关,是在于你的人生阅历和知识储备,而决定方向的更多的是哲学。所以很多人以为股票交易是技术问题,但发现更多时候谈论或者思考的是人的问题。在这个过程中却发现刚开始早期炒股很难挣到钱,但却极大丰富了自己的知识以及对自己人性的了解,这是无价的,而不久就将来就会走上盈利的道路。谈人的问题多是教育问题,所以炒股既是技术问题也是教育问题。

既然股票不能被预测,那我们能做什么呢?可以客观的解读,认真地去倾听市场的声音。“收盘价反应的是市场多空双方的博弈”,代表着大家对股票的看法,你认真的思考并观察他时,会有不少发现的。所以利用历史数据回溯股票是可行的,他会比较客观地观察数据而不准备去做什么。

借助某交易系统中对于航发动力(600893)的分析,基于MACD策略(比较经典策略之一)8月20日提示卖出,ADX > 40表明股票仍处于较强的趋势(当然可以是升也可以是跌),RSI14天数据正常,没有超买超卖现象,距离EMA10线(选为支撑线)负值,表明跌破支撑位,且跌破EMA30日趋势线,综合ADX来看出现明显下跌趋势(已经比建议操作价格下跌11.95%),从EMA30趋势线斜率来看,经历从正1到-1变化,呈现跌势,建议按照提示继续空仓观望。从历史来看,股票仍处于低位,相当于2015年5月高位53.7%,后期仍可介入,现在就静等反转即可。这就是数据所能呈现的信息,可以帮助到你。一般趋势交易者喜欢顺势而为,这好像又回到做人道理了。市面上有不少炒股软件,但软件只是辅助,自己一定要牢记:“不要把运气当能力”,谦虚自律是难得的品质。

NewTrend TradeStation v0.5 Preview版界面

我个人是趋势交易者。用趋势判断股市有个好处,炒股不太焦虑,大势不好空仓安心工作,形势好的时候可以适度交易,他的核心原理是股价反映的是众人对股票未来的预期,不要对抗趋势。很多炒股的人们习惯性思维是“上涨减仓,下跌补仓”,这种习惯并不太好,往往是错失享受上涨盈利快感,加大亏损的范围。好比去接球,等球到地面反弹后再去接更安全,球到顶下落后判断球弹起的高度更稳妥。当然这里说的简单,其实“交易是世界上最难的事情”,买卖股票需要很多知识储备的,这可以随着交易的深入而不断积累。

我曾经在2017年利用计算机专业特长开发了一套自己用的交易软件,主要参考了《走进我的交易室》《和趋势在一起》两本书,编写也很简单,通过MACD、ADX、EMA有限的3个指标,分析股票趋势。2020年结合疫情在家办公时间较多,7月股市走势不错,想把软件重新设计优化,一是重写里面的代码,让运行更流畅合理,二是增加图型界面,使用更人性化。

选择合适的开发框架和数据接口很重要。做股票交易的人计算机不一定很强,但对于策略的理解需要很深刻。很少人是单独讲技术或者基本面的,一般都是两者结合,会看趋势里多空陷阱再配合市净率等基本面指标,具备这些知识股票交易不会偏离太多,也具备编写交易系统的基础。所以能快速进入策略设计的框架很重要。交易框架PyAlgotrade这些年已经停止更新了,一直停留在0.2版本,不过对于标准的策略编写、交易流程模拟和回测来讲足够用,模块文档很清晰,源程序比较多,可以快速入手。

当然也有一些人认为他已经过时。框架的设计在于灵活性和简易性,它均符合,正如没有证据表明以前的交易会比今天要差的情况一样。个人认为可以继续用这个框架,可以加入人工智能、大数据等技术扩展他的功能。

巧妇难为无米之炊,选择合适稳定的股票数据读取接口对开发交易系统也很关键。原来用的Tushare有很大进步,现在接口升级到Pro版,就是注册和TOKEN把我搞得有点晕。百度发现有新接口BaoStock,这个和当时Tushare免费接口一致,但简洁实用不少。用”pip install baostock”把他安装上,接口定义基本相同,不到半小时就把原来Tushare数据接口重写成BaoStock,代码可读性更强。

可能大家会顾虑换股票数据接口会牵涉到软件框架的设计调整,其实这是不对的。编写自己的交易系统最关键是要获取数据,其次才是交易策略。Tushare和BaoStock都属于数据获取接口,函数基本一致,文本也比较清晰,换接口是不影响软件框架的,数据和程序分离,界面和代码分离是基本常识。BaoStock难能可贵的是提供了几篇不错的文章,既有技术分析,也有基本面分析,如《过去3年证券公司的年平均收益率》等,可以简单改装就能用到自己系统中。

关于指标的选取问题。交易系统忌讳指标不要太多,一般不会超过4个。指标太多,关联太多,调整太多 ,BUG太多。这也符合工程哲学观点:“简单即美”。我非常赞成国外专家的话,如果真需要多个指标的话,他希望不超过三个。我喜欢用MACD、ADX、RSI来表示。这里还要注意年线的选择,一般选2.5年年线做为参考,只要价格在这个年线上是可以买入的,反之不行。

当然有个不可回避的问题就是资金管理,前面都是一些技术性质的代码,但决定交易系统的关键仍在资金管理。目前我用的是固定比率法,用6%做为基准线去调整。

实现自己的交易系统并不难,一般顺序是:1、安装数据接口,如BaoStock、Tushare;2.用PySide2开发界面;3.基于PyAlgotrade编写不超过3个指标的策略;4.引入资金管理模型。

最后补充两个问题。第一个是如果是趋势交易,周期一般是多少?这个问题因人而异,看趋势建议用周线或更大周期,交易可以按日线。股市是众人博弈的地方,从统计的本质来看,周期越大,信号更加清晰。只是很多人在实际中很难做到。借助软件可以清晰看到这样的结论。

第二个问题是,如果判断买入方向正确,什么时候该卖出?这是个难题。常言说“会买是徒弟,会卖是师傅”。这块没有定律,由个人决定。一般来讲是你承受损失的三倍以内较好。前面说过止损点设置在6%,那么止盈点可以控制在18%以内较为稳妥。当然如果达到盈利期望且本金安全前提下,你也可以持续跟进,放飞自我。

最后,好的交易系统要建立在合理的策略和盈亏期望、以及科学资金管理上。保持良好的精神状态和自律,才能完成一次漂亮的交易。




原文地址:访问原文地址
快照地址: 访问文章快照