吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14111|回复: 92
上一主题 下一主题
收起左侧

[Python 转载] 用python建立自己炒股规则

    [复制链接]
跳转到指定楼层
楼主
ypcgamelife 发表于 2021-3-18 20:47 回帖奖励
用python建立自己炒股规则
自从学了炒股,就希望能用python获取股票数据,验证自己的炒股规则。
终于发现一个全免费的股票包,可以提供股票数据,并全免费。为了防止打广告嫌疑,这里介绍包的使用。并用这个包验证了一个自己的简易规则。
如果大家需要取得股票数据,推荐这个全免费的包。
1.安装包pip install baostock


2.提供的功能
股票数据
  • 日、周、月K线数据,时间范围:1990-12-19至今。
  • 5、15、30、60分钟K线数据,时间范围:1999-07-26至今。
指数数据
  • 日、周、月K线已经包含指数:综合指数,规模指数,一级行业指数,二级行业指数,策略指数,成长指数,价值指数,主题指数,基金指数,债券指数。
  • 时间范围:2006-01-01至今。
季频财务数据
  • 已经包含的财务数据:部分上市公司资产负债信息、上市公司现金流量信息、上市公司利润信息、上市公司杜邦指标信息。
  • 时间范围:2007年至今。
季频公司报告
  • 上市公司业绩预告信息,时间范围:2003年至今。
  • 上市公司业绩快报信息,时间范围:2006年至今。





验证自己的炒股规则,取每天10点30分的数据,涨2%以上卖出500股。
跌2%以上买入1000股。 初始资金 100000元。
以2020全年数据为准,模拟操作一年,最终赚多少。最终结果吓我一大跳。
本程序仅指导大家使用股票数据包,大家依据这个实际买卖股票本人不承担任何后果。
股市有风险,入市须谨慎。
源代码如下:
[Python] 纯文本查看 复制代码
import baostock as bs
import pandas as pd
#baostock股票免费数据
#### 登陆系统 ####
#初始资金和初始股票数。
mymoney=100000
mysocknum=0
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
'''
code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
fields:指示简称,支持多指标输入,以半角逗号分隔,填写内容作为返回类型的列。详细指标列表见历史行情指标参数章节,日线与分钟线参数不同。此参数不可为空;
start:开始日期(包含),格式“YYYY-MM-DD”,为空时取2015-01-01;
end:结束日期(包含),格式“YYYY-MM-DD”,为空时取最近一个交易日;
frequency:数据类型,默认为d,日k线;d=日k线、w=周、m=月、5=5分钟、15=15分钟、30=30分钟、60=60分钟k线数据,不区分大小写;指数没有分钟线数据;周线每周最后一个交易日才可以获取,月线每月最后一个交易日才可以获取。
adjustflag:复权类型,默认不复权:3;1:后复权;2:前复权。已支持分钟线、日线、周线、月线前后复权。 BaoStock提供的是涨跌幅复权算法复权因子,具体介绍见:复权因子简介或者BaoStock复权因子简介。

参数名称	参数描述	算法说明
date	交易所行情日期	
code	证券代码	
open	开盘价	
high	最高价	
low	最低价	
close	收盘价	
preclose	前收盘价	见表格下方详细说明
volume	成交量(累计 单位:股)	
amount	成交额(单位:人民币元)	
adjustflag	复权状态(1:后复权, 2:前复权,3:不复权)	
turn	换手率	[指定交易日的成交量(股)/指定交易日的股票的流通股总股数(股)]*100%
tradestatus	交易状态(1:正常交易 0:停牌)	
pctChg	涨跌幅(百分比)	日涨跌幅=[(指定交易日的收盘价-指定交易日前收盘价)/指定交易日前收盘价]*100%
peTTM	滚动市盈率	(指定交易日的股票收盘价/指定交易日的每股盈余TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/归属母公司股东净利润TTM
pbMRQ	市净率	(指定交易日的股票收盘价/指定交易日的每股净资产)=总市值/(最近披露的归属母公司股东的权益-其他权益工具)
psTTM	滚动市销率	(指定交易日的股票收盘价/指定交易日的每股销售额)=(指定交易日的股票收盘价*截至当日公司总股本)/营业总收入TTM
pcfNcfTTM	滚动市现率	(指定交易日的股票收盘价/指定交易日的每股现金流TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/现金以及现金等价物净增加额TTM
isST	是否ST股,1是,0否


5、15、30、60分钟线指标参数(不包含指数)
参数名称	参数描述	说明
date	交易所行情日期	格式:YYYY-MM-DD
time	交易所行情时间	格式:YYYYMMDDHHMMSSsss
code	证券代码	格式:sh.600000。sh:上海,sz:深圳
open	开盘价格	精度:小数点后4位;单位:人民币元
high	最高价	精度:小数点后4位;单位:人民币元
low	最低价	精度:小数点后4位;单位:人民币元
close	收盘价	精度:小数点后4位;单位:人民币元
volume	成交数量	单位:股
amount	成交金额	精度:小数点后4位;单位:人民币元
adjustflag	复权状态	不复权、前复权、后复权

'''
rs = bs.query_history_k_data_plus("sh.600031",
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
    start_date='2020-01-01', end_date='2020-12-31',
    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)
#取得600031的全年日线。
#### 打印结果集 ####
data_list = []
i=1
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
    i+=1
result = pd.DataFrame(data_list, columns=rs.fields)
#主要取得股票日期和收盘价
#### 结果集输出到csv文件 ####
result.to_csv("D:\\history_A_stock_k_data.csv", index=False)
#print(result)
for k in range(i-1):
    sockdate=data_list[k][0]
    sockclose=float(data_list[k][5])
    print(sockdate)
    print(sockclose)
    rsm = bs.query_history_k_data_plus("sh.600031",
        "date,time,code,open,high,low,close,volume,amount,adjustflag",
        start_date=sockdate, end_date=sockdate,
        frequency="5", adjustflag="3")
    data_list5 = []

    while (rsm.error_code == '0') & rsm.next():
        # 获取一条记录,将记录合并在一起
        data_list5.append(rsm.get_row_data())

    result = pd.DataFrame(data_list5, columns=rsm.fields)
    #result.to_csv("D:\\history_A_stock_5_data.csv", index=False)
#取5分钟数据的最高价,想知道哪些数据,可以输出csv文件查看。
    myprice=float(data_list5[11][4])
    print(myprice)
    if myprice>sockclose:
        if myprice/sockclose>=0.02:
            if mysocknum>=500:
                mysocknum=mysocknum-500
                mymoney=mymoney+500*myprice
                print("卖出价格:",myprice)
                print(mymoney)
                print(mysocknum)
    else:
        if sockclose/myprice>=0.02:
            if mymoney>=(1000*myprice):
                mysocknum=mysocknum+1000
                mymoney=mymoney-1000*myprice
                print("买入价格",myprice)
                print(mymoney)
                print(mysocknum)

#print(result)
print("我的最终金额",mymoney+mysocknum*sockclose)
print("年终盈利:",mymoney+mysocknum*sockclose-100000)








免费评分

参与人数 8吾爱币 +6 热心值 +6 收起 理由
Yueer998 + 1 谢谢@Thanks!
boliuhesi + 1 + 1 热心回复!
未来老中医 + 1 谢谢@Thanks!
hn2zsmzx + 1 + 1 用心讨论,共获提升!
zhangbice + 1 + 1 谢谢@Thanks!
evayang + 1 + 1 用心讨论,共获提升!
draeag + 1 谢谢@Thanks!
wangdao + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
上单小鳄鱼 发表于 2021-3-18 21:05
拿2020年的收益来说事毫无意义,你到18年试试 越买越亏
推荐
RivenCrystal 发表于 2021-9-15 15:51
楼主牛逼,穿越到下午收盘时,先看收盘价
再穿越回上午十点半按照最高价买卖
推荐
CSTG-urdd 发表于 2021-3-18 21:37
感谢分享。
我的最终金额 202325.0
年终盈利: 102325.0
推荐
wangdao 发表于 2021-3-18 21:08
支持分享代码,结果是翻番了,但是看数据1月2日价格17.29,12月31日34.5,1月买入持有到12月底卖出也是翻番,还省了手续费。
推荐
小明同学哟 发表于 2021-3-18 21:24
厉害厉害
6#
tsp666 发表于 2021-3-18 20:51
大佬啊 !  最终受益是多少啊?
7#
bing0 发表于 2021-3-18 20:58
计算机模拟起来确实不错,不过实际股市操作可能不能怎么顺利,不过感谢分享包。
8#
zhuhaity 发表于 2021-3-18 20:59
厉害了大佬,最后赚了还是亏了
9#
啦啦啦啦嘿 发表于 2021-3-18 21:14
虽然不怎么看得懂,但是感觉好厉害
10#
vethenc 发表于 2021-3-18 21:33
太好了,翻倍了就去提五菱宏光MINI
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表