首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Python技术】怎么借助同花顺问财搭建一套简易版的量化交易系统

【Python技术】怎么借助同花顺问财搭建一套简易版的量化交易系统

作者头像
子晓聊技术
发布2026-04-23 14:03:40
发布2026-04-23 14:03:40
1720
举报
文章被收录于专栏:子晓AI量化子晓AI量化

之前写了不少同花顺问财的文章, 有同学私下问我,怎么利用问财筛选的数据打造一套简易版的量化交易系统。

为什么选择同花顺问财呢? 问财是可以通过自然语言描述策略,筛选符合条件的结果。 那么我们借助筛选结果 提醒给 企业微信、钉钉、 飞书等平台, 如果你的策略够精准,经过进一步的筛选,完全可通过接入迅投miniqmt实现自动买入。前提是,你的策略筛选结果就是你要买入的。

我平时用mac和钉钉居多,那这篇文章写个示例, 工作日9点28分定时把策略筛选的结果发送到钉钉消息, 你完全可以改造成 接入miniqmt自动交易,如果对自己策略足够自信的话。

这篇文章分为3个部分:

1、利用apscheduler写一个定时任务, 定于工作日9点28分执行,这个你可以修改成自己想要的。

2、pywencai查询自己的策略,你可以改成自己的策略

3、通过钉钉,方便钉钉通知上班族

钉钉可以通过面对面建群,建个单人群,设置token,设置关键字,就不需要实时盯盘了。

毕竟策略不一定那么完善,毕竟A股受大盘情绪影响、个股表现各异, 等你的策略完善好后,完全可以借助迅投QMT的xtquant接入买卖。

最后附上源代码,需要的自取。 备注:如果发现格式有多余的特殊字符,用普通浏览器打开复制应该没问题。

备注:钉钉新建群,新建机器人修改代码中的token,并设置关键字。修改自己的策略。

代码语言:javascript
复制
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger
import pywencai
import requests
from datetime import datetime
from chinese_calendar import is_workday
# 钉钉机器人配置(需关闭加签验证)
DING_WEBHOOK = "https://oapi.dingtalk.com/robot/send?access_token=xxxxx"
def get_auction_data():
    """获取竞价排名前10的股票数据"""
    try:
        query = "非ST,竞价涨停"   #改成自己的策略
        df = pywencai.get(query=query, sort_key='竞价涨停封单金额', sort_order='desc')
        return df[['股票代码', '股票简称']].head(10)
    except Exception as e:
        print(f"数据获取失败: {str(e)}")
        return None
def dingtalk_markdown(content):
    """发送Markdown格式消息到钉钉"""
    headers = {"Content-Type": "application/json"}
    data = {
        "msgtype": "markdown",
        "markdown": {
            "title": "股票监控提醒",
            "text": content + "\n\n**关键词:股票监控提醒**"  # 必须包含自定义关键词
        }
    }
    response = requests.post(DING_WEBHOOK, json=data, headers=headers)
    print(f"消息发送状态: {response.status_code}")
def job():
    """定时任务主逻辑"""
    if not is_workday(datetime.now()):  # 排除节假日和周末
        return
    data = get_auction_data()
    if data is not None:
        # 生成Markdown表格
        markdown_content = "### 🕘 9:28 竞价数据快报\n"
        markdown_content += "| 代码 | 名称 |\n"
        markdown_content += "|------|------|\n"
        for _, row in data.iterrows():
            print(data)
            markdown_content += f"| {row['股票代码']}  | {row['股票简称']} |\n"
        dingtalk_markdown(markdown_content)
if __name__ == "__main__":
    scheduler = BlockingScheduler(timezone="Asia/Shanghai")
    # 设置周一至周五9:28执行
    scheduler.add_job(
        job,
        CronTrigger(day_of_week='mon-fri', hour=9, minute=28)
        #CronTrigger(day_of_week='*', hour=15, minute=15)
    )
    try:
        scheduler.start()
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子晓聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最后附上源代码,需要的自取。 备注:如果发现格式有多余的特殊字符,用普通浏览器打开复制应该没问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档