使用DeepSeek进行Python策略开发教程
准备工作:
1. 如果您第一次阅读使用此教程,请务必先阅读【使用AI模型进行策略开发导读】,将有利于您更好的驾驭AI大模型工具。
2. 使用大模型辅助策略开发之前, 请先下载金字塔的Python API文档。
[size=0.85em]m-ke rnels # 基于抽象计算机开发的应用程序
[Python] 复制代码
#目录结构如下:
jzt_python_API # 由于DeepSeek对文档解读的大小有限制,所以我们将API说明拆分成以下两个markdown文件。
|-- jzt_API.md # 金字塔的python接口说明,包含API基本方法、交易函数、数据查询等章节
|-- 股票财务相关.md # 专业股票财务数据相关接口说明,(若策略中涉及相关内容时,再将其上传给DeepSeek学习使用)
开始会话:
1. 告知DeepSeek学习任务、以及工作背景。
和DeepSeek对话时,其实类似于给一个学生布置学习任务,只要任务中指明明确的目标、清晰的学习流程、提出任务的输出要求,那么它就不会有偷懒行为。例如使用如下提示词,可以让DeepSeek更深度的学习文档。
提示词模板如下:
[Python] 复制代码 你现在是一名资深策略开发工程师,专注于金字塔决策交易系统平台的量化策略开发。我已上传 jzt_API.md 文档,其中包含该平台的 Python API 详细信息。
请按照以下步骤深度学习该文档:
1.通读文档:完整阅读 API 文档,识别核心模块,梳理函数/方法的逻辑关系;掌握所有函数、方法、类及返回值类型。
2.逐步解析:按照文档结构,逐部分总结 API 的功能、调用方式,并列出关键参数和典型返回值。
3.归纳总结:以 Markdown 表格或要点形式,整理 API 主要接口、用途及适用场景。
4.代码示例:为 API 中的核心功能编写 Python 代码示例,演示典型用法,并进行代码推理。
5. 代码验证:确保代码能够正确运行,并分析 API 的潜在错误或异常处理方法。
6.自测应用:假设一个量化交易场景,并使用 API 设计一个解决方案,说明调用逻辑。
学习完成后,请以结构化方式汇报你的学习成果,包括:
1.API 关键内容总结(表格或要点)
2.核心代码示例
3.API 在量化交易中的应用场景
4.可能存在的使用限制或注意事项
学习完成后,直接回复“API 学习完成”,并附上总结内容。之后,我会提供策略需求,让你编写量化交易策略。
注:
1、我们可以根据自身的实际需要调整和完善提示词。(技巧:可以将自己的使用场景、目的、要求等信息提供给DeepSeek,让它单独帮你生成针对性的提示词)
2、若DeepSeek学习中总结反馈的内容存在错误,我们要及时纠正它;确保后续可以更精准的实现策略需求。
2. 学习完毕后,提交明确的策略逻辑、策略目标等内容给DeepSeek进行处理。
策略需求提交可以根伟以下两种形式:
1. 一次性提交
定义:一次性提供完整需求,包括目标、场景、逻辑、约束等,我直接生成最终结果。
优点
高效直接:一次提交即可获得完整策略,减少交互次数,适合时间紧迫的情况。
逻辑完整:我能基于全貌设计一致的代码和方案,避免迭代中的碎片化。
降低沟通成本:你只需清晰描述一次,无需多次调整。
适合明确需求:当你已充分思考策略细节时,能快速进入开发阶段。
缺点
前期负担重:要求你一次性想清楚所有细节,可能增加准备时间。
修正难度大:若需求有误或 API 限制未考虑,需大幅调整,浪费初步工作。
灵活性低:不易适应中途发现的问题或新想法。
适用场景
策略简单明确(如标准均线交叉)。
你已熟悉 jzt_API.md,能准确预判 API 能力。
追求快速交付完整代码。
提示词模板示例:
[PEL] 复制代码 任务目标: 你是一名资深量化策略开发工程师,专注于金字塔决策交易系统平台的量化策略开发。我需要你根据双均线金叉死叉逻辑开发一个趋势跟随策略,交易 RB00 螺纹钢连续,完整实现以下功能。
策略概要:
- 策略类型:趋势跟随策略
- 交易逻辑:基于 5 周期短期均线与 20 周期长期均线的交叉,金叉买入,死叉卖出。
- 风险管理:止损 5%,止盈 10%,控制单笔交易风险。
- 数据需求:至少 60 周期的 15 分钟 K 线数据(字段:close),用于计算均线。
数据获取与均线计算:
- 用 `history_bars` 获取 RB00 的 15 分钟 K 线数据(60 周期,字段 'close')。
- 计算并展示 5 周期和 20 周期简单均线(SMA)。
交易信号生成:
- 金叉(5 上穿 20)生成买入信号,死叉(5 下穿 20)生成卖出信号。
止盈止损逻辑:
- 实现止损 5%(最新价下跌 5% 时触发卖出)和止盈 10%(最新价上涨 10% 时触发卖出)。
2.迭代式提交
定义:分阶段提供需求,例如先给核心逻辑,再补充约束或优化要求,每次基于我的反馈调整。
优点
灵活调整:可以在开发过程中根据我的输出(代码、分析)动态修正方向,避免一开始锁定不合理的需求。
逐步完善:适合复杂策略,允许从简单原型开始,逐步添加细节(如风控、优化),降低初期复杂度。
交互性强:每次迭代都能验证我的理解是否正确,减少误解风险。
适应性好:若 jzt_API.md 有未预见的限制,我可及时提醒,你再调整需求。
缺点
时间成本:多次交互可能拉长总周期,尤其是简单策略。
连贯性挑战:若每次需求不明确,可能导致策略逻辑前后不一致。
依赖反馈:需要你频繁检查我的输出并提供清晰的下一步指引。
适用场景
策略复杂或探索性强(如多指标组合、新颖逻辑)。
你对最终目标有大致想法,但细节需边试边定。
希望逐步验证 API 的适用性。
接下来我们采用迭代提交需求的形式演示策略的编写过程,通过这种方式即符合策略开发的过程、又可以帮助我们平缓的掌握金字塔的API接口内容。我们以实现双均线交易系统为例:
第一次迭代提示词如下:
[PEL] 复制代码 任务目标: 你是一名资深量化策略开发工程师,专注于金字塔决策交易系统平台的量化策略开发。我需要你根据双均线金叉死叉逻辑开发一个趋势跟随策略,交易 RB00 螺纹钢连续,按照以下步骤进行迭代开发。
策略概要:
- 策略类型:趋势跟随策略
- 交易逻辑:基于 5 周期短期均线与 20 周期长期均线的交叉,金叉买入,死叉卖出。
- 风险管理:止损 5%,止盈 10%,控制单笔交易风险。
- 数据需求:至少 60 周期的 15 分钟 K 线数据(字段:open, high, low, close),用于计算均线。
迭代 1:数据获取与均线计算:
- 任务:实现 RB00 的 K 线数据获取并计算 5 周期和 20 周期均线。
- 输入内容:
- 请用 `history_bars` 获取 RB00 的 15 分钟 K 线数据(60 周期,字段 'close')。
- 计算并展示 5 周期和 20 周期简单均线。
生成的示例代码如下,但是示例代码并不完全符合金字塔python策略的结构,使用者只需告知DeepSeek存在的问题即可,以免影响后续的迭代。
我们将代码复制到金字塔的python编译器中,编译并执行,确保代码没有语法错误、执行错误、逻辑错误后,再迭代主干的交易逻辑部分。
注:生成的代码存在的问题不尽相同,需要我们针对报错信息、策略基本结构针对性的指明问题所在。(必要时使用者应该结合API文档的信息排查问题例如:获取历史数据的返回值类型为 ndarray,deepseek在处理时可能会默认为其他类型使用,造成运行时报错。)
第二次迭代提示词如下:
[PEL] 复制代码 任务:基于 5 周期与 20 周期均线交叉,生成 RB00 的买入/卖出信号。
输入内容:
- 请实现 5 周期均线与 20 周期均线的交叉判断逻辑。
- 金叉(5 上穿 20)生成买入信号,死叉(5 下穿 20)生成卖出信号。
输出要求:
- 提供生成交易信号的 Python 代码。
生成的代码如下所示:
同样将代码复制到金字塔的python编译器中,编译并执行,确保代码没有语法错误、执行错误、逻辑错误后,再继续迭代需求。
第三次迭代提示词如下:
[PEL] 复制代码 任务:为 RB00 双均线策略增加止盈止损逻辑,基于已有信号判断持仓后的价格波动。
输入内容:
- 实现止损 5%(最新价下跌 5% 时触发卖出)和止盈 10%(最新价上涨 10% 时触发卖出)
对生成的代码进行验证、研读分析,让使用者和DeepSeek共同进步。及时发现并解决实现过程中的问题。
注:由于我们没有对止盈止损的算法进行规范,所以DeepSeek采取记录开仓价和最新价作为计算因子进行计算盈亏幅度。
那么我们后期可以要求其改为使用持仓均价和最新价计算盈亏。面对细节或者算法不符合需求时,只要DeepSeek多次对话指明需求即可完成调整。
我们只要根据需要,不断通过迭、调整细化的方式,一步步从基础的数据获取、均线计算到复杂的交易信号生成、执行与风险管理,最终完成了完整的策略开发流程。通过这种不断的学习与实践,你将能进一步提升量化策略的开发能力,构建更复杂、更精细的交易系统。希望这次迭代开发教程对你有所帮助,并能够为你的量化交易之路提供坚实的基础。
总结:
迭代式开发:这种方法帮助我们将复杂的策略开发分解为多个小步骤,每个步骤都有明确的目标和输出。通过逐步验证和调整,确保策略在每个阶段都能够正确运行,避免了整体策略开发过程中可能出现的错误或遗漏。
模块化结构:每个迭代阶段都专注于一个特定的功能模块,从数据处理到交易执行,再到回测优化,这使得整个开发流程更加高效和易于维护。
灵活性与扩展性:你不仅学习了如何实现一个基础的双均线策略,还掌握了如何在策略开发过程中进行优化和调整,使得策略能够应对不同的市场环境和风险需求。
|