承接上篇内容我们已经梳理了单标的日内 T0 策略的整体运行框架以及初始化、盘前处理两个基础模块。本篇将深入策略的核心执行层拆解盘中交易判断的完整流程、自定义 RSI 指标的代码实现并总结策略适用场景与实盘运行的关键风险点。一、盘中核心处理函数handle_data全拆解handle_data是策略的执行心脏盘中会按周期持续触发整体按照「打底仓→控时间→判信号→平仓位」四步有序运行覆盖从开盘到收盘的全交易时段。1. 第一步开盘买入底仓锁仓防重复策略启动后优先执行底仓建仓操作仅在首次触发时执行完成后立即关闭底仓买入开关避免当日重复下单。if not g.ini_buy_flag: order(g.security, g.amount) # 买入100股底仓 g.ini_buy_flag True # 标记底仓已买入防止重复执行 g.handle_data_flag False # 临时关闭交易总开关避免建仓后立即做T核心 APIorder(标的, 数量)为 PTrade 普通下单接口正数为买入负数为卖出。设计逻辑建仓后临时关闭交易总开关给行情留出波动缓冲期防止刚建仓就触发做 T 信号提升策略稳定性。2. 第二步时间窗口控制10 点后启动做 T策略通过分钟 K 线数量判断交易时段开盘前 30 分钟10 点前不执行任何做 T 判断规避开盘初期行情波动剧烈、信号失真的问题。python运行k_num get_current_kline_count() # 获取当日已生成的分钟K线数量 if k_num 30: return # 30根K线以内10:00前不做交易判断核心 APIget_current_kline_count()返回当日分钟 K 线根数。A 股 9:30 开盘每分钟生成 1 根 K 线30 根对应 10:00。设计逻辑开盘初期资金博弈激烈、价格跳变频繁延后启动做 T 可以过滤无效信号降低误操作概率。3. 第三步双周期 RSI 共振触发做 T 信号满足时间条件后策略每隔 5 分钟执行一次信号判断基于5 分钟短周期 15 分钟长周期的 RSI 共振规则分别触发正 T、反 T 操作。以下为反 T先卖后买触发逻辑示例# 反T触发条件双周期RSI同时处于低位、持有足额底仓、未开启反T开关 if rsi_15m 100 - g.L and rsi_5m 100 - g.S: if get_position(g.security).enable_amount g.amount and not g.S_T_flag: order_id order(g.security, -g.amount) # 卖出100股底仓 if order_id is not None: log.info(日内看空做反T) g.S_T_flag True # 标记反T已执行防止重复卖出 g.S_T_cost data[g.security].price # 记录反T卖出成本价用于后续止盈计算关键 API 与逻辑说明行情获取通过get_history()拉取 5 分钟、15 分钟周期 K 线数据结合data[标的].price实时价格补全 K 线保证 RSI 计算时效性。持仓校验get_position(标的).enable_amount查询可用持仓数量确保有足额底仓时才执行反 T避免卖空。开关机制每类做 T 操作执行后立即标记开关防止同一交易日反复开仓同时记录成交成本价为后续止盈计算提供基准。共振规则仅当长、短两个周期 RSI 同时满足阈值条件时才下单通过双指标过滤单一周期的误判信号。4. 第四步止盈平仓 收盘强制复位做 T 开仓后策略持续监控价格达到 1% 止盈目标即平仓恢复底仓收盘前强制执行仓位复位确保当日无隔夜持仓。# 正T止盈价格相对买入价上涨1%卖出加仓部分 if g.B_T_flag: if data[g.security].price g.B_T_cost * (1 g.rate / 100): order_id order(g.security, -g.amount) if order_id is not None: log.info(做正T后恢复头寸) g.B_T_flag False # 反T止盈价格相对卖出价下跌1%买回底仓部分 if g.S_T_flag: if data[g.security].price g.S_T_cost * (1 - g.rate / 100): order_id order(g.security, g.amount) if order_id is not None: log.info(做反T后恢复头寸) g.S_T_flag False # 收盘前强制复位目标仓位固定为初始底仓数量 if k_num 238: log.info(收盘前多次尝试将持仓恢复到开盘持有量) order_id order_target(g.security, g.amount) # 目标仓位下单接口 if order_id is not None: log.info(收盘清算)止盈逻辑以开仓成本价为基准按预设的g.rate11%计算止盈价到达后立即平仓锁定差价收益。收盘复位order_target(标的, 目标数量)为目标仓位接口无论当前持仓多少都会自动买卖至目标股数兜底保证收盘仓位与初始底仓一致规避隔夜风险。二、自定义 RSI 计算函数get_rsi实现解析策略内置了自定义 RSI 计算函数适配日内短周期交易的需求相比系统内置指标更灵活可控。def get_rsi(array_list, periods14): length len(array_list) rsi_values [np.nan] * length # 初始化结果数组不足周期时为空值 if length periods: return rsi_values # 1. 计算首个周期的平均涨幅、平均跌幅 up_avg 0 down_avg 0 first_t array_list[:periods 1] for i in range(1, len(first_t)): if first_t[i] first_t[i-1]: up_avg first_t[i] - first_t[i-1] # 上涨累加涨幅 else: down_avg first_t[i-1] - first_t[i] # 下跌累加跌幅 up_avg up_avg / periods down_avg down_avg / periods # 2. 计算第一个RSI值 rs up_avg / down_avg rsi_values[periods] 100 - 100 / (1 rs) # 3. 迭代计算后续所有时间点的RSI加权平滑更新 for j in range(periods 1, length): if array_list[j] array_list[j - 1]: up array_list[j] - array_list[j - 1] down 0 else: up 0 down array_list[j - 1] - array_list[j] # 加权平均更新涨跌幅提升最新价格的权重占比 up_avg (up_avg * (periods - 1) up) / periods down_avg (down_avg * (periods - 1) down) / periods rs up_avg / down_avg rsi_values[j] 100 - 100 / (1 rs) return rsi_values计算原理与设计要点基础公式RSI 100 - 100/(1RS)其中 RS 平均涨幅 / 平均跌幅取值范围 0-100数值越高代表上涨动能越强。平滑方式采用移动加权平均更新涨跌幅让最新价格对指标的影响更大更贴合日内短周期交易的灵敏度需求。周期适配默认 14 周期为通用标准策略实际调用时采用 11 周期进一步提升日内信号的响应速度。输出规则返回完整的 RSI 数值序列取最后一个值[-1]即为当前最新指标值用于交易信号判断。三、策略适用场景与实盘风险提示1. 适用与不适用人群适合人群希望尝试单标的日内 T0、偏好低波动 ETF 标的、能接受高频次盘中判断的交易者尤其适合中证 500ETF 等宽基 ETF波动平稳、交易成本低做 T 容错率更高。不适合人群无法实时关注行情、排斥频繁交易、偏好长期持有策略的投资者高波动小盘股也不适用该策略容易触发极端行情导致亏损。2. 实盘运行三大风险点1order_target接口的实盘适配风险order_target目标仓位接口在回测环境中持仓数据瞬时更新运行顺畅但实盘环境下券商柜台持仓数据存在延迟若未及时收到成交回报可能触发重复下单。建议实盘上线前必须在仿真环境运行 1-2 个月验证或自行增加持仓校验、去重逻辑避免重复交易。2RSI 指标的天然滞后性RSI 属于滞后性技术指标完全基于历史价格计算无法预测未来行情。双周期共振仅能降低误判概率无法完全规避 —— 例如共振看多后股价可能随即回调导致正 T 浮亏。建议可结合成交量、波动率等指标做过滤或设置止损阈值控制单次做 T 的最大亏损。3高频交易的手续费侵蚀日内做 T 属于高频交易买卖双向产生手续费与交易成本。假设单次买卖合计成本 0.04%每日多次交易叠加后长期会显著侵蚀收益。建议实盘前精确核算佣金、印花税、过户费等全成本调整止盈幅度覆盖交易成本优先选择低佣金账户与免印花税的 ETF 标的。总结本套日内 T0 策略逻辑清晰、结构简单非常适合作为 PTrade 平台的入门学习案例核心思路是通过底仓锁定 双指标共振 收盘复位在控制隔夜风险的前提下捕捉日内波动收益。实盘应用时建议优先在仿真环境充分回测与调参优化 RSI 阈值、止盈幅度、交易频率等参数同时充分评估交易成本与自身风险承受能力。风险提示本文仅为量化策略技术分享与代码学习不构成任何投资建议。证券市场有风险量化交易存在不确定性实盘操作请谨慎决策。本文使用部分伪代码防范风险实测代码可后台拿取
PTrade 日内交易策略详解(下):盘中交易逻辑、RSI 实现与实盘风险提示
承接上篇内容我们已经梳理了单标的日内 T0 策略的整体运行框架以及初始化、盘前处理两个基础模块。本篇将深入策略的核心执行层拆解盘中交易判断的完整流程、自定义 RSI 指标的代码实现并总结策略适用场景与实盘运行的关键风险点。一、盘中核心处理函数handle_data全拆解handle_data是策略的执行心脏盘中会按周期持续触发整体按照「打底仓→控时间→判信号→平仓位」四步有序运行覆盖从开盘到收盘的全交易时段。1. 第一步开盘买入底仓锁仓防重复策略启动后优先执行底仓建仓操作仅在首次触发时执行完成后立即关闭底仓买入开关避免当日重复下单。if not g.ini_buy_flag: order(g.security, g.amount) # 买入100股底仓 g.ini_buy_flag True # 标记底仓已买入防止重复执行 g.handle_data_flag False # 临时关闭交易总开关避免建仓后立即做T核心 APIorder(标的, 数量)为 PTrade 普通下单接口正数为买入负数为卖出。设计逻辑建仓后临时关闭交易总开关给行情留出波动缓冲期防止刚建仓就触发做 T 信号提升策略稳定性。2. 第二步时间窗口控制10 点后启动做 T策略通过分钟 K 线数量判断交易时段开盘前 30 分钟10 点前不执行任何做 T 判断规避开盘初期行情波动剧烈、信号失真的问题。python运行k_num get_current_kline_count() # 获取当日已生成的分钟K线数量 if k_num 30: return # 30根K线以内10:00前不做交易判断核心 APIget_current_kline_count()返回当日分钟 K 线根数。A 股 9:30 开盘每分钟生成 1 根 K 线30 根对应 10:00。设计逻辑开盘初期资金博弈激烈、价格跳变频繁延后启动做 T 可以过滤无效信号降低误操作概率。3. 第三步双周期 RSI 共振触发做 T 信号满足时间条件后策略每隔 5 分钟执行一次信号判断基于5 分钟短周期 15 分钟长周期的 RSI 共振规则分别触发正 T、反 T 操作。以下为反 T先卖后买触发逻辑示例# 反T触发条件双周期RSI同时处于低位、持有足额底仓、未开启反T开关 if rsi_15m 100 - g.L and rsi_5m 100 - g.S: if get_position(g.security).enable_amount g.amount and not g.S_T_flag: order_id order(g.security, -g.amount) # 卖出100股底仓 if order_id is not None: log.info(日内看空做反T) g.S_T_flag True # 标记反T已执行防止重复卖出 g.S_T_cost data[g.security].price # 记录反T卖出成本价用于后续止盈计算关键 API 与逻辑说明行情获取通过get_history()拉取 5 分钟、15 分钟周期 K 线数据结合data[标的].price实时价格补全 K 线保证 RSI 计算时效性。持仓校验get_position(标的).enable_amount查询可用持仓数量确保有足额底仓时才执行反 T避免卖空。开关机制每类做 T 操作执行后立即标记开关防止同一交易日反复开仓同时记录成交成本价为后续止盈计算提供基准。共振规则仅当长、短两个周期 RSI 同时满足阈值条件时才下单通过双指标过滤单一周期的误判信号。4. 第四步止盈平仓 收盘强制复位做 T 开仓后策略持续监控价格达到 1% 止盈目标即平仓恢复底仓收盘前强制执行仓位复位确保当日无隔夜持仓。# 正T止盈价格相对买入价上涨1%卖出加仓部分 if g.B_T_flag: if data[g.security].price g.B_T_cost * (1 g.rate / 100): order_id order(g.security, -g.amount) if order_id is not None: log.info(做正T后恢复头寸) g.B_T_flag False # 反T止盈价格相对卖出价下跌1%买回底仓部分 if g.S_T_flag: if data[g.security].price g.S_T_cost * (1 - g.rate / 100): order_id order(g.security, g.amount) if order_id is not None: log.info(做反T后恢复头寸) g.S_T_flag False # 收盘前强制复位目标仓位固定为初始底仓数量 if k_num 238: log.info(收盘前多次尝试将持仓恢复到开盘持有量) order_id order_target(g.security, g.amount) # 目标仓位下单接口 if order_id is not None: log.info(收盘清算)止盈逻辑以开仓成本价为基准按预设的g.rate11%计算止盈价到达后立即平仓锁定差价收益。收盘复位order_target(标的, 目标数量)为目标仓位接口无论当前持仓多少都会自动买卖至目标股数兜底保证收盘仓位与初始底仓一致规避隔夜风险。二、自定义 RSI 计算函数get_rsi实现解析策略内置了自定义 RSI 计算函数适配日内短周期交易的需求相比系统内置指标更灵活可控。def get_rsi(array_list, periods14): length len(array_list) rsi_values [np.nan] * length # 初始化结果数组不足周期时为空值 if length periods: return rsi_values # 1. 计算首个周期的平均涨幅、平均跌幅 up_avg 0 down_avg 0 first_t array_list[:periods 1] for i in range(1, len(first_t)): if first_t[i] first_t[i-1]: up_avg first_t[i] - first_t[i-1] # 上涨累加涨幅 else: down_avg first_t[i-1] - first_t[i] # 下跌累加跌幅 up_avg up_avg / periods down_avg down_avg / periods # 2. 计算第一个RSI值 rs up_avg / down_avg rsi_values[periods] 100 - 100 / (1 rs) # 3. 迭代计算后续所有时间点的RSI加权平滑更新 for j in range(periods 1, length): if array_list[j] array_list[j - 1]: up array_list[j] - array_list[j - 1] down 0 else: up 0 down array_list[j - 1] - array_list[j] # 加权平均更新涨跌幅提升最新价格的权重占比 up_avg (up_avg * (periods - 1) up) / periods down_avg (down_avg * (periods - 1) down) / periods rs up_avg / down_avg rsi_values[j] 100 - 100 / (1 rs) return rsi_values计算原理与设计要点基础公式RSI 100 - 100/(1RS)其中 RS 平均涨幅 / 平均跌幅取值范围 0-100数值越高代表上涨动能越强。平滑方式采用移动加权平均更新涨跌幅让最新价格对指标的影响更大更贴合日内短周期交易的灵敏度需求。周期适配默认 14 周期为通用标准策略实际调用时采用 11 周期进一步提升日内信号的响应速度。输出规则返回完整的 RSI 数值序列取最后一个值[-1]即为当前最新指标值用于交易信号判断。三、策略适用场景与实盘风险提示1. 适用与不适用人群适合人群希望尝试单标的日内 T0、偏好低波动 ETF 标的、能接受高频次盘中判断的交易者尤其适合中证 500ETF 等宽基 ETF波动平稳、交易成本低做 T 容错率更高。不适合人群无法实时关注行情、排斥频繁交易、偏好长期持有策略的投资者高波动小盘股也不适用该策略容易触发极端行情导致亏损。2. 实盘运行三大风险点1order_target接口的实盘适配风险order_target目标仓位接口在回测环境中持仓数据瞬时更新运行顺畅但实盘环境下券商柜台持仓数据存在延迟若未及时收到成交回报可能触发重复下单。建议实盘上线前必须在仿真环境运行 1-2 个月验证或自行增加持仓校验、去重逻辑避免重复交易。2RSI 指标的天然滞后性RSI 属于滞后性技术指标完全基于历史价格计算无法预测未来行情。双周期共振仅能降低误判概率无法完全规避 —— 例如共振看多后股价可能随即回调导致正 T 浮亏。建议可结合成交量、波动率等指标做过滤或设置止损阈值控制单次做 T 的最大亏损。3高频交易的手续费侵蚀日内做 T 属于高频交易买卖双向产生手续费与交易成本。假设单次买卖合计成本 0.04%每日多次交易叠加后长期会显著侵蚀收益。建议实盘前精确核算佣金、印花税、过户费等全成本调整止盈幅度覆盖交易成本优先选择低佣金账户与免印花税的 ETF 标的。总结本套日内 T0 策略逻辑清晰、结构简单非常适合作为 PTrade 平台的入门学习案例核心思路是通过底仓锁定 双指标共振 收盘复位在控制隔夜风险的前提下捕捉日内波动收益。实盘应用时建议优先在仿真环境充分回测与调参优化 RSI 阈值、止盈幅度、交易频率等参数同时充分评估交易成本与自身风险承受能力。风险提示本文仅为量化策略技术分享与代码学习不构成任何投资建议。证券市场有风险量化交易存在不确定性实盘操作请谨慎决策。本文使用部分伪代码防范风险实测代码可后台拿取