PTrade 量化入门有哪些基础代码指令?
发布时间:10小时前阅读:57
PTrade量化策略的代码结构非常清晰,核心就两个函数 + 几组常用指令,掌握以下这些就能写出第一个能跑的策略。
️ 策略骨架:两个核心函数
所有PTrade策略都围绕两个固定函数搭建,函数名和参数不能改:
python
编辑
def initialize(context):
"""策略启动时执行一次,用来设参数、定股票池"""
pass
def handle_data(context, data):
"""核心函数,按设定频率(每天/每分钟)重复执行,买卖逻辑写在这里"""
passinitialize:搭舞台,只跑一次。设置股票池、基准、全局变量等一次性准备工作handle_data:在台上演出,周期性执行。取行情、判断条件、下单,所有交易逻辑都写在这里
还有一个可选的 before_trading_start(context),每天开盘前执行一次,适合做盘前数据准备。
全局对象与上下文
g:全局变量容器,挂在g上的变量(如g.security)在整个策略中都能读写,用于跨函数传递数据context:上下文对象,包含账户资金、持仓等信息,如context.portfolio.cash获取可用现金data:当前时间点的行情数据,如data[security]['close']获取最新收盘价
行情数据类指令
| 指令 | 用途 | 示例 |
|---|---|---|
set_universe() | 设置股票池 | set_universe(['000001.SZ']) |
get_history() | 获取历史K线数据 | get_history(20, '1d', 'close', security) |
get_current_data() | 获取实时行情 | 获取当前最新价、涨跌幅等 |
get_fundamentals() | 获取基本面数据 | 查询流通市值、PE等财务指标 |
get_index_stocks() | 获取指数成分股 | 获取沪深300成分股列表 |
股票代码格式:沪市加 .SS(如 600570.SS),深市加 .SZ(如 000001.SZ),格式写错会报错。
交易下单类指令(最核心)
这是新手最需要掌握的四个下单函数:
order(security, amount) — 按股数买卖
python
编辑
order('600000.SS', 100) # 买入100股
order('000001.SZ', -200) # 卖出200股(负数=卖出)order_target(security, target_amount) — 调整到目标股数
python
编辑
order_target('600519.SS', 300) # 持仓调到300股(自动算买卖差额)
order_target('300750.SZ', 0) # 清仓(目标0股)order_value(security, value) — 按金额买卖
python
编辑
order_value('600036.SS', 10000) # 买入1万元
order_value('000858.SZ', -5000) # 卖出5000元order_target_value(security, target_value) — 调整到目标市值
python
编辑
order_target_value('600519.SS', 50000) # 持仓市值调到5万元⚠️ 买入数量/金额传正数,卖出传负数;股票最小委托单位为100股整数倍。
技术指标类指令
PTrade内置了常用技术指标函数,直接调用即可:
get_MACD():计算MACD指标get_KDJ():计算KDJ随机指标get_RSI():计算RSI相对强弱指标get_CCI():计算CCI顺势指标
️ 辅助工具类指令
| 指令 | 用途 |
|---|---|
log.info() | 输出日志信息,方便复盘排查 |
get_position() | 查询当前持仓 |
check_limit() | 判断是否涨跌停 |
filter_stock_by_status() | 过滤ST、停牌、退市股 |
get_trading_day() | 获取交易日信息 |
send_email() | 发送邮件通知 |
完整示例:双均线策略(量化界的Hello World)
把上面的指令串起来,就是一个能跑的完整策略:
python
编辑
def initialize(context):
g.security = '000001.SZ'
set_universe([g.security])
def handle_data(context, data):
security = g.security
# 获取过去20天收盘价
df = get_history(20, '1d', 'close', security, fq=None, include=False)
# 计算5日和20日均线
ma5 = df['close'][-5:].mean()
ma20 = df['close'][-20:].mean()
# 获取当前持仓
position = get_position(security).amount
# 金叉买入
if ma5 > ma20 and position == 0:
cash = context.portfolio.cash
order_value(security, cash * 0.9)
log.info('金叉买入 %s', security)
# 死叉卖出
elif ma5 < ma20 and position > 0:
order_target(security, 0)
log.info('死叉卖出 %s', security)写好后先跑回测验证效果,再切模拟盘观察,最后小资金实盘,别跳过任何一步。
想上手PTrade量化?加我微信或打电话,优惠佣金开户+PTrade权限免费开通,一站式搞定!
温馨提示:投资有风险,选择需谨慎。
-
看不懂K线总踩坑?国泰海通形态大师,自动抓买卖信号不用猜
2026-09-14 18:18
-
选行业总踩坑?华泰证券【行业透视】:一键看清景气度,选赛道不迷茫
2026-09-14 18:18
-
长城证券网上开户流程详解:手机开户步骤与官方入口
2026-09-14 18:18


问一问

+微信
分享该文章
