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步运行完成后,直接通过下拉菜单将策略切换到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) # 全仓卖出