3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在期货量化交易中,资金管理与风险控制是决定策略生命力的核心要素。保证金比例的变动直接影响账户杠杆与强平风险。ptrade 平台提供了 get_margin_rate 与 set_margin_rate 接口,允许开发者在策略运行过程中动态查询与设置期货合约的保证金比例。
set_margin_rate - 设置期货保证金比例set_margin_rate(transaction_code, margin_rate)initialize 或盘前 before_trading_start 中设定)。transaction_code (str):期货合约交易代码(如沪铜为 'CU',沪金为 'AU',股指 IF 为 'IF')。margin_rate (float):保证金比例(例如 5% 输入 0.05)。get_margin_rate - 获取保证金比例get_margin_rate(transaction_code)transaction_code (str):期货合约交易代码。以下示例展示了如何在 ptrade 中结合双均线信号与动态保证金风控机制:
def initialize(context):
# 设置交易标的(沪铜合约)
g.symbol = 'CU2112.XSGE'
g.code = 'CU'
set_universe(g.symbol)
# 初始设置保证金比例为 10%
set_margin_rate(g.code, 0.10)
log.info('初始化保证金比例设置为 10%')
def before_trading_start(context, data):
# 盘前进行风控检查与保证金率调整
current_margin = get_margin_rate(g.code)
log.info('当前 %s 的保证金比例为: %s' % (g.code, current_margin))
# 动态风控示例:若账户浮动盈亏回撤过大,提高保证金比例限制开仓杠杆
if context.portfolio.returns < -0.05: # 回撤超过 5%
set_margin_rate(g.code, 0.20) # 提高保证金比例至 20%
log.warning('账户回撤触发风控预警,提高保证金比例至 20%')
else:
set_margin_rate(g.code, 0.10) # 恢复正常 10%
def handle_data(context, data):
# 获取过去 20 天收盘价
hist = get_history(20, '1d', 'close', security_list=g.symbol)
close_prices = hist['close'].values
ma5 = close_prices[-5:].mean()
ma20 = close_prices[-20:].mean()
# 买入开仓逻辑(金叉且无持仓)
if ma5 > ma20 and get_position(g.symbol).amount == 0:
buy_open(g.symbol, 2)
log.info('金叉买入开仓 %s 2手' % g.symbol)
# 卖出平仓逻辑(死叉且有持仓)
elif ma5 < ma20 and get_position(g.symbol).amount > 0:
sell_close(g.symbol, 2)
log.info('死叉卖出平仓 %s 2手' % g.symbol)
set_margin_rate 和 get_margin_rate 传入的是品种交易代码(如 'CU'),而非全称合约代码(如 'CU2112.XSGE')。set_margin_rate 接口主要作用于策略引擎内部资金计算与风控约束。