在止损最小时开仓,在市场疯狂时平仓

这简单的两句话,就构成了一个简易的交易系统。

首先谈谈止损。是否会止损,是衡量一个交易员是否入门的标准。交易最大的错误,就是开仓的时候不明确设止损。没有止损保护的仓位,会让自己的交易账户失控,变得和赌博无异。但是,胡乱的设置止损对账户的伤害也很大。比如根据盈亏额度或者比例来止损,往往导致止损在震荡的高点或者低点。或者在大行情到来之前,确因为一个小回撤就止损出局。设置了止损,不严格执行也是白搭。严格执行止损不仅包括止损条件到了就平仓,还有要严格执行交易计划,不随便更改止损位置。想必有经验的交易者对这几句话都有感触。

什么是成功的止损?简单的来说,成功的止损就是在止损后,市场趋势反转,或者给你带来一个更好的进场位置。那么,最好的止损位置,就是最容易明确判断市场走向的位置。如何判断市场的转折点,就要靠技术分析了。技术分析通过趋势线,压力线,形态或者指标来判断市场的转折,往往是很明确的。价值投资因为信息不透明或者很难衡量信息的分量,所以很难确定止损位置,这是价值投资的劣势。

那么很显然,止损最小的时候就是最好的进场时候,这里说的止损当然是成功的止损,瞎止损不算。较小的止损我们能够通过较小的风险来博取较大的收益。我们需要做的就是寻找最小止损的时候交易。什么时候止损最小,就是技术分析的范畴了,我这里说几个把握比较大的方法:

缩量横盘很久后向一个方向突破。横盘时因为市场多空力量处于势均力敌之中,向一个方向突破是因为有新的力量打破了这一僵局。所谓横有多长,竖有多高。在价格突破近期的高点或低点开仓,止损很简单,市场突破后又回到原来的震荡区间,说明是假突破。这种例子在市场中非常常见。

三角整理区突破。三角整理区一般发生在趋势的进行的中间,也可以构成市场的反转,突破后往往意味着趋势的继续或反转。这时候往往是一个比较好的入场时机。在突破时开仓,止损很简单,没有有效突破止损。

压力/支撑线突破。压力线就是把市场连续几个波峰的高点练成的一条线,支撑线就是市场连续几个低点连成的一条线。最明显的例子就是2014年底上证指数突破数年的压力线,后面的事情大家都知道了:

新高新低突破。前期的高点/低点往往会变成重要的压力/支撑位,如果突破该点位形成新低或新高,说明有重要的力量打破该预期,顺着突破的方向开仓。《海龟交易法则》一书中所用的交易系统就是一套新高新低突破交易系统。还以上证指数为例,在今年三月份上证指数突破3400点得时候,就和朋友说,这可是能最好的买点了(但指数并不代表个股,指数突破不代表个股突破,比如金三胖在当时表现并不好,这也是股市的复杂之处):


上面说的这几种方法,所用的周期越长越有效,最少应该看日K线。周期越长越难被人为操纵,其突破往往代表重要趋势的变化。

俗话说,会买的是徒弟,会卖的是师傅。平仓了才能把账面利润变成实际利润。什么时候卖,确实是一个很复杂的问题。卖早了,可能价格涨了10倍,自己只赚了1倍,卖晚了,辛辛苦苦的利润化为灰烬。我也没法告诉你这个问题的答案,因为我也不知道。但在市场疯狂地时候,卖总是没错的。市场成交量放大,价格飞速上涨的时候,就是市场疯狂的时候。比如今年5月份的A股,比如13年底的比特币。这时候就是要最小心的时候了,一旦价格出现巨大回落,就要准备离场了。

2014~2015 年的A股:

2013~2014 年的比特币:

2015年末的比特币:

如何使用Mysql正确的处理财务数据

财务数据相比于普通的互联网应用数据,对数据的一致性有更高的要求。因为涉及到用户金钱的流动,出现问题就意味金钱和声誉上的损失。在用 Mysql 处理财务数据时,我认为应该遵循以下原则:

  1. 使用 DECIMAL 数据类型存储金额。因为浮点数精度是有限的,并且无法精确的表示一些数字。应用程序也应该使用 Decimal 函数库来进行金额的加减乘除的运算,比如 Python 的 decimal 模块,C++ 的 boost Multiprecision 库。
  2. 使用事务来更新数据库。涉及到数据库多个记录更新时,事务能够做到要么全部成功,要么全部失败,这保证了数据的一致性。Mysql 使用事务需要 InnoDB 引擎。
  3. 更新数据库时使用悲观锁。更新数据前使用 SELECT …  FOR UPDATE; 来查询,这样防止并发的请求读到脏数据,导致数据错乱。虽然加锁会影响性能,但为了数据的一致性也是值得的。
  4. 记录资金变化的流水日志。不能简单的只记录用户的金额,还要记录每笔资金的来龙去脉,包括变化的大小、时间、业务、更新前金额、更新后金额、备注等,另外还有记录业务ID防止重复更新金额。这样在对账的时候才能有理有据。

下面以一个完整的示例来说明如何设计一个完备的记账系统用来记录人民币余额,这里精度只需要2位小数就可以了。

假设已经有一个用户表,每个用户有一个唯一ID。我们需要创建两张表,一张余额表,一张流水表:

CREATE TABLE `balance` (
  `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `user_id` int NOT NULL,
  `item` varchar(10) NOT NULL,
  `balance` decimal(20,2) NOT NULL
) ENGINE=InnoDB;

CREATE TABLE `history` (
  `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user_id` int NOT NULL,
  `item` varchar(10) NOT NULL,
  `amount` decimal(20,2) NOT NULL,
  `befor` decimal(20,2) NOT NULL,
  `after` decimal(20,2) NOT NULL,
  `business` varchar(30) NOT NULL,
  `business_id` varchar(100) NOT NULL,
  `detail` text
) ENGINE=InnoDB;

为了加快查询速度,另外为了有效利用 InnoDB 的行级锁,我们需要给两张表加上联合索引。另外,我们需要保证流水记录中 user_id, item, business, business_id 的组合是唯一的,避免重复更新数据。

ALTER TABLE balance ADD INDEX `user_item_idx` (`user_id`, `item`);

ALTER TABLE history ADD INDEX `user_item_idx` (`user_id`, `item`);

ALTER TABLE history ADD UNIQUE update_unique (user_id, item, business, business_id);

假设这时候用户 ID 为 1 的用户充值了 100 元人民币,我们需要把用户的人民币余额加上 100 元,我们要如何处理呢?

这里我们还需要一个充值表用来保存用户的充值记录,同时,我们再创建一个提现表来表示用户提现记录,如下所示:

CREATE TABLE `deposit` (
  `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `user_id` int NOT NULL,
  `item` varchar(10) NOT NULL,
  `amount` decimal(20,2) NOT NULL
) ENGINE=InnoDB;

CREATE TABLE `withdraw` (
  `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `user_id` int NOT NULL,
  `item` varchar(10) NOT NULL,
  `amount` decimal(20,2) NOT NULL
) ENGINE=InnoDB;

首先,开始一个事务,创建充值记录:

START TRANSACTION;

INSERT INTO deposit VALUES (NULL, 1, 'CNY', '100')

插入成功后,我们可以使用 MYSQL 的 API 获取到上次插入后生成的自增 ID 的值,假设这里也为 1. 然后我们需要从数据库查询当前余额。查询的时候注意要使用 FOR UPDATE 来锁住该记录,避免其它并发的请求读到脏数据。即使当前该记录不存在,在事务提交之前,其它读请求仍然被阻塞读不到数据的。

SELECT id, balance FROM balance where user_id = 1 and item = 'CNY' FOR UPDATE;

由于用户是新注册的,查询到的数据为空,所以我们创建新的记录:

INSERT INTO balance VALUES (NULL, 1, 'CNY', '100');

然后我们要在流水表中记录下这次的变更操作:

INSERT INTO history VALUES (NULL, NULL, 1, 'CNY', '100', '0', '100', 'deposit', '1', '');

最后提交事务:

COMMIT;

事务提交后,所有的数据都写入到数据库中了,中间如果有异常发生,则执行

ROLLBACK;

来放弃所有的变更。

假设过了一段时间用户要求提现 50 元,操作流程如下:

START TRANSACTION;

SELECT id, balance FROM balance where user_id = 1 and item = 'CNY' FOR UPDATE;

假设读出的 id 也为 1. 由于用户之前充值了 100 元还没有使用,所以余额是 100,大于 50 满足提现条件。如果不满足的话需要执行 ROLLBACK. 然后:

INSERT INTO withdraw VALUES (NULL, 1, 'CNY', '50');

UPDATE balance set balance = '50' WHERE id = 1;

INSERT INTO history VALUES (NULL, NULL, 1, 'CNY', '-50', '100', '50', 'withdraw', '1', '');

COMMIT;

这就完整的实现了整个充值和提现的流程。

当然,这里示例的充值和提现是最简化的流程,实际业务中,充值和提现往往涉及到多种状态的流转。并且在提现中,用户发起提现和实际进行转账不可能是同时进行的,中间可能会取消操作,直接扣除资金不太妥当,更妥当的做法是把待提现的资金冻结起来,冻结操作其实就是创建一个新的 item: CNY_FREEZE, 在 CNY 上扣减,然后在 CNY_FREEZE 上增加来实现。转账后再从 CNY_FREEZE 中扣除。如果取消操作则取消冻结,从 CNY_FREEZE 扣减,增加到 CNY 上面,这样整个流程在流水日志上都有体现。

深圳车牌竞价分析

前不久拿到了驾照,就琢磨着买辆代步车。但现在深圳车牌限号,买车需要有车牌指标,车牌指标可以通过摇号或竞价获得。看了一下上期摇号结果,中签率不到1%,平均需要接近9年才能中签。并且从往期来看,参与摇号的人数是越来越多的,中签的概率会越来越低,入下图所示:(数据来源:http://xqctk.sztb.gov.cn/gbl/index.html

摇号人数

所以目前来看,通过竞价是比较靠谱的获取车牌指标的方式,所以研究了一下过去所有8期的车牌竞价数据。车牌竞价本质上也是一种公开市场,卖方为市政府,买方为有购车需求者,买卖标的为车牌指标。市场的价格通常是由供需共同决定,但这个市场供给是固定的,那么影响价格走势的就是需求的变化了。

如果政策保持不变,长期来看,积累的有购车需求的人会越来越多,那么势必会推高车牌的竞价价格。但短期来看,影响车牌竞价价格的因素很多,除了供需之外,还有人们的情绪。既然是一种公开市场,那么短期的价格走势就可以通过技术分析的手段进行分析。

技术分析就是对过往成交的量价分析。从官网的公告中整理了感兴趣的一些数据,分别是投放指标数,竞拍人数,最低价,平均价,成交量。

QQ20151009-1@2x

其中除了最早2期因为政策刚开始施行,供给大于需求之外,之后的几期都是供给小于需求的,这也将是常态,所以研究投放指标和成交量意义不大。那么这里研究的量应该为参与竞拍人数,而最低价最能反映该市场的有效价格。下图为量价走势:

竞拍人数与最低价

从上图可以清晰的看出,从第3期到第6期,参与竞拍人数和最低价是同步上升的,典型的量价齐升。从第7期开始,参与人数开始下滑,但价格仍然继续攀高到了5w,出现量价背离现象。到第8期,参与人数进一步下滑,最低成交价也大幅跳水。我们可以从参与者心理来分析这种现象:如果往期车牌价格走高,但在自己心理价位之内,由于会担心车牌价格继续走高,所以会选择高价竞拍车牌,这会进一步推高价格;但如果车牌价格超过了自己心理价位,会选择放弃短期内购车的欲望,通过摇号去碰运气。从走势来看,转折点在第六期,平均成交价接近3w,这说明3w是目前市场参与者的一个平均心理价位。

由于竞价市场的特殊规则,最低价并没有太大参考价值,平均价才能反映出参与者实际付出的价格。在一个有效的市场中,最低价和平均价应该很接近才比较正常,下图为最低价和平均价的走势:

最低价与平均价

可以看出从第3期到第7期,最低价和平均价都比较接近。但在第8期,最低价与平均价之间的差额极为悬殊,这种极端情况肯定是不可持续的。仔细看下官方的公告,还有这样一个数据:实际参与报价的人数为3016个。而车牌数量为2945个,两者差额非常小。但因为参与者并不知道该情况,参与者能获取到信息只有两次播报的平均报价。参与者强烈的购车需求导致平均价仍然超过了5w。这让我联想到了股票市场上的曾经出现的逼空行为:股票价格连续上涨,远远超出了其实际价值,于是开始有人对其大量抛空,由于当时可以裸空,实际卖空数量甚至超出了股本数,这时有人用大量的资金不计代价的继续拉高股票,买光了市场中所有流动股票,卖空者为了避免破产,不得不计代价从逼空者手中买回股票以履行合约。车牌价格连续4个月上涨,强买车需求者不得不计代价的拍入车牌,这也算是一种逼空行为。极端情况总是不会持续太久的,最高价与平均价的大幅偏离肯定会被市场修复。

由于上期最低价很低,低于了很多人的心理价位,会有很多潜在需求者从摇号转为竞拍,所以接下来参与竞拍的人数可能会上升,这会让市场变得更加有效,最低价会上升。目前市场平均心理价位在3w左右,但在过去5期的逼空行情中,愿意出高价的参与者已经消耗殆尽,所以短期内平均成交价可能会降低到2w到3w之间。长期来看,有购车需求的人会越来越多,竞拍价格可能会继续上涨。所以,如果半年内有购车计划的话,在接下来几期内竞拍车牌应该是比较划算的。

如何有效的进行趋势跟踪

投机市场中,标的的价格通常以趋势的方式变化的。趋势是分级别的,15分钟周期的趋势在日K线上可能只是震荡而已。根据道氏理论,市场中存在三种趋势:主要趋势,次级趋势和日内趋势。通过追踪趋势进行交易的交易者称为趋势交易者。严格来说,所有的交易者都是趋势交易者,只是追踪的周期不同而已。但通常来说,趋势交易通常是指的追踪中长周期的趋势,持仓周期从几天到几个月不等。与之对应的是日内交易者,日内交易者通常不会持仓过夜。

趋势交易者通常会在趋势启动时建仓,在趋势确认反转时平仓。通常来说,市场中大部分时间是没有趋势的,只是无序的震荡。对于趋势交易者而言,可能绝大部分的利润来自于少数的几次交易,而这几次交易有幸捕捉到了市场中少有的大趋势,其它的交易都是不断的试错而已。所以,对于趋势交易者而言,如何追踪到主要趋势是非常重要的。如果错失了主要趋势,那么整体收益可能就会大打折扣了。

如何量化趋势

均线可能是最好的趋势量化指标了。均线是通过计算过去N个周期的平均收盘价然后相连生成的一条线。使用均线来量化趋势有多种用法。最简单的是使用一条均线,价格在均线之上表明当前为多头市场,价格在均线之下表示当前为空头市场。另外一种用法是使用两条均线,一条短周期均线,一条长周期均线,短周期均线向上穿越长周期均线表示多头市场的开始,反之表示空头市场的开始。另外一种用法是使用多条均线,当短周期均线和长周期均线依次从上向下排列时,表示现在为强烈地多头市场,反之,则表示现在为强烈地空头市场,其他情况表示当前市场没有趋势,处于震荡中。

如何选择均线的周期是一个重要的问题,需要结合市场情况来定。首先,趋势交易者需要排除掉交易不活跃,流动性差,盘子小的市场,因为这些市场通常没有明显的趋势,并且价格容易被主力操纵。一般来说,20日均线是一条非常重要的均线。我个人比较倾向于使用双均线法,双均线法相对假信号比较少,并且反应比较灵敏。我一般采取5日均线和20日均线。采用什么周期的均线,需要通过对该市场的回测来确定,选择出现信号相对稳定的周期。

持续跟踪

趋势跟踪需要保持高度的专注,成功的交易者一般都是专注于一个或少数几个市场的。同时追踪的标的不能太多,个人认为不超过3个为宜。因为人的精力毕竟有限,追踪过多的标的容易错过大趋势。很多新手刚进入股票市场喜欢买一堆股票,啥股票都想买点,这是很不好的做法。对于股票市场,最好的做法是选择两到三只股票作为长期跟踪对象,轻易不换。怎么样才算是做到了持续跟踪呢?我认为,做到任何时候知道该标的当前价格,知道该标的过去最少一年中的整体走势,说得出最近几次重大转折,才称得上是持续跟踪。

资金管理

趋势交易做的是长线交易,为了避免市场的突发状况,风险控制是非常重要的,而仓位控制是风险控制中最重要的一环。对于股票这种全保证金市场来说,仓位控制不是什么大问题。对于期货,外汇这种高杠杆市场,控制杠杆比例就非常重要了。控制风险是为了保证我们遇到极端情况,能在市场中生存下去。毕竟,我们能赚无数个100%,但永远只能亏1个100%。只有在市场中生存下去,才可以谈盈利,否则本金都没了,还怎么赚钱。

对于趋势交易而言,可能大部分交易都是不赚钱甚至是亏钱的,只有少数的交易赚了大钱。趋势交易是通过低胜率,高赔率获胜的。所以,如何保证在错误的时候少亏钱非常重要,需要采用试探,加码的买进策略和严格的止损策略。在指标发出买入信号时,买入初始仓位,如果价格继续上涨确认了这个信号,则继续加码,直到满仓为止。所以,对于趋势交易来说,通常是买高卖低的,这和通常人们理解的逢低买入,逢高卖出是相悖的。

遵守纪律,机械操作

对于趋势交易者而言,交易的机会是相当少的,大部分时间都是在等待,等待市场发出买入和卖出信号。所以,在市场没有信号的时候耐心等待是非常重要的。另外,在市场发出信号的时候,坚决进行操作也是非常重要的,因为你不知道这次是否是大趋势的开始,错过趋势对于趋势交易者来说是最可怕的事情。可能这时候信号和你的感觉是相反的,但你要相信市场发出的信号,而不是自己的感觉,因为你的感觉大部分情况下是错误的。

永远保留底仓

对于跟踪趋势的交易者,除了错过趋势之外,跟丢趋势也是非常可怕地。这通常是过早的止盈导致的,结果失去了后面更大段的利润。趋势交易要求交易者在趋势启动时跟进,在趋势反转时平仓。但在趋势运行中,价格通常会有重大的反向运动,满仓看着浮动盈利损失大半是一件非常煎熬的事情。这也是趋势交易最难的一部分,很多人因此选择了日内交易而非趋势交易。为了保护利润,提高资金利用率,可以根据次周期的其他技术指标或K线形态来进行止盈,波段操作。但是,止盈不是清仓,在趋势没有结束之前,要永远保留一定比例的底仓,并且在合适的时候,补回止盈的仓位。这部分底仓,是趋势交易者的根基,一定要留到趋势确认反转之后再平。丢失自己的仓位,也就是丢了自己的根基,对于趋势交易者是件危险的事情。

初入A股市场

最近A股市场火爆,股指连续创新高,我也不能免俗的入市了。这并不是我第一次涉足A股。第一次是去年大约10月份的时候,在朋友的鼓动下,开了一个证券账户。当时沪指大约2400点左右,大家都在议论着,牛市要来了。当时看了下沪指的周K线,确实有开始上涨了趋势。但后面上涨的速度和幅度,都大大超出了我的预期。

开通A股账户后,只是抱着玩玩的心态,充了1W进去。当时看雪球上很多人推荐银行股,就买了一只银行股,还有几只其他的股票,都是成份股。拿了几天之后,市场几乎没有任何波动,觉得每天自己不断的看行情挺傻的。1W块钱也没啥值得自己耗费精力的,就全部提现了出来。

又过了大约一个月后,市场再次开始上行。经过我认真的考虑,觉得A股还是有投资机会的。但又不想太麻烦的选股,所以准备开始基金定投计划:计划分十次,每周1次买入5000块钱的大盘基金。因为自认为自己能承受的风险水平比较高,所以选择了分级基金银华锐进。这个基金也是朋友推荐的,本着了解自己投资对象的原则,我认真的研究了分级基金的运作原理,然后开始了买入。当时沪指大约2500点左右。然后,市场开始爆发了,我觉得这种行情下定投有点傻,在2600点的时候,就一次性投入了全部剩余的80%资金。接下来的暴涨大家都知道了,但我实际上没赚到多少,2800点的暴跌的时候,把我甩下去了。接下来,我只能每天的看着市场不断上扬,不敢再追高了。这次大约赚了20%。

我知道市场不会一直单边上涨,准备在A股阶段性的调整后再次入市。所以,在上周沪指创新高的时候,我再次入市了。这一次,我自己出了部分,另外以收益提成的方式从朋友那募了部分资金,总共10W,准备认真的去做。

然而,出师不利。为了防止系统性风险,我给自己定了一个规则,同时持有不超过三只股票,每只股票不能超过总资金的三分之一。所以上周自己选了三只股票,分别是中信证券、交通银行和中国人寿。前两只已经开始了向上的趋势了,所以买入。中国人寿还处于震荡整理中,准备等到向上突破后买入。然而,市场喜欢开玩笑,上周中国人寿来了一次假突破,我全仓追入了。另外,我还坏了自己另外一个规矩,买了一只别人推荐的股票。我的投机经历告诉我,盲目的听信别人总是要吃大亏的。这只股票是中国南车,刚刚创了新高。于是,我再次在最高点追入了。总结下来,这两次追高操作产生的亏损抵消掉了另外两只股票的大部分盈利。在过去几天大盘调整的时候,我剩下的利润也失去了。为了保住本金,所以,我选择了清仓。

当然,你可能会说,这几只股票再多拿几天就会没事了。我也相信这几只股票都是不错的股票,但不能因为这个打破自己的规则,一错再错。两只下跌的股票已经到了我的止损线了,另外,我不允许自己本来盈利的交易变成亏损状态。

总结了一下这次交易,失败的主要原因主要有:1、追高操作,没有买在安全点;2、全仓进出,风险过大;3、听信消息;4、同时持有股票数太多。这次交易也给自己一个教训,A股虽然是牛市,但也很凶险,赚钱没那么容易,不能太过于轻心了。

经过过去一段时间的看盘,加上自己之前的投机经验,所以针对A股给自己制定了一个交易系统。

仓位:
同时最多持有2只股票,单只股票最高不超过50%资金。

买入原则:
1、日K线的 MA5 在 MA20 上方。
2、60分钟K线的 MA5 刚刚向上穿越 MA20 时,买入

买入方法:
分三次买入,分别是 4:3:3 ,后面的买入价位必须比上次买入价位要高。

止损:
单笔交易损失不能超过总资金的1%。所以,根据上面的几个原则,买入一只股票后的止损线为5%。另外,在有一定的盈利的时候,根据情况,逐步调高止损线,确保本金和部分利润不能损失。

卖出原则:
和买入原则相反,60分钟K线的 MA5 向下穿越 MA20时,卖出。然后换股,不参与盘整。

另外,选股的问题,A股几千只股票,现在还不熟悉,所以暂时只从沪深300指数的成份股里面选股。

这套系统是我在其它市场经过长时间的摸索,制定出来的,并且经过了一段时间的考验,收益不错。根据A股市场的特点,修改了一些参数。这套系统最大的特点就是以追踪短期趋势为目的,其买入,止损,卖出都是客观可量化的,尽可能避免人性的因素而影响决策。

然而,我深知,除非是计算机,再有效的系统也很难避免人性的因素,遵守纪律是最重要的事情,这一点,我做的还不够好。

比特币及其产业链

谈到比特币,很多人的第一反应是:这东西不是被禁止了吗?或许很多人对比特币的了解还停留在13年底比特币的火爆及央行对其的打压的时候。事实上,经过2014年一年的发展,虽然比特币的价格一路下滑,但比特币生态环境却发生了天翻地覆的变化,从一个流行于极客圈的的玩物,俨然发展出了成熟的产业链。从挖矿到交易到支付,以及丰富的比特币衍生品,比特币正从幼稚走向成熟。

什么是比特币

比特币系统是一个相对复杂的系统,即使对于程序员而言,要想完全的理解它的运作方式也非易事。事实上,就连李笑来这种自称非常了解比特币的人,在其公开的微博上,也搞不清楚公钥是什么东西。我本人也是花了很久的时间才彻底搞清楚比特币系统里面的各种概念。想要理解比特币的工作原理,首先要读的就是 Satoshi Nakamoto 的白皮书:Bitcoin: A Peer-to-Peer Electronic Cash System. 里面的概念可能需要多读几遍才能读懂。另一个值得去得地方是比特币的 Wiki. 对于比特币相关的开发者,官方的文档是必须要读的。

但是,对于一般人来说,要使用比特币,并不需要完全的理解它的运作原理,只需了解比特币的特征,知道几个基本概念即可。

比特币是基于互联网的加密电子货币,可以把它理解为电子黄金。它具有很多黄金的属性,并且从某些角度来看,比特币更具有优势。

首先,它总量固定为2100万枚。它通过一种称为挖矿的形式来发行新的货币,它的产量会大约每隔4年减半,最终达到一个最大值,目前已经产出了不到1400万枚。虽然从长期看来,它使一种通缩型货币,但目前,它仍然处于早期的发行阶段,是严重的通胀型货币。

其次,它是一种去中心化的系统。和传统的金融体系不同,比特币没有一个中央节点来控制它的运作和发行,而是所有的节点通过特定的协议和规则达成的共识。这有两个意义,一个是没有人能够(或者说很难)控制这个系统,比如增发货币,撤销某一笔交易,修改规则等等;另一个是它无法被完全的禁止,因为无法做到关闭某一个主机就能关闭整个系统,只要互联网存在,它就能够存在。所有,有人称它为有史以来最危险的开源项目。

另外,比特币是匿名的。比特币是通过比特币地址来保存比特币。一个比特币地址是类似这样的:13dUm4aNZQDNQpwnX1PxaBQfUdjnFwbba1 这完全是通过随机算法生成的。每个地址对应有私钥,只要拥有了私钥,便拥有了该地址对应的比特币。有意思的是,所有的交易信息在比特币系统里面都是公开的,每个完整的节点都保存有史以来所有的交易记录,但人们并不知道某一个地址是谁所拥有。由于它的匿名,使得它被用于一些非法的活动,比如卖卖枪支毒品,黑客勒索,藏匿财产等,但这并不是比特币的原罪,它只是一个工具而已。不过由于现在不管是国内还是国外的交易所,买卖比特币都需要经过实名认证,所以给追踪比特币交易带来了一些可能。

比特币产业链

挖矿

目前,比特币每天产出的数额大约为3600枚。即使按照目前的币价,每天的产出额也将近100万美元。

根据比特币发行的原理,运行哈希运算的速度越快,获得比特币的概率就越高。而比特币每天产出的数量是有限的,所以比特币挖矿是一场残酷的军备竞赛。比特币挖矿设备经历了四个阶段,每一阶段都比上一阶段的效率提升数个数量级。第一个阶段就是在比特币刚诞生后的几年内,用普通的 PC 即可参与比特币挖矿,这为 CPU 阶段。当比特币开始交易产生价值时,人们发现用显卡挖矿效率更高,这进入了第二个阶段,为 GPU 阶段。然后是 FPGA (现场可编程逻辑门阵列)阶段。目前为 ASIC (专用集成电路)阶段。随着军备竞赛的升级,全网算力越来越高,这也给比特币网络提供了更大的安全性。

比特币全网算力走势

图为过去一年比特币全网算力的变化曲线,一年之内增加了超过10倍。增长这么快一个是因为设备效率的提升,另一个是参与人数的增加。目前比特币全网算力为350P左右,这是什么概念呢,这相当于有35W台最新型的矿机24小时不停的运算。而且,这些矿机只能用来挖矿,不能用作其他用途。容纳上万台比特币矿机的矿场在全球都屡见不鲜。

比特币挖矿曾经是一个暴力的行业。最早的 ASIC 芯片问世时,买入者在很短时间内便能挖回买入矿机的钱,再加上币价的大幅上涨,获得了惊人的回报。那些早期投资烤猫股票的人,更是获得了上千倍的回报。

然而,过去的一年,由于币价的下跌,大量矿机挖出的比特币不够支付电费,投资者血本无归。矿机生产商面临行业洗牌,去年出现的很多矿机商已经倒闭,目前剩下蚂蚁矿机一家独大。

交易

从某种程度上说,比特币算是最完美的投机品了:涨跌幅巨大,不收手续费,7*24不间断交易,没有T+1限制,不需要繁琐的开户门槛,交割极为方便。交易是比特币目前最主要的应用,未来也会继续如此。通过交易,比特币实现了价值的发现,也为其他应用带来的基础。

我第一次想购买比特币时,国内几乎没有看起来正规的交易所,所以没有敢买入。而现在,国内目前至少十几家比特币交易所,国际上也出现了很多。国内最大的有三家交易所,分别是 比特币中国,okcoin 和 火币。由于残酷的市场竞争,国内交易所纷纷放弃收取交易手续费,并且推出支持自动化交易的 API、手机客户端等产品,从体验上完胜传统的券商。这体现出了互联网金融的巨大威力。

比特币价格在过去几年最大涨幅数千倍,带来了巨大的投资机会,很多早期入场者因此获得了巨额的收益,然而更多人在残酷的市场里面血本无归。参与比特币市场交易的人有很多种,有长期看好比特币不断买入持有的,有旷工卖出比特币套现的,也有大量的短线投机者,还有拥有大量资金能够影响比特币价格的人也就是人们俗称的庄家。

过去的一年,由于比特币价格的持续下滑,人们发现做空更容易赚钱。于是出现了融资融币,出现了期货。特比是期货,由于具有高达20倍的杠杆,使得本来就涨跌幅巨大的比特币变得更加危险,比特币交易变相的成为了赌场。庄家也更容易的坐庄了,因为比特币盘子本来就很小,庄家通过期货建仓,现货拉盘或砸盘,在短时间内吃个来回。散户做期货运气好能赚个几倍,但终究是要还回去的。

支付

比特币另外一个重要的应用为支付。和传统支付手段相比,比特币有更低廉的手续费,更快的速度,以及能够匿名支付。我有过几次使用比特币在网上购买 VPS, VPN, SSL 等服务的经历,整个流程非常流畅,不需要提交复杂的个人信息和信用卡信息,也不用担心信息泄露的可能。

在跨境支付上面,比特币有天然的优势。因为比特币是基于互联网的,是没有国界的。没有比特币的话,只能通过银行转账或信用卡支付。然而,银行转账流程特别复杂,周期也很长。信用卡比较方便但门槛较高,很多人比如大学生是没有信用卡的。对于有外汇管制的中国,使用比特币也能够突破这一限制。

现在有越来越多的公司开始支持比特币支付,如新蛋,戴尔,微软等。Paypal 也已经宣布支持比特币支付。也有很多创业公司如 coinbase, bitpay 等为比特币提供类似支付宝的功能,使得商家和消费者更容易使用比特币。

机遇和挑战

比特币也面临着下面这些威胁。

安全性

因为比特币的核心是一串数字,只要得到这这串数字并能支配对应的比特币。这使得保存比特币变得特别不容易,丢失和被盗比特币的事情经常发生。比如最近的:bitstamp 被盗比特尔被盗比特币存钱罐被盗。目前常用的比特币保存技术为冷存储技术,即安装比特币钱包的电脑永不联网,离线生成地址和交易信息,再通过在线的钱包广播交易。

被利用于非法用途

曾经运行在暗网中的丝绸之路是世界上最大的在线毒品和枪支的交易网站,而比特币是其唯一支持的支付方式。虽然丝绸之路网站被美国 FBI 查封。但无数个类似的网站马上建立了起来。国内也出现大量利用比特币概念的传销组织,骗取了大量人的钱财。

政府的政策

在中国,央行是不承认比特币的货币属性的,而是定性为了商品。银行和第三方支付也不被允许参与比特币,这使得比特币交易所的正规化变得十分困难。在美国,目前参与比特币也面临着法律监管的难题,银行对比特币敬而远之。在全球,很多国家禁止了比特币交易,很多银行也视比特币为威胁。

交易所风险

曾经最大的比特币交易所 MT.GOX 的破产,无疑严重的打击了比特币参与者的信心。还有一些其他交易所的跑路,被盗等等,卷走了大量投资者的资金。长期投资者唯一应对的办法是尽快把比特币提现到自己控制的钱包中。

个人的看法

我2011年接触到比特币,2013年开始参与比特币交易,2014年加入了比特币相关的创业团队。不过由于各种原因,目前已经离开了这个创业团队。目前仍在参与比特币交易。

对于比特币,我是长期看好的。比特币目前仍然处于其发展的早期,比特币的价值体现在认同比特币的人数上。比特币的未来会是什么样的,在金融体系中起到什么作用还很难说。对于普通人,可以把比特币当做一种风险投资来看待。