Skip to content

Latest commit

 

History

History
221 lines (148 loc) · 11.4 KB

technical1.md

File metadata and controls

221 lines (148 loc) · 11.4 KB

阅读下面文章前,请保证zvt的环境已经准备好。

源码:
https://github.com/zvtvz/zvt
https://gitee.com/null_071_4607/zvt

文档:
https://zvtvz.github.io/zvt/
http://zvt.foolcage.com

1. 什么是技术分析

所谓技术分析,是以历史成交数据(量价)为基础的一种分析方法。
数据在时间上的排列,就有了图形(形态)。波浪,趋势,震荡,头肩顶,头肩底,压力线,支撑线等皆属此列。
而对数据进行各种维度的计算,便有了技术指标。ma,macd,kdj等皆属此列。

本质上,形态和指标并没有区别,都是对量价数据的一种计算,它是对真实的已经发生的买卖情况的不同角度的呈现.

2. 技术分析有用吗?

这个世界有很多不屑于技术分析而专注基本面的人,也有很多只看k线图而有意忽略其他因素的人,其中都有人能赚到钱,也有人亏损累累。
似乎,技术分析并不是那么必须。

其实,从逻辑上,技术分析肯定是有用的。
因为,技术分析的因子里面最重要的就是价格,而连所谓价值投资派也必须重视价格。

而往深层次看,已经发生的买卖情况很多时候有着明确的含义,比如高位的巨量顶分型往往是明确的上涨动力耗尽的信号。 而清醒的投资者显然不能忽略这些信号。

3. 经典论断

技术分析的经典门派有道氏,艾略特波浪理论,江恩,k线形态等;其本质都是想从历史的成交数据中去寻找规律,其中夹杂着很多把或然当成必然的臆测,甚至缺少一个完整的成功率的统计,基本上都是朴素的经验主义,缺少逻辑上的严谨和统一。

对此,缠中说禅曾经有过经典的论断:

现在,问题的关键变成,如何去寻找这三个互相独立的程序。首先,技术指标,都单纯涉及价量的输入而来,都不是独立的,只需要选择任意一个技术指标构成一个买卖程序就可以。对于水平高点的人来说,一个带均线和成交量的K线图,比任何技术指标都有意义。其次,任何一个股票都不是独立的,在整个股票市场中,处在一定的比价关系中,这个比价关系的变动,也可以构成一个买卖系统,这个买卖系统是和市场资金的流向相关的,一切与市场资金相关的系统,都不能与之独立;最后,可以选择基本面构成一个甄别“早泄”男程序,但这个基本面不是单纯指公司赢利之类的,像本ID在前几期所说,国航李总当兵出身不会让自己的股票长期跌破发行价这么没面子,还有认沽权证基本不会让兑现等等,这才是更重要的基本面,这需要对市场的参与者、对人性有更多的了解才可能精通。

技术分析,最核心的思想就是分类,这是几乎所有玩技术的人都搞不清楚的一点。技术指标发出买入信号,对于技术派来说,就以为是上帝给了暗示一般,抱着如此识见,几乎所有技术派都很难有大的成功。技术指标不过是把市场所有可能的走势进行一个完全的分类,为什么技术派事后都是高手,真正干起来就个个阳痿,就是这个原因。

对于水平高点的人来说,一个带均线和成交量的K线图,比任何技术指标都有意义。

有人可能要问,如果业绩突然不好或有什么坏消息怎么办?其实这种问题没什么意义,即使在成熟市场里,这类的影响都会事先反应在走势上,更不用说在中国社会里,什么消息可以没有任何人事先知道?你不知道不等于别人不知道,你没反应不等于别人没反应,而这一切,无论你知道与否,都必然会反应到走势上,等消息明朗,一切都晚了。走势是怎么出来的?是用钱堆出来的!在这资本的社会里,又有什么比用实在的钱堆出来的更可信?除了走势,又有什么是更值得相信的?而那些更值得相信的东西,又有哪样不是建筑在金钱之上的?资本市场就是一个金钱的游戏,除了钱,还是钱。只有钱是唯一值得信任的,而钱在市场上运动的轨迹,就是走势。这是市场中唯一可以观察与值得观察的东西。一切基本面、消息面等的分析,最终都要落实到走势上,要让实在的钱来说话,否则都是自渎而已。只要有钱的运动,就必然留下轨迹,必然在走势上反映出来。

缠师这四段话明确了几点:

  • 技术分析是交易系统重要的一个部分,但不是全部
  • 好的技术分析是分类明确的评估系统,深陷进去是自找苦吃
  • 走势图有更深的含义

4. 均线

从不精确的角度,均线是所有技术分析里面最简单但也最实用的。 甚至,技术分析有均线就够了。因为,技术分析只是一面,这一面无论你如何精确,都是不完美的,过于求精,反而可能一叶障目。

那么均线的本质是什么?有什么必然的规律可循吗?

先从均线的计算说起,其计算非常简单,就是一定时间窗口的收盘价的平均。

指数移动平均之类根据离目前时间间隔的不同采取不同的权重,一般越近权重越大,差别不大。

本质上,均线代表着大部分人的持仓成本,从而有一定的压力或者支撑的作用,但也仅此而已,臆测更多并无意义。

而所谓的规律,在人们眼中无非是"如果发生什么,就会发生什么"的一种"必然性"。

所有的主观投资或者量化投资,都在试图寻找这种"必然性",从而被这种“必然性”欺骗。

如果真要说有什么必然性,那就是"涨多了要跌",为什么不说“跌多了要涨”呢?因为很多品种是有可能归0的。

5. 统计学

在统计学已经神话到机器学习的今天,不搞点统计学好像就不科学了。

人类的尊严似乎正在被机器夺去,投资似乎正越来越依赖机器。

那么,在巨头们的巨大算力面前,普通人还有机会吗?

似乎还是有的,现象上看:

  • 巴菲特之类的价值投资活得挺好
  • 量化投资的收益目前并没有证明比主观投资优秀
  • 机器学习+高频交易并不一定能给金融市场带来什么好处

从逻辑上看:

  • 机器的算力优势是明显的
  • 机器+复杂模型的代价也是巨大的

那么,普通人的机会在哪里?

  • 常识
  • 市场规则的理解
  • 简单的统计学和自动化

前面两点先不说,为什么是简单的统计学呢?首先,简单意味着容易理解,容易执行,容易验证,并且不需要很大的算力,一般的电脑即可。 在一定级别上,简单的统计学的力量并不比复杂的模型差。而自动化能够让人从枯燥无味的重复劳动中解放出来,从而专注一些更有用和有趣的方面。 而这一切,只要设计合理,是可以靠一般的电脑完成的。

6. 均线统计学

算法:取5,10日均线,定义两种状态

  • 5日均线>10日均线(up)

  • 5日均线<=10日均线(down)

当前持续该状态的次数记为current_count,并单独记录每轮持续的total_count;状态1用正数表示,状态2用负数.

具体实现代码

全市场每天持续运算

运算后的数据如下:

from zvt.api import *
from zvt.domain import *
import plotly.express as px
df = get_data(Stock1dMaStateStats,provider='zvt',entity_id='stock_sz_000001')
df[df.current_count>0].describe()
df[df.current_count<0].describe()

这似乎不够直观,除了上下的次数差不多,看不出啥来,让我们用histogram来展示其分布:

fig = px.histogram(df.loc[:,['total_count']],x='total_count')
fig.show()

df = get_data(Stock1dMaStateStats,provider='zvt',entity_id='stock_sz_000002')
fig = px.histogram(df.loc[:,['total_count']],x='total_count')
fig.show()

df = get_data(Stock1dMaStateStats,provider='zvt',entity_id='stock_sz_300104')
fig = px.histogram(df.loc[:,['total_count']],x='total_count')
fig.show()

从中可以看出:

  • 无论是牛股还是垃圾股,up和down的次数和分布都是基本对称的
  • +-(1-10)占据了大部分的时间,其中+-(3-9)尤甚

全市场的统计看一下(数据较大,导入需要比较长的时间):

df = get_data(Stock1dMaStateStats,provider='zvt')
fig = px.histogram(df.loc[:,['total_count']],x='total_count')
fig.show()

对称性更明显,+-(1-2)差不多,然后都是+-(3-5)递增,5之后逐步递减。而不管是个股,板块,全市场进行统计,都差不多。 这说明了什么?对操作有什么帮助呢? 这至少说明了:

  • 涨多了会跌,任何时候追涨都有极大的风险,特别是连涨(5-8)日后,变盘的概率太大了
  • 整体上,市场的涨跌是基本平衡的
  • 这种对称性及其变化说明,上涨,下跌,震荡(up和down的切换如果持续时间较短,一般就为震荡)是交替出现并有一定的周期性

给操作的指导意义:

  • 没有什么股票是值得长期持有的,连续的上涨后,再好的股票也需要震荡来消化,而差的就可能永远回不去了

现实的操作,显然知道这些是远远不够的,但连这些都不知道,那是肯定死都不知道怎么死的。

看一看周线的情况如何:

wk_df = get_data(Stock1wkMaStateStats,provider='zvt')
fig = px.histogram(wk_df.loc[:,['total_count']],x='total_count')
fig.show()

周线上也呈现出这种一致性,可见“股价就是随机漫步”不过是如"股市是赌场"般的人云亦云的无知显摆。

限定短一点的时间周期看一看:

fig = px.histogram(wk_df[wk_df.timestamp>='2015-01-01'].loc[:,['total_count']],x='total_count')
fig.show()

fig = px.histogram(wk_df[wk_df.timestamp>='2019-01-01'].loc[:,['total_count']],x='total_count')
fig.show()

时间周期短一些后,这种对称性会有一定破坏,但以下几点依然有效

  • up和down的次数和分布都是基本对称的
  • +-(1-10)占据了大部分的时间,其中+-(3-9)尤甚

7. 小结

以上,我们对技术分析和如何利用zvt来进行均线统计有了一个初步的认识,那么如何根据均线来选股并做相应的通知呢?我们下一节见。

扩展问题

  • 如何对数字货币进行相应的统计?其有相似的规律吗?
  • 期货呢? 提示:只需要理解zvt系统对entity的定义,在MaStateStas输入相应的entity类别即可。
  • 如何利用up,down两种状态的变化来定义趋势,震荡?并以此设计交易的策略来进行回测和交易。

知乎专栏:
https://zhuanlan.zhihu.com/automoney

公众号:
公众号