CTX策略

CTX策略

之前介绍的策略仅涉及择时,未包含仓位管理和择股,因此称为择时策略。我们的思路是结合使用择时策略择股策略(这里称为CTX策略):

  • 择时策略:针对每只股票,单独计算最优买卖点。
  • 择股策略:综合判断股票池中的每只股票,进行择股与仓位管理。

这种做法使择时与择股的逻辑和细节更清晰,便于策略调试。CTX策略命名规则带一个前缀CTX_,如CTX_DMA.py,其代码结构与择时策略相似,但会引入股票池和账户信息。

如下:

stgs = g.exist_stgs()   # 读取所有运行中的择时策略,作为股票池
ctx = Ctx(g)			# 引入帐户信息
def onTick():
    for stg in stgs:
		...
        ctx.buy(stg, money = 10000) 
		...
        ctx.sell(stg)

def onLast():
    return ctx.into()	# 统计帐户信息,及操作历史, 显示在面板的表格中

exist_stgs函数

取出当前运行的所有择时策略,作为股票池,并返回列表类型:[stg, stg, ...]

试一试

要运行择时+择股策略,需要在面板页面中先后运行两个策略:

  1. 先运行择时策略,例如:DMA策略
  2. 等待择时策略运行结束后,再运行CTX策略,例如:CTX_DMA策略
  3. 查看最后一行总收益(初始100W)

:
如果是手机操作, 第1步运行完成后,直接通过下拉菜单将策略切换到CTX_DMA,然后进行运行。
(注意, 手机直接在新页面中运行CTX_DMA策略可能不会生效。)

结果显示

CTX策略运行结束后,onLast()函数的返回值会在面板上以表格形式展示:

  • 表格最后一行:显示CTX策略的总体收益统计,点击可查看K线图。
  • 其他行:显示CTX策略在每只股票上的收益统计,点击可查看单只股票操作点位。

表格列定义如下:

  • Total:择时策略显示益利情况,CTX策略显示总资产。
  • Days:最后一次持仓时间。
  • HoldDays:总持仓时长。
  • LastWin:最后一次益利。
  • TradeTimes:交易次数。

Ctx对象

Ctx对象关联一个真实或模拟的账户信息,默认初始资金为100万。

Ctx函数

函数名描述
Ctx(g, cash=1000000)初始化账户,默认初始资金为100万
Ctx.buy(stg, vol, money)买入某个策略对应的合约,可以按数量或金额来买。返回买入的数量
Ctx.sell(stg, percent=1)卖出某个策略对应的合约,按照百分比卖出,默认100%。
Ctx.total()获取总资产。
Ctx.cash获取剩余现金。

示例:

ctx = Ctx(g, cash=1000000)		 # 创建一个Ctx对象,关联账户g,设置初始资金为100万。
cnt = ctx.buy(stg, ctx.total())  # 全仓买入, 返回买入数量
ctx.sell(stg)				     # 全仓卖出