个人量化交易学习记录1

论坛 期权论坛 期权     
期权匿名问答   2022-6-5 04:12   16606   4
整体思路就是

  • 先把获取数据搞定
  • 然后看下怎么做策略(我不用来直接做交易策略,先从分析入手,用这个工具来做自动监控,告诉我什么时候可以进场,至于交易的部分,我先手动来)
  • 把自动化观测先建立起来,再看下一步
开始。
Python最适合初学用
最近几天补了一下python,看起来如果想做量化交易,python初期还是最好的工具,因为其简单易入手且库种类丰富(不需要自己写,直接调用)。这里,量化交易我一直理解为和高频交易是两回事,量化不等于高频,所以对时间延迟的要求不必特别高;如果要求很高的话,那么之后可以自己去做代码优化,有更好的实现方式。python的优势在于可以快速搭建mvp,快速验证,但代码效率不一定是最高。
学习的时候选一个适合自己的学习思路的课程
简单插一句,在学习python的过程里,我主要使用了b站,先是找了一个b站最多人浏览的python教程,是国人设置的课程,我看了一两节之后就放弃了,因为刚讲完helloworld就开始讲转置符,唤起了我记忆深处对谭浩强的恐惧。于是我换了一个来自油管搬运的mosh的课程,愉快的学到了最后。
这里我想说,根据我自身的真实感受,中国的教育思路是3d打印式的,比如要讲一栋房子是什么建起来的,中国的思路是,从第一层砖讲起,一层一层往上堆叠,到了离地10cm的地方碰上了管道,就开始讲管道,总之等这个3d的房子打印完,所有东西都会遇到一遍,到时候肯定都会给你讲一遍,你就知道了。国外的课程思路是,讲一栋房子怎样建成,先讲房屋的框架,讲结构是怎么先搭建起来,然后要铺水管走电线,最后做外层。我本人比较适合第二种思路,有助于理解这件事到底是什么。这里建议,如果学习一件事感到痛苦,记得要去换一个其他教学思路的教材,非常有可能不是你不适合学,是当前的教学思路不适合你。
开始尝试写一下
然后说回python,经过几天的学习,基本的python代码知识已经掌握,于是要开始实践了。
诚然实践里肯定还有很多问题,需要一点点磕出来。但是得先有个做这件事的思路框架才能指导行动。
所以定一个小规划。大概分为几个部分。

  • 先实现一个小目标,用python来获取股票数据,其下又要有一些稍微具体点的定义


  • 保存为csv文件;
  • 每一个股票,保存为一个独立的csv文件;
  • 每日定时自动运行(或手动),拉取最新的(昨日)的股票数据,并以增量方式存在其自身的文件内
  • 拉取的股票代码,由一个单独的文件来维护,可随时增减;增的话,从第二天开始会新建一个其文件来做数据的存储,减的话,其原来的文件不会被删除,但是以后不会再有新数据增量;
这里打算,第一期先不做实时的动作,因为我把我的量化定义为非实时的策略操作,也就是说,我不用这个工具去做短期的进出,而是使用它作为我中长期进出的策略判断
写一个流程:
读取要拉取的股票代码文件,存在codes里,可自行维护
for code in codes:
    按当前code补全url,获取股票数据信息,存在code_info里
    把code_info写在文件中,文件名为code.csv
    如果文件有了,就覆盖更新
    如果文件没有,就创建新文件代码是:
import csv
from utility import *

with open('file_path/stock.csv') as code_file: #open stock code file
    code_csv = csv.reader(code_file) # read stock code file, get content of this file
    headers = next(code_csv) # indicate where header is
    for code in code_file: # get current row value
         print(code)
         code = code.replace("\n",'') #去掉转义符,如需
         code_info = pd.DataFrame(get_stock_info(code,'20210101','20220527')) #get current code's info
         write_csv(code_info,code)# 写入各自的csv文件
    code_file.close()
utility.py:
import pandas as pd

#read stock code,从自己维护的股票代码文件中读取
def get_stock_info(stock_code,start_date,end_date):
    url = f'http://quotes.money.163.com/service/chddata.html?code={stock_code}&start={start_date}&end={end_date}'
    rf = pd.read_csv(url, encoding='gb2312')
    return rf

#write,写入code各自的csv文件中,如果没有就新建
def write_csv(content,code): #content is dataframe
    content.to_csv(f'file_path/{code}.csv',index=False,header=True) #if存在,进行覆盖;if 不存在,新建

output:
就会按股票代码名称来创建各自的文件。
stock.csv是我自己维护的要观察的股票代码列表。


最后每个单独文件里就是这样:


遗留的问题,和下一步优化有:

  • 文件做不到增量添加,每次都是全量覆盖重写,需要改进一下;
  • 明天加几个初步的分析指标,在每次获取完数据后直接计算出来写进去;
  • 尝试一下多个数据源,163的比较初级,再看下别的,总结一下到时候列出来;
  • 搞一个数据库来存,然后搞一个定时任务来跑;
  • 自家电脑也不太行,不知道有没有便宜的云服务器和数据库可以用;
基本上数据的部分就可以当做是ok,除非遇到需要清洗的到时候再看怎么处理。下一步就要补补业务知识了。边学边推进吧。
今天先到这。

要是有也在学习的同好,可以加个好友,互通有无。
分享到 :
0 人收藏

4 个回复

倒序浏览
2#
期权匿名回答  16级独孤 | 2022-6-5 04:12:41 发帖IP地址来自 北京
!我也在刚刚接触量化,今天了解了几个CTA 策略,打算明天开始做数据库。
3#
期权匿名回答  16级独孤 | 2022-6-5 04:13:18 发帖IP地址来自 四川宜宾
坚持学习,如何交流
4#
期权匿名回答  16级独孤 | 2022-6-5 04:13:23 发帖IP地址来自 湖北
可以一起建个群交流嘛
5#
期权匿名回答  16级独孤 | 2022-6-5 04:14:21 发帖IP地址来自 北京
你也在学习吗?我现在比较初级,不一定能帮上什么,咱们随时在知乎聊吧,我会把我的过程都写出来。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP