总述
以前有这种想法,自从平时下班后自学python 开始,这种想法就越演越烈。其实笔者炒股也只有一年时间,炒股经验远远不足,但想着平时私下时间拿来做点啥事,因此也是这篇文章的由来。
1. 炒股的策略
对于股票的研究,一直想再专门写个专辑论述《炒股论》。特别是这两年量化投资盛行,基本都是在python语言基础上进行的策略回归。
总体来说,常规的股票研究分两种
1) 技术参数回归
把K线历史数据,MACD指标,这些进行参考,然后找出一条有效的策略,使得这个盈率50% -70%之间,这样就可以持续的增大盈亏概率。
例如,技术量化回归中最常用的策略之一:市值< 200亿 ,换手率:3%
2)量价关系与筹码回归
由于很多行情接入点无法获取level 2级别的数据,这使得再单位时间点上的交易数量有差异,这种导致统计也会出现偏差。基于这种方式,其实区别第一种看趋势行情,它更倾向于当下行情。通过统计计算大致得出主力与散户的比率,所有持仓人筹码的盈亏比,这样来指导下一步计划。
例如,统计当日各个阶段的买入和卖出量,每一笔订单累计到整体的成交量得出 主力大单与小单之比q,筹码盈亏比k
炒股真的可以赚钱吗?
-- 当然可以。只是喜忧参半,到头所剩无几,随着参与的次数越多,各种成本平摊下来,最终可能还是个负数。
有些私募机构确实通过获得了收益,在如今的中国一些机构里,量化投资更加盛行。它最大的好处是避免了人为因素,行业周期因素,因此更适合长期。
就像做T 轮动一样,无论行情如何变动,只要每天有3%的波动,那么就可以获取这每天的波动点。
炒股本质是博弈。那么我们就需要研究下涨跌概率。通过已经所选的策略 放在历史行情当中进行回归测试,检查是否满足赢亏比。
用python 需要哪些准备?
1. 基础。 简单语法,定义函数、名词参数。 推荐python 基础教程、python 简明教程
2. 线程。简单的线程并不难,了解就够。 属于高阶部分,部分网上也有介绍。这样可以实现各个函数的分工
3. 模块。这个可能才是重点,如何调用别人的模块,如何获取数据。基础内容中必学之一
可能这里需要爬虫,通过东方财富,同花顺或者新浪股票网页获取数据保存文件下来,当然也可以直接调用现行的接口。 比如 tushare, 新的pro版本已经是部分免费
也就是说,一个python 程序的本质,就是模块中至少有tushare、pandas等等搭配的过程
如何用python 实现炒股中赚钱?
数据。这个比较容易获取,甚至套用已有的网络数据,如文章末尾的实例
算法。这部分是技术核心,一般机构公司都保密而不公开,而且策略随市场变化,基本每个月都会变动以适用新的行情。后期专门讨论此系列。
策略回归。国内已经有很多平台可以用,先参考成熟的平台比如米宽,同花顺,这些平台也有数据,注册平台后直接通过编辑免费使用
重点:在于编写一套何种策略,才能增大你的盈利概率,即使不用回归历史行情。
模型实例 1:假设市场上交易只有两人, 张三(A) 和李四(B) 同时手上各有10个苹果,每个苹果的成本是1元,若张三以单价2元卖出5个给李四时,请问李四若以3元的单价进行回卖给张三,至少要卖出几个,才能不至于亏损?
当进行多次买卖后,双方会到达一种新的平衡,若出现手上的苹果出现2:8比率时,此时的苹果价格会是多少?
这种解释的启发,会获得算法上的灵感。
比如笔者平时摸索,自己建立了几个小的经济数学模型,通过自我探讨成交量和价格波动关系,得到资金波动 公式k。然后通过当前的成交量,当前的价格来计算未来某一价格的最大可能性
当然这个模型不可能百分之百让你盈利,做这样的结果,目的是尽可能的增加你的预测概率。对于是否存在有百分之百的概率,对此我表示谨慎的态度,也是我尽力研究的方向
比如用baostock 平台数据获取下来的数据,然后加入自己计算的策略(简略参考部分)
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import baostock as bs
from matplotlib.dates import DateFormatter
import datetime
#### 登陆系统
lg = bs.login()
stock = "sh.600996"
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond error_msg:'+lg.error_msg)
rs = bs.query_history_k_data_plus(stock,
"date,code,open,high,low,close,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2019-06-20',frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:'+rs.error_code)
print('query_history_k_data_plus respond error_msg:'+rs.error_msg)
data_list = []
while (rs.error_code == '0') & rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
result.to_csv("./stock.csv", index=False)
#### 结果集输出到csv文件 ####
bs.logout()
data = pd.read_csv('/Users/few/stock.csv')