3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,很多投资者需要将同一套策略部署到不同的资金账号上运行,或者根据账号的资金规模与风险承受能力执行差异化的风控和交易逻辑。借助 ptrade 提供的 get_user_name() 接口,可以轻松实现账号识别与个性化交易逻辑的分发。
get_user_name() 用于获取当前登录终端的资金账号。
'123456789'),若获取失败则返回 None。通过在 initialize 或 before_trading_start 阶段读取资金账号,策略可以针对不同账号配置不同的控制参数:
以下示例展示了如何基于 get_user_name() 识别账号并加载不同的风控配置:
def initialize(context):
# 获取当前登录的资金账号
g.user_name = get_user_name()
log.info("当前运行资金账号: %s" % g.user_name)
# 根据账号配置差异化风控参数
if g.user_name == "88010001":
# 稳健型账号配置
g.max_position_ratio = 0.3 # 单股最大仓位 30%
g.stop_loss_rate = 0.05 # 5% 止损
g.security_list = ['600570.SS', '600000.SS']
elif g.user_name == "88010002":
# 激进型账号配置
g.max_position_ratio = 0.8 # 单股最大仓位 80%
g.stop_loss_rate = 0.10 # 10% 止损
g.security_list = ['000001.SZ', '600570.SS']
else:
# 默认风控配置
g.max_position_ratio = 0.2
g.stop_loss_rate = 0.03
g.security_list = ['600570.SS']
set_universe(g.security_list)
def handle_data(context, data):
# 示例交易逻辑:结合风控参数买入股票
cash = context.portfolio.cash
portfolio_value = context.portfolio.portfolio_value
for stock in g.security_list:
current_price = data[stock]['close']
# 计算账号允许的最大下单金额
max_allow_value = portfolio_value * g.max_position_ratio
# 若当前持仓市值未达到上限且资金充足则下单
current_pos = get_position(stock).amount
if current_pos == 0 and cash >= max_allow_value:
order_value(stock, max_allow_value)
log.info("账号 %s 按照最大仓位比例 %s 成功下单 %s" % (g.user_name, g.max_position_ratio, stock))
get_user_name() 可能返回 None,策略中应设置默认保底逻辑。g 全局变量记录账号差异化配置,确保策略在盘中重新拉起时逻辑保持连贯。