Skip to content

常用模版

常用的模版代码,复制以后以便快速开发。

基础选择器模版

python
from wanquant.imp import *

backtest_date_range = "2025-07-13"
select_period = Period.D1  # 选择器周期
select_extend_len = 40  # 扩展数据天数
strategy_type = StrategyType.SELECT  # 策略模式
max_workers = 10  # 进程数量


def on_symbol(so: SymbolOp):
    # 设置标的池
    so.set_symbol(u_api.get_stock_symbol_list_not_st())


def on_select(so: SelectOp):
    # 10日均线需要在20日均线之上 否则不要
    # if not so.last().ma(10) > so.last().ma(20):
    #     return

    # ...上面增加其他选择条件
    so.allow({
        # 传入想展示的数据
        # "上涨天数": so.last().up_days(20),  # 最近20个交易日上涨天数
        # "涨停天数": so.last().up_limit_days(20),  # 最近20个交易日涨停天数
    })


# 启动策略
start_strategy()
# 生成选择器结果
create_html()
create_excel()

基础选择器排名模版

python
from wanquant.imp import *

backtest_date_range = "2025-07-13"
select_period = Period.D1  # 选择器周期
select_extend_len = 40  # 扩展数据天数
strategy_type = StrategyType.SELECT  # 策略模式
max_workers = 10  # 进程数量


def on_symbol(so: SymbolOp):
    # 设置标的池
    so.set_symbol(u_api.get_stock_symbol_list_not_st())


def on_select(so: SelectOp):
    # 10日均线需要在20日均线之上 否则不要
    # if not so.last().ma(10) > so.last().ma(20):
    #     return

    # ...上面增加其他选择条件
    so.allow({
        # 传入想展示的数据
        # "上涨天数": so.last().up_days(20),  # 最近20个交易日上涨天数
        # "涨停天数": so.last().up_limit_days(20),  # 最近20个交易日涨停天数
    })


def on_filter_select(fso: FilterSelectOp):
    # 按照上涨天数排序
    df_sorted = fso.filter_df.sort_values(by=[
        # "上涨天数", "涨停天数"  # 可以根据需要排序字段
    ], ascending=False)  # ascending 为 True是升序 False是降序
    # 取前20个
    top_20 = df_sorted.head(20)
    # 存储筛选结果
    fso.set_symbol(top_20.symbol.to_list())


# 启动策略
start_strategy()
# 生成选择器结果
create_html()
create_excel()

基础信号模版

触发信号以后,生成如1日 5日 10日后的收益率

python
from wanquant.imp import *

backtest_date_range = ["2024-08-01", "2024-08-20"]
select_extend_len = 40  # 扩展数据天数
strategy_type = StrategyType.STRATEGY  # 策略模式
max_workers = 10  # 进程数量
signal_analysis = [1, 5, 10, 20]


def on_symbol(so: SymbolOp):
    # 设置标的池
    so.set_symbol(u_api.get_stock_symbol_list_not_st()[:100])


def on_select(so: SelectOp):
    if not so.last().ma(5) < so.last().ma(20):
        return
    so.allow()


def on_next(no: NextOp):
    # 触发信号以后 n天的收益率
    no.signal(no.last().close, "信号名称")


# 启动策略
start_strategy()

# 生成选择器结果
create_html()
create_excel()