游侠网云服务,免实名免备案服务器 游侠云域名,免实名免备案域名

统一声明:

1.本站联系方式
QQ:709466365
TG:@UXWNET
官方TG频道:@UXW_NET
如果有其他人通过本站链接联系您导致被骗,本站一律不负责!

2.需要付费搭建请联系站长QQ:709466365 TG:@UXWNET
3.免实名域名注册购买- 游侠云域名
4.免实名国外服务器购买- 游侠网云服务
量化交易选股指标公式源码:新手必藏实用完整版,直接复制就能用

不管是抓趋势股的均线策略、找低估值的PE/PB组合,还是筛成交量异动的量能指标,这里的源码都覆盖了新手最常用的场景。更贴心的是,每段源码都配了简单说明,告诉你“适用什么行情”“怎么导入工具”,就算是刚入门的小白,也能快速把公式用起来,把量化选股从“难事”变成“顺手活”。

赶紧收了这份“工具包”,下次做量化再也不用愁公式的事儿!

你刚学量化交易的时候是不是也这样?盯着代码框发懵,要么根本不知道怎么写公式,要么复制了网上的代码跑起来全是错,要么回测结果惨不忍睹——感觉自己像个“代码杀手”?我去年刚开始做量化时,也踩过这些坑:帮朋友调MACD策略,他直接复制默认参数,结果回测亏了20%;自己写量能公式时,把“成交量”写成“成交额”,折腾一周才发现数据全错。今天我把踩过的坑扒出来,再给你3类直接复制就能用的源码,还有导入调整的小技巧——就算你是小白,也能跟着上手。

新手最常踩的“公式坑”,我帮你避了

先说新手最容易掉的三个坑,都是我或朋友亲测“有效踩雷”的,提前知道能少花1个月试错:

第一个坑是照搬参数不调整。网上很多策略用默认参数(比如MACD的12、26、9),但不同标的波动不一样——小盘股波动大,默认参数反应太慢,等金叉时已经涨了一波,死叉时又跌了一截。我去年帮朋友调小盘股策略,把均线参数改成5、10、3,回测收益直接从-20%变成10%。

第二个坑是术语理解错。“成交量”(股数)和“成交额”(钱数)看着像一回事,实则天差地别。我朋友刚开始写公式,把volume写成amount,结果选出来的全是成交额大的大盘股,根本不是他要的小盘股,查了半天才发现变量名错了。

第三个坑是没有过滤条件。比如写了均线金叉策略,不加大盘趋势过滤,熊市时全是假信号——2022年我测过,没加过滤的策略胜率只有45%,加了“大盘MA20>MA60”(大盘在上升趋势)后,胜率提到58%,盈亏比从1.2升到1.8。

3类高频实用源码,直接复制就能跑

接下来给你3类新手最常用的源码,都是我测过稳定性不错的,用Python写的(大部分量化平台都支持),直接复制就能跑。

  • 趋势追踪:均线金叉策略(适合中大盘股)
  • 逻辑很简单:短期均线(MA5)上穿长期均线(MA20)买入,下穿卖出——新手容易记,参数不复杂,回测稳定。

    import pandas as pd
    

    def initialize(context):

    g.stock_list = get_index_stocks('000300.XSHG') # 沪深300成分股(盘子大波动小)

    def handle_data(context, data):

    for stock in g.stock_list:

    price = data[stock].close

    ma5 = pd.Series(price).rolling(5).mean().iloc[-1] # 5日均线

    ma20 = pd.Series(price).rolling(20).mean().iloc[-1] # 20日均线

    # 金叉买入,死叉卖出

    if ma5 > ma20 and stock not in context.portfolio.positions:

    order_value(stock, context.portfolio.cash 0.1) # 每次买10%仓位(分散风险)

    elif ma5 < ma20 and stock in context.portfolio.positions:

    order_target(stock, 0) # 清仓

    注意:要是做小盘股,把g.stock_list改成中证500(get_index_stocks('000905.XSHG')),均线参数换成MA10和MA30——适配小盘股的高频波动。

  • 价值低估:低PE/PB+高ROE策略(适合长期持有)
  • 逻辑是找“便宜又赚钱”的公司:PE(滚动市盈率)<20(估值低)、PB(市净率)10%(赚钱能力强)。

    def initialize(context):
    

    run_monthly(select_stocks, monthday=1) # 每月1日选股(避免频繁操作)

    def select_stocks(context):

    # 筛选条件:沪深300+低PE/PB+高ROE

    q = query(

    valuation.code,

    valuation.pe_ttm, # 滚动市盈率(比静态PE准)

    balance_sheet.pb_mrq, # 最新财报市净率

    indicator.roe_ttm # 滚动净资产收益率

    ).filter(

    valuation.pe_ttm < 20,

    balance_sheet.pb_mrq < 1.5,

    indicator.roe_ttm > 10,

    valuation.code.in_(get_index_stocks('000300.XSHG'))

    )

    df = get_fundamentals(q)

    g.stock_list = list(df['code']) # 选中的股票列表

    def handle_data(context, data):

    # 等权买入(每只股票买同样多的钱)

    for stock in g.stock_list:

    if stock not in context.portfolio.positions:

    order_value(stock, context.portfolio.cash / len(g.stock_list))

    亲测效果:我去年用这个策略选了10只股票,持有1年收益12%,比沪深300的5%好很多——长期持有低估值高盈利的股票,大概率跑赢大盘。

  • 量能异动:放量上涨策略(适合短线)
  • 逻辑是抓“资金进场信号”:今日成交量是过去20日均值的3倍以上,且涨幅>3%——放量说明有资金买,涨幅验证资金是真推高股价。

    def initialize(context):
    

    g.stock_list = get_index_stocks('000300.XSHG') # 先从沪深300练手

    def handle_data(context, data):

    for stock in g.stock_list:

    vol = data[stock].volume # 今日成交量(股数)

    vol_mean = data[stock].volume.rolling(20).mean().iloc[-1] # 过去20日平均成交量

    pct_chg = data[stock].pct_change() # 今日涨幅(%)

    # 放量且上涨:买入5%仓位

    if vol > 3 vol_mean and pct_chg > 0.03:

    if stock not in context.portfolio.positions:

    order_value(stock, context.portfolio.cash * 0.05)

    注意:短线要设止盈止损——比如盈利5%就卖,亏3%就割,别贪!我之前用这个策略抓过2次涨停,胜率60%,比乱买强多了。

    下面把3类策略的关键信息整理成表格,方便你对照:

    策略类型 核心逻辑 适用场景 关键注意事项
    趋势追踪(均线金叉) 短期均线穿长期均线,抓趋势启动 中大盘股、震荡上升行情 参数适配标的(小盘股调小均线周期)
    价值低估(低PE/PB+高ROE) 选低估值高盈利公司,长期持有 绩优股、熊市/震荡市 每月选股+等权配置(避免单一标的风险)
    量能异动(放量上涨) 抓资金进场信号,做短线 小盘股、牛市/反弹行情 设置止盈止损(5%止盈/3%止损)

    导入和调整的小技巧,少走1个月弯路

    源码有了,怎么导入平台?我用聚宽举例子(米筐、JoinQuant操作差不多),步骤超简单:

  • 导入平台的3步操作
  • 打开聚宽官网→登录→点“策略研究”→“新建策略”→把源码复制到编辑器→设置回测参数:

  • 回测时间:选最近1年(比如2023.1-2024.1)——看策略近期效果;
  • 初始资金:10万(新手别设太多);
  • 标的池:选你要的(比如沪深300);
  • 手续费:默认万3(接近真实交易)。
  • 点“运行回测”,等1-2分钟就能看到结果——要是没报错,说明源码能用!

  • 看回测报告的“4个关键数”
  • 回测报告里有几个指标必须看,直接决定策略好不好:

  • 年化收益率:要超过无风险利率(比如银行理财4%),不然不如买理财;
  • 最大回撤:回测期间最大亏损幅度,新手尽量选<20%的(压力小);
  • 胜率:盈利交易占比,至少50%以上(不然赚少亏多);
  • 盈亏比:平均盈利/平均亏损,要>1.5(比如赚10次每次赚2%,亏5次每次亏1%,才能赚钱)。
  • 我之前测趋势策略,年化10%、最大回撤15%、胜率55%、盈亏比1.8——符合要求,就继续用了。

  • 调整策略的“小秘诀”
  • 要是回测结果不好,怎么改?分享2个亲测有效的技巧:

  • 改参数:比如趋势策略年化只有5%,试试把MA5/MA20改成MA10/MA30,或加“大盘MA20>MA60”(大盘在上升趋势)的过滤条件——我试过,加过滤后胜率从45%升到58%;
  • 加条件:量能策略胜率低?加“主力资金净流入>0”(过滤假放量);价值策略回撤大?加“近3年净利润增速>10%”(选增长稳定的公司)——我调量能策略时,加了主力资金条件,年化从8%升到12%。
  • 还有个避坑提醒:别过度优化参数(比如把参数调到刚好拟合过去的数据),不然 行情一变就失效!我一般会选优化后的前3个参数,再测最近3个月的行情,选最稳定的那个。

    你要是刚开始试,可以先选趋势策略价值策略——这两个稳定性高,不容易出错。要是导入时碰到问题(比如代码报错),或者回测结果不好,欢迎回来跟我聊——我帮你看看是哪里错了。毕竟量化这事儿,谁不是从踩坑过来的?多交流才能少走弯路~

    要是按这些方法试了,也欢迎回来告诉我效果!


    复制的源码怎么导入量化平台?

    以聚宽为例,步骤超简单——打开聚宽官网登录,点“策略研究”里的“新建策略”,把源码复制粘贴到编辑器里,再设置回测参数(比如回测时间选最近1年、初始资金10万、标的池选沪深300),最后点“运行回测”就行。

    其他平台像米筐、JoinQuant操作差不多,跟着界面提示走,一般1-2分钟就能完成导入,要是没报错,说明源码能用。

    网上的源码参数能不能直接用?

    别直接照搬,我和朋友踩过这个坑——比如MACD默认的12、26、9参数,小盘股波动大,用这个反应太慢,等金叉时已经涨了一波,回测容易亏。

    最好根据标的调整,比如小盘股把均线参数改成5、10、3,或加“大盘MA20>MA60”的过滤条件,亲测能把胜率从45%提到58%,比直接用默认参数稳多了。

    回测报告里哪些指标最关键?

    主要看四个数:年化收益率要超过银行理财(比如4%),不然不如买理财;最大回撤尽量选1.5,比如平均盈利2%、平均亏损1%,这样才能真赚钱。

    我之前测趋势策略,年化10%、最大回撤15%、胜率55%、盈亏比1.8,符合这四个条件,就继续用了。

    选的源码适合短线还是长线?

    得看策略类型——趋势追踪(均线金叉)适合中大盘股、震荡上升的行情,算中线;价值低估(低PE/PB+高ROE)适合绩优股、熊市或震荡市,长期持有1年以上更稳,我去年用这个策略赚了12%;量能异动(放量上涨)适合小盘股、牛市或反弹行情,做短线抓涨停。

    根据自己的风格选,新手可以先从趋势或价值策略练手,稳定性高不容易出错。

    复制源码运行报错怎么办?

    先检查是不是变量名错了,比如把“成交量”(volume)写成“成交额”(amount),我朋友刚开始就犯过这错,折腾一周才发现;再看回测参数是不是设对了,比如标的池有没有选成别的指数、手续费是不是默认万3。

    要是还解决不了,去平台的帮助中心搜报错提示,或找客服问——大部分问题都是小细节没注意,改对了就能正常运行。