我的编程+区块链应用感悟
有人说不明白我上篇文章“用Python抓取各交易所公告,并筛选对你有用的内容”提到的编程是干嘛的,简单说是一个定制的搜索,可以任意设置关键字,然后运行这个程序就可以返回我想要的内容。
这个程序编好之后,每天可以为我节省至少半小时的时间,这就是编程带来的好处。当然,这只是其中一项,最近学习编程,为我节省了大量的时间与精力,今天就来梳理下我最近学习编程的感悟。
一、基础与兴趣
我对计算机和编程其实很感兴趣,小的时候觉得计算机非常神秘,还非常厉害,很想在高考选志愿时选择计算机专业,但当时计算机已经过热,找工作不太好找就放弃了计算机。就这样与程序员擦肩而过,要不然我现在也会为996与ICU呼声呐喊(996指程序员早9点到晚9点上班,每周上6天班,长期这样生病直接进重症监护室ICU)。
大学里面学过的课程与编程最相关的就是C语言,理工科不少专业应该都学。但说实话,学习的目的只是为了考试,考完基本就弃用了,工作之后也没用过。
李笑来经常安利编程有多有用,但我一直没有行动,每当想起这事,就有点焦虑。
二、实现
最近在币圈经常要大量交易数字货币,看数字多了,交易实在真心累,在币安一天手动交易最多200BTC,后边又连续做过几天大量交易,眼疼了好几天。
这样下去不行,就想起了程序交易,就问金马学谁的课比较好,他就首推邢不行的量化课程,学习python。
为了解决我的眼疼,释放我的双手,提高交易的准确率,这是我当时学编程最大的动力。
课程内容比较多,但我当时比较着急,是挑着学的,把基本内容先过一遍:基本类型和计算、内置数据结构、条件及循环语句、函数、异常处理。然后直接跳到连交易所API:获取数据、交易、循环下单等。按需学习有时候也是一种捷径和动力。
三、突破
第一个程序非常难,当时为了能够连上币安的数据并下单,花了比较多的时间,毕竟是一步步摸索。还好邢不行有专门安排助理答疑,这点非常有用,因为刚开始一个小小的问题受阻,不但会花去不少时间,还会打击信心。
程序先连接到交易所,获取数据,并处理,筛选出来自己想要的;然后就是根据参数下单,接着实现循环;循环过程中经常遇到各种异常,比如网络突然断了,程序不能停,就需要加入容错,进行异常处理。最后就是根据遇到的各种bug,一点点改进自己的程序。
但是调试好之后的那种成就感,以及运行之后的那种释放感是非常美妙的,也是促使我进一步去学习的动力。
其实连接每个交易所最复杂的是签名与认证,也就是保证数据传输的安全,这个过程搞定,基本上后来就大同小异了。而python上有个库CCXT,把不少大交易所的认证都已经搞定了,并且统一了各个交易所的调取方式,搞定一个交易所的获取数据,下单,提现等,就搞定了一批,以一抵百。这也是python为何如此流行的原因,配套的库非常多,可以省去很多无用功。
而对于一些小交易所,CCXT不支持,就只能自己去编写签名与认证,第一个同样是最难的。我自己当时怎么都搞不定,线上求救也不行,后来去请教金马,他亲自帮我调试才成功,可以说金马也是我编程的引路人,真心感谢!搞定第一个之后,后来的基本上都问题不大了。
就这样,我把交易所上的交易基本搞定,现在仍在继续扩展交易所,用到时就去调试。
三、应用扩展
除了python实现简单的交易之外,还有更多的应用,比如量化,各种策略用程序跑起来,这点我学的比较差,未深入,是下一步的方向。
我倒还想说点别的,比如上篇文章的爬虫,非常实用。
还有利用python实现提醒功能,可以实现发钉钉消息,也可以发微信消息,列举几个应用:
比如我在币安上挂个单,如果成交之后给我发个消息,那我就不用常盯盘了;
再比如我从一个钱包或交易所提取一个币种到另一个交易所,到账之后给我发个消息,我也不用一直等了;
当然你也可以监控比特币的价格,当价格达到多少时,来个消息。。。
还有很多应用,当你想起来时,可以试试谷歌,搜索引擎是非常好的老师。
就这样,我的编程之路算是正式启航了,这个过程其实非常锻炼一个人的细心与严谨,程序上哪怕有一点的差错,都可能产生意想不到的后果。
比如各个交易所的API提现,首先能否提现规定会不一样,如币安要求绑定IP才能提现,火币要求提前存好地址,而比特儿要求使用过的地址才行,Bigone不允许API提现。其次提现数量,如币安和比特儿是从提现数量中扣掉手续费,火币是先扣掉手续费,再填入数量,这些过程走过一遍之后,下一次调用就行了。
在这个过程中,我最大的体验就是根据需求来学习是非常有动力的,当然效率可能会低些,如果能有一些基础会好很多。而这个发展飞快的时代,会遇到很多不懂的东西,怎么办,去学就是了。
编程最大的好处是什么?节省时间,提高效率,解决问题,还是非常值得去学的。我想做的就是把编程与数字货币相结合,实现更多实用的功能,尤其是投资应用上,减少人力,提高效率。