关于仓位控制的代码问题。。。。。。。


(jh_ufo) #1

请问如何在资金分配时,能根据自定义的指标来设置最大仓位的比例,如KDJ的J>=100 or J<0时,最大仓位为50%, J>=0 and J< 100时最大仓位为100% :

1. 资金分配

# 平均持仓时间是hold_days,每日都将买入股票,每日预期使用 1/hold_days 的资金
# 实际操作中,会存在一定的买入误差,所以在前hold_days天,等量使用资金;之后,尽量使用剩余资金(这里设置最多用等量的1.5倍)
is_staging = context.trading_day_index < context.options['hold_days'] # 是否在建仓期间(前 hold_days 天)
cash_avg = context.portfolio.portfolio_value / context.options['hold_days']
cash_for_buy = min(context.portfolio.cash, (1 if is_staging else 1.5) * cash_avg)
cash_for_sell = cash_avg - (context.portfolio.cash - cash_for_buy)
positions = {e.symbol: p.amount * p.last_sale_price
             for e, p in context.perf_tracker.position_tracker.positions.items()}

(达达) #2

这里要看你的轮仓逻辑,默认是开盘买收盘卖,每日盘中满仓。
你的意思估计是说根据大盘的KDJ来控制总仓位?还是根据个股的仓位控制每只股票的买入量?


(jh_ufo) #3

是根据大盘的KDJ来控制总仓位