Python股票量化学习(3)

您所在的位置:网站首页 股票量化交易是好是坏 Python股票量化学习(3)

Python股票量化学习(3)

2024-06-10 05:19| 来源: 网络整理| 查看: 265

        搞一个简单的交易策略回测(难点的我也不会啊)。此策略基于布林通道,当股价低于布林通道下轨线且持仓为0时,以下轨线价格全仓买入(不关心风险,反正也不要本钱)。当股价突破布林线上轨且有持仓时,以上轨线价格清仓卖出。(期间也没有考虑交易的费用)

        首先,从MySQL数据库读取已经下载好的股票历史数据,我用的库名是stock_databases。股票就随便选一个。

from sqlalchemy import create_engine import pandas as pd def calculate_boll(code): # 用于数据读取的表字段 columns = 'date, open, high, low, close, volume' # 连接数据库引擎对象 engine = create_engine("mysql+pymysql://root:123456@localhost:3306/stock_databases?charset=utf8") # 读取数据 df = pd.read_sql('SELECT {} FROM {}_{}'.format(columns, code[:2], code[3:]), con=engine,index_col='date') print(df.info()) calculate_boll('sh.600478')

 读取的数据如下图

数据类型在我保存到数据库之前就做了相应的处理,接着计算布林通道:

from sqlalchemy import create_engine import pandas as pd def calculate_boll(code): # 用于数据读取的表字段 columns = 'date, open, high, low, close, volume' # 连接数据库引擎对象 engine = create_engine("mysql+pymysql://root:123456@localhost:3306/stock_databases?charset=utf8") # 读取数据 df = pd.read_sql('SELECT {} FROM {}_{}'.format(columns, code[:2], code[3:]), con=engine,index_col='date') # 计算标准差 standard_deviations = df['close'].rolling(20).std(ddof=1) # 添加布林通道的上轨、下轨和中轨 df['md'] = round(df['close'].rolling(20).mean(), 2) df['upper'] = round(df['md'] + 2 * standard_deviations, 2) df['lower'] = round(df['md'] - 2 * standard_deviations, 2) return df

        有了布林通道的数据后,就可以通过比较最高价、最低价与上下轨的大小来确定交易信号。

import numpy as np import pandas as pd from sqlalchemy import create_engine def trade_signal(code): """ 计算交易信号,当股价低于布林下轨时买入,高于上轨时卖出 :param code: 股票代码 :return: 包含交易信号的DataFrame """ data = calculate_boll(code) # 新建一个DataFrame,以data的index为index df = pd.DataFrame(index=data.index)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3