如何简单的做量化交易

介绍

首先我不是量化工程师,我只是个后端工程师;其次我对量化也不感兴趣,自己有几把刷子还是了解的,自己不适合做量化交易:

  • 自己没有优秀的模型设计能力
  • 自己是个长线投资,一般一个股票都是至少拿一年以上,短线的涨跌无所谓
  • 99%的量化模型,现实其实没什么价值,看看K线图也不错。优秀的模型比拼的是网络延时和算力。

但通过编程来改善选股还是有其一定的价值。

语言的选择

python! 实在是太方便了,你只要有一丢丢的编程基础就可以了。如下几行代码就可以获得某个股票最近一段时间的5日均值和收盘价格:

# ctp接口,通过tushare接口获取信息

import tushare as ts
import datetime as dt
import matplotlib.pyplot as plt

# 无效的key,请自行去官网申请
ts.set_token('xxxxxxxxxxxx3036b50fd47b983bf51dc843fe3d') 


def getHistoryTrade(pro, code, lastDay):
    """
    查找到最近的数据
    code:股票代码
    lastDay: 最近几日
    """
    end_dt = dt.datetime.now().strftime('%Y%m%d')
    time_temp = dt.datetime.now() - dt.timedelta(days=lastDay)
    start_dt = time_temp.strftime('%Y%m%d')

    df = pro.daily(ts_code=code, start_date=start_dt, end_date=end_dt)

    # 倒序
    df = df.iloc[::-1]

    # 计算5日ma值
    df['ma5'] = df['close'].rolling(window=5).mean()

	# 图表方式呈现
    plt.plot(df['trade_date'], df['close'],label='close')
    plt.plot(df['trade_date'], df['ma5'],label='5ma')
    plt.show()


if __name__ == "__main__":
    pro = ts.pro_api()
    
    # 显示新城控股 最新40个交易日的信息
    getHistoryTrade(pro,'601155.SH',40)

说明

python 环境的安装

我建议在windows下安装,可以使用anaconda, 这个安装包,会安装python环境,并安装大量和计算相关的库,方便后续使用。

可视化开发工具

  • vscode
  • pycharm

都可以

股票信息的获取

我使用的是 tushare,当然你也可以使用其他的接口。
你只要在官网注册一个免费等级的账号,就能够满足你的需求;记得获取api的token,并替代。

在使用前需要pip 安装

pip install tushare 

几个接口调用方法:具体api接口说明

def getStock(pro):
        """
        获取stock信息,保存ts_code , symbol 的对应关系
        """
        data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')

        # 写入文件
        f = open('log.txt','w',encoding='utf-8')
        for i in data.values:
            f.write(str(i)+'\n')
        f.close()
def getMA(code,lastDay):
        """
        获取n日均线和均量
        """
        end_dt = dt.datetime.now().strftime('%Y%m%d')
        time_temp = dt.datetime.now() - dt.timedelta(days=lastDay)
        start_dt = time_temp.strftime('%Y%m%d')
		# 通用行情接口
        df = ts.pro_bar(ts_code=code, start_date=start_dt, end_date=end_dt,ma=[5,6,18,30,36,60])

        dic = df.to_dict('records')

        print(dic[0])

pandas库学习

  • Pandas是Python的一个数据分析包,该工具为解决数据分析任务而创建。
  • Pandas纳入大量库和标准数据模型,提供高效的操作数据集所需的工具。
  • Pandas提供大量能使我们快速便捷地处理数据的函数和方法。
  • Pandas是字典形式,基于NumPy创建,让NumPy为中心的应用变得更加简单

比如我们要计算最近10日收盘价的5日均线:

df['ma5'] = df['close'].rolling(window=5).mean()

10日均线:

df['ma10'] = df['close'].rolling(window=10).mean()

matplotlib库学习

有了计算数据,我们也需要直观的表格图方便我们看出效果。
在这里插入图片描述

matplotlib 是python绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式,使用说明,通过学习各种图表的接口,可以做出让你满意的效果。

最后

事实上,你只需要很基本的python基础就可以完成一些量化模型:

  • 数据的来源只要熟悉几个api接口的使用;
  • 矩阵的数据计算需要你熟悉pandas库;
  • 可视化需要你了解matplotlib 。
    这些你都可以在1周的时间完全掌握。
### 量化交易的基本方法和实现方式 #### 定义与概述 量化交易是一种基于数学模型、统计学理论和技术分析的证券交易方式[^1]。其核心在于通过计算机技术和编程语言自动化执行交易决策过程,从而减少人为干预带来的偏差。 #### 方法论框架 量化交易通常遵循 **I2O** 模型进行设计和实施: - 数据采集(Input, I):获取历史数据、实时行情以及其他辅助信息。 - 策略开发与优化(To Analysis, 2):运用统计学、机器学习等手段构建并测试交易策略。 - 自动化交易执行(Output, O):将经过验证的策略部署到实际市场环境中运行。 #### 编程技能需求 为了成功开展量化交易活动,参与者需掌握一定的技术背景知识[^2]: - 至少精通一种高级脚本语言Python 或 R; - 对低延迟高性能计算有较高要求时,则可能还需熟悉 C/C++ 的应用; - 此外,在某些特定场景下 MATLAB 可能也会被选用作为主要工具之一。 #### 平台选择建议 当前市场上存在多个优秀的开源或商业化的量化交易平台可供初学者尝试使用[^3]: - 聚宽 (JoinQuant): 提供全面的功能覆盖从策略编写至实盘模拟整个周期; - 同花顺(Tushare): 更侧重于提供详尽的数据服务帮助用户深入探索金融市场规律; #### 实际案例解析 - 基于布林带指标选股系统的设计思路 假设我们要建立一套简单的基于布林带的技术面筛选机制用于捕捉短期强势股机会[^4], 下面给出了一种可行方案描述如下: ```python import pandas as pd class TradeStrategy: def __init__(self, stock_code): self.stock_code = stock_code self.buy_price = None def buy(self, price): self.buy_price = price def sell(self, current_close): profit_ratio = (current_close / self.buy_price) - 1 if profit_ratio >= 0.1 or profit_ratio <= -0.05: return True return False def main(): df_stock_data = load_csv('stock_' + 'example.csv') # 加载每只股票的历史K线记录文件 selected_stocks = [] for index,row in df_stock_data.iterrows(): upper_band ,lower_band= calculate_bollinger(row['Close']) # 计算上下轨值 if row['Close'] > upper_band : new_trade_obj =TradeStrategy(row['Code']) new_trade_obj.buy(row['Open_next_day']) selected_stocks.append(new_trade_obj) monitor_profit_loss(selected_stocks,daily_kline_feed()) if __name__ == "__main__": main() ``` 上述代码片段展示了如何定义一个基本的买卖逻辑并通过循环迭代完成初步筛选工作;同时引入了一个自定义类`TradeStrategy`,用来跟踪每次购入后的成本价位以便后续评估收益情况决定是否平仓出局。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡在床板下_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值