Ptrade日内交易策略详解,完整逻辑与代码(免费开通)
发布时间:4小时前阅读:44
今天我们聚焦一下ptrade中的“日内交易”策略demo,这款策略专门做 “日内 T+0”,只盯一只股票,靠短周期指标判断买卖时机。
日内交易到底在做什么?
“日内交易” 简单说就是 “当天买卖、不留隔夜仓”,这款策略更聚焦 “单标的做 T”—— 先买一笔 “底仓”,再根据行情波动做 “正 T”(先买后卖)或 “反 T”(先卖后买),收盘前把仓位恢复到初始状态,赚的是当天股价波动的差价。核心逻辑分三步,就像 “先打底、再找机会、最后收工”:
1. 盘前准备 + 开盘打底仓
每天开盘前,策略会先 “复位开关”—— 把当天做正 T、反 T 的判断开关都设为 “关闭”,避免前一天的状态影响当天操作;同时设定好 “允许交易的时间”(2013 年 4 月 1 日后才开始,因为之前标的数据不足)。
开盘后,策略会先买一笔 “底仓”(固定 100 股),这是做 T 的基础 —— 有了底仓,才能在当天做 “先卖后买” 的反 T,也能在正 T 时先加仓再卖。
2. 盘中 10 点后,靠 RSI 找做 T 机会
10 点后(对应代码里 “K 线数量超过 30 根”,因为每分钟 1 根 K 线,30 分钟就是 10
点),策略会每隔 5 分钟做一次判断,核心看 “两个周期的 RSI 指标”:
l RSI(相对强弱指数):用来判断股票 “超买” 或 “超卖”—— 数值越高,说明短期涨得越猛,可能要回调;数值越低,说明短期跌得越多,可能要反弹;
l 策略用了 “5 分钟短周期” 和 “15 分钟长周期” 的 RSI:只有两个周期 “意见一致”(共振),才会动手做 T,避免单一指标误判。
1)做正 T(先买后卖):当 15 分钟 RSI 和 5 分钟 RSI 都偏高(说明短期可能还要涨),就先多买 100 股,等股价涨了 1% 再卖掉这 100 股,赚差价;
2)做反 T(先卖后买):当 15 分钟 RSI 和 5 分钟 RSI 都偏低(说明短期可能还要跌),就先卖掉手里的 100 股底仓,等股价跌了 1% 再买回来,补回底仓。
3. 收盘前必恢复仓位
不管当天有没有做 T、有没有赚到钱,策略都会在收盘前(对应代码里 “K 线数量≥238 根”,A 股交易日每天 240 分钟,238 根就是临近收盘)多次尝试把仓位恢复到 “初始 100 股底仓”,保证不把股票留到第二天,避免隔夜的政策、消息风险。
每个模块在 “做什么”?
代码看着复杂,但其实是 “按步骤干活”,咱们把每个核心函数拆开,
初始化函数(initialize)负责给策略 “定规矩”:

这部分是策略的 “基础设置”,就像给家里的电器设 “默认参数”:
l g.security = '510500.SS':定好只操作 “中证 500ETF”(代码 510500),避免策略乱买其他股票(API 里 “标的选择” 的前置设置);
l g.amount = 100:规定每次交易 100 股(A 股最低交易单位是 100 股),保证每次操作符合交易规则;
l g.rate = 1:设定做 T 的 “止盈点”—— 涨 1% 就卖(正 T)、跌 1% 就买(反 T),避免贪心或扛跌;
l g.L = 50和g.S = 80 :给 RSI 设 “判断标准”,后续靠这两个数判断要不要做 T;
l if not is_trade(): set_limit_mode('UNLIMITED'):判断如果是回测(不是实盘),就开启 “无限制回测模式”(API “回测参数设置” 接口),让回测能顺畅计算,不用等实盘的柜台数据。
盘前处理(before_trading_start)负责复位开关 + 设交易时间:

这是每天开盘前的 “准备工作”,核心是 “复位” 和 “防错”:
l 把 “正 T 开关(g.B_T_flag)”“反 T 开关(g.S_T_flag)” 都设为 “关”:避免前一天的开关状态没重置,导致当天误操作;
l current_date < '2013-04-01':因为 510500 这只 ETF 在 2013 年 4 月前数据不全,回测时这段时间就不运行策略(API “时间条件判断” 的常用逻辑),避免用残缺数据算错结果;
l g.handle_data_flag = True:打开 “盘中交易总开关”,让开盘后策略能正常判断和交易。
书接上回,
盘中处理(handle_data)负责核心操作,分四步走:
这部分是策略的 “心脏”,每天盘中会反复调用,按 “打底仓→等时间→判断做 T→收盘恢复” 四步运行:
1)先买底仓,买完就关 “打底仓开关”

l order(g.security, g.amount):按指定数量下单(API “普通下单” 接口),这里是买 100 股底仓;
l 买完底仓后,把 “g.ini_buy_flag” 设为 True(避免当天反复买底仓),同时暂时关 “交易总开关”,给市场一点波动时间,不刚买就操作。
2)等时间:10 点后才开始判断做 T

get_current_kline_count():获取当天已经生成的分钟 K 线数量(API “K 线信息查询” 接口)——A 股 9:30 开盘,每分钟 1 根 K 线,30 根就是 10 点,10 点前行情不稳定,所以策略等 10 点后再动手。
3)每隔 5 分钟,用 RSI 判断做 T


这部分是 “做 T 判断核心”,关键 API 和逻辑要理清:
l get_history(...):获取指定周期的 K 线数据(API “历史行情获取” 接口),这里分别拿了 5 分钟和 15 分钟的 K 线,用来算两个周期的 RSI;
l data[g.security].close:获取标的当前实时收盘价(API “实时行情查询” 接口),把实时价补到 15 分钟 K 线数组里,让 RSI 计算更及时;
l get_position(g.security).enable_amount:获取当前标的的 “可用持仓量”(API “持仓信息查询” 接口),确保有 100 股底仓时才做 T;
l get_rsi(...):自定义的 RSI 计算函数(后面会拆),算出两个周期的最新 RSI 值,只有 “都偏高” 或 “都偏低” 才动手;
l order(g.security, 正负g.amount):正数值是买,负数值是卖(API “普通下单” 接口),买完 / 卖完后打开对应开关,避免重复操作,还记录了买卖价,方便后续算止盈点。
4)达到止盈点就恢复头寸,收盘前必复位

l 止盈逻辑:按之前设定的 1% 目标(g.rate = 1),涨到就卖、跌到就买,恢复到底仓数量;
l order_target(g.security, g.amount):“目标仓位下单” 接口(API “目标仓位下单” 接口)—— 不管当前有多少股,都会自动买 / 卖到 100 股,避免手动算错数量;收盘前用这个接口,能确保仓位恢复到位。
RSI 计算函数(get_rsi)负责算准 “超买超卖”:


这是策略自定义的 “RSI 计算工具”:
l 原理:先算 “一段时间内的平均涨幅” 和 “平均跌幅”,再用 “涨幅 / 跌幅” 算 RSI——RSI 越高,说明这段时间涨得越占优,越可能超买;
l 周期:默认 14 天,但策略里设为 11 天(get_rsi(..., 11)),更贴合短周期日内交易的需求;
l 输出:返回每个时间点的 RSI 值,最后一个值([-1])就是最新的 RSI,用来判断做 T 时机。
这个策略适合谁用?要注意啥?
l 适合人群:想尝试 “日内 T+0”、不想盯多只股票(只盯 1 只)、能接受 “高频判断”(每隔 5 分钟看一次)的学员,尤其适合用 ETF 标的(比如策略里的 510500),因为 ETF 波动相对平稳,手续费低;
l 不适合人群:没时间盯盘(日内交易需要实时关注波动)、怕频繁操作(每天可能多次判断)、追求 “长期持有” 的学员,也不适合用波动太大的个股(比如小盘股,容易触发止损)。
也要注意一下几点:
l order_target的实盘风险:API 文档明确说了,这个接口在回测里能用,但实盘时 “持仓信息更新不及时”—— 回测里买完卖完,仓位瞬时更新,实盘要等券商柜台返回数据,可能会重复下单(比如本来要卖 100 股,没收到反馈就再卖一次),一定要先在仿真盘试 1-2 个月;
l RSI 指标的 “滞后性”:RSI 是根据过去的价格算的,不能预测未来 —— 比如两个周期 RSI 都偏高,可能刚买完就回调,导致正 T 没赚到还亏手续费;
l 手续费成本:日内交易频繁买卖,手续费会 “吃掉” 不少收益 —— 比如每次买卖手续费 0.02%,做一次正 T(买 + 卖)就是 0.04%,一年下来成本不低,实盘前要算清楚手续费。
(我司上市券商平台,可提供QMT/PTrade量化系统,免费使用,支持提供券商VIP交易服务配合使用;现在新开户交易佣金优惠,正在进行AI投ETF/选好股/选好基金等AI投顾工具体验活动;欢迎点击文章上方“问一问”,或文章下方微信+电话,直接联系沟通需求!)
温馨提示:投资有风险,选择需谨慎。
-
六月基金跌得心慌?国金AI选好基金,帮你筛标的、控节奏
2026-07-06 14:52
-
不想下载一堆APP,如何选券商?4类合规渠道横向对比,省心避坑!
2026-07-06 14:52
-
一文讲清:股票、基金、债券、逆回购的交易单位、数量、金额和费率
2026-07-06 14:52


问一问

+微信
分享该文章
