从0到1:手把手教你代码选股

大家好!在之前的文章中,我向大家介绍了 Sequoia:A股自动选股程序。虽然里面内置了很多策略,但很多投资者都有自己独特的投资理念和选股思路,怎么把这些想法转化为可执行的代码常常令人望而生畏。

今天,我想分享一个简单的选股策略实现,演示如何配置自己的选股策略。通过这个例子,我想告诉大家:编写属于自己的选股策略,其实并没有想象中那么困难。

教程

1.修改选股范围

默认程序取沪深京 A 股,运行会比较慢,可以只选择一部分版块, 代码如下:

#filename: work_flow.py
# 取沪深京 A 股
# all_data = ak.stock_zh_a_spot_em()

# 各行业板块
# ak.stock_board_industry_name_em() 
# 取银行板块的个股
all_data = ak.stock_board_industry_cons_em(symbol='银行')

2.创建策略文件

strategy目录创建macd_signal.py文件

# -*- encoding: UTF-8 -*-

import talib as tl
import pandas as pd
import logging


def check(code_name, data, end_date=None, threshold=26):
    if len(data) < threshold:
        logging.debug("{0}:样本小于26天...\n".format(code_name))
        return False

    # 计算MACD
    macd, signal, hist = tl.MACD(
        data['收盘'], 
        fastperiod=12,   # 快线周期
        slowperiod=26,   # 慢线周期
        signalperiod=9   # 信号线周期
    )

    # 判断金叉条件
    golden_cross_detected = (
        macd.iloc[-2] <= signal.iloc[-2] and  # 前一个周期MACD在信号线下方
        macd.iloc[-1] > signal.iloc[-1]       # 当前周期MACD穿过信号线
    )
  
    return golden_cross_detected

在check方法里, code_name是股票名称, data是该股票数据,数据格式如下:

日期
股票代码
开盘
收盘
最高
最低
成交量
成交额 
振幅 
涨跌幅 
涨跌额 
换手率 
p_change

MACD的实现, 直接使用了TA-Lib包, 量化交易的瑞士军刀:TA-Lib技术指标库详解。强烈建议收藏这篇文章, 只面记录了TA-Lib实现的所有技术指标。

3.开启策略文件

#filename: work_flow.py
strategies = {
 # '放量上涨': enter.check_volume,
 # '均线多头': keep_increasing.check, 
 # '停机坪': parking_apron.check,
 # '回踩年线': backtrace_ma250.check,
 # '突破平台': breakthrough_platform.check,
 # '无大幅回撤': low_backtrace_increase.check,
 # '海龟交易法则': turtle_trade.check_enter,
 # '高而窄的旗形': high_tight_flag.check,
 # '放量跌停': climax_limitdown.check,
 'macd金叉': macd_signal.check
}

别忘记在 work_flow.py顶部, 引入新建的策略。

from strategy import macd_signal

4.运行程序

等待片刻, 在sequoia.log文件就会选出macd金叉的股票

总结

代码是思路的载体,策略是智慧的结晶。每一行代码,都可能是通向投资洞察的桥梁。希望这个简单的分享,能为您的投资之路增添一份勇气和智慧。


推荐阅读