全部
文章&策略
学习干货
问答
官方
用户头像sh_*219t3e
2025-09-29 发布
之前我分享过一个小工具网站,支持国内主流量化平台,可以让 AI 直接帮你写各个平台的策略代码,直接生成可运行的策略代码,代码质量远高于直接使用 DeepSeek、Trae 等平台。上线之后获得了非常多朋友的好评。 大家可以直接用描述策略,然后一键生成可运行的完整策略代码,也可以把它当做一个API 查询工具。 AI工具平台:https://iris.findtruman.io/ai/tool/ai-quantitative-trading/ 我看平台正在开发SuperMind支持,很快就能支持同花顺了
浏览1869
评论45
收藏7
用户头像sh_****893u0j
2026-03-09 发布
为何这种事情没有公告?为了跑程序特意买了季度会员。请问这块什么时候升级完成?
浏览43
评论2
收藏0
用户头像mx_**327w3p
2026-03-09 发布
如题
浏览21
评论1
收藏0
用户头像神盾局量子研究部
2023-05-15 发布
背景与目的 之前我们有了策略回测代码,到实盘要经过熟悉实盘API、写代码、调试代码的环节,大概还需要1-2周的时间才能实盘,有非常多的用户到这一步 会束手无策,甚至放弃! 现在,有了回测代码直接实盘的功能,可以省去这个步骤,让刚入门的朋友也可以直接拿回测代码进行实盘了。很棒!为我们的工程师点赞! 此外还新增了一些接口,方便实盘交易。 不断降低实盘的门槛是我们的目标,如果您有任何好的想法意见请随时留言! 本功能需要重启研究环境才能生效! 策略实盘交易(回测代码1分钟实盘) ?调用方法: research_trade( name, source_code, capital_base=100000, frequency='DAILY', stock_market='STOCK', benchmark=None, trade_api=None, signal_mode=True, dry_run=False, recover_dt=False, ) ​ ?参数说明: name:str,策略名称,会在./persist/下生成一个同名目录,用于存放持久化的策略信息 source_code:str,策略代码,可从策略研究模块中直接复制,代码置于"""..."""中 capital_base: float,初始资金量 如果接入了TradeAPI对象,且 signal_mode=False,那么此参数无意义 frequency: str,策略频率,'DAILY'或'MINUTE' stock_market: str,策略类型,默认'STOCK' benchmark: str,基准指数 trade_api: TradeAPI对象,绑定需要仿真交易的资金账号 如果不传入TradeAPI对象,即 trade_api=None,此时为模拟交易 如果传入TradeAPI对象,此时为仿真交易 signal_mode: bool,(新增)默认为 True signal_mode=True,此时策略实际上运行的时初始资金为capital_base的模拟交易,context、get_orders等方法返回的结果均为模拟交易中计算的数据,与资金账号的数据无关;策略下单在模拟交易撮合成交后,才会通过trade_api下单至柜台 signal_mode=False,此时策略中context、get_orders等方法返回的结果均为从 柜台查询,策略下单也会直接下至柜台 dry_run: bool,试运行,立即返回,默认为 False recover_dt: bool或 str,(新增)是否断点运行,默认为 False recover_dt=False,从当前时点开始执行,不从断定运行 recover_dt=True,从上次策略结束时点开始运行 recover_dt='today',从当日开始运行,此模式下只会补执行 before_trading与 open_auction,handle_bar依旧从当前时间开始执行 recover_dt='yyyyMMdd HH:mm',从指定时间开始运行 ?️ 返回值: RealtimeService类 ?作用: 模拟交易:撮合机制与回测相同 仿真交易:通过仿真柜台撮合,更贴近真实交易环境 ❗注意事项: 策略需在9:00前开启运行,否则在未设置recover_dt的情况下,会跳过before_trading等步骤 初始化TradeAPI时需要指定下单策略order_policy,MarketPolicy为市价下单;LimitPolicy为限价下单。如未指定,由于策略下单时使用均价,可能存在多位小数,最终实盘账户下单的时候可能产生废单 signal_mode=True时,如想在context中获得仿真账号的持仓、资金等数据,可以使用同步函数 sync_trade_api() ?示例: from tick_trade_api import TradeAPI #初始化TradeAPI时需要指定下单策略,MarketPolicy为市价下单;LimitPolicy为限价下单 trade_api=TradeAPI('69271711',order_policy=MarketPolicy) source_code=""" # 股票策略模版 def init(context): pass # 盘前执行 def before_trading(context): pass # 开盘时运行函数 def handle_bar(context, bar_dict): order_id = order('000001.SZ', 100) print(get_orders()) try: cancel_order(order_id) except: print('撤单失败') print(get_open_orders()) print(get_tradelogs()) print(context.portfolio.stock_account) print(context.portfolio.positions) """ rtrade = research_trade( '研究环境策略', source_code, frequency='MINUTE', trade_api=trade_api, signal_mode=False, recover_dt='today' ) ​ trade_api=TradeAPI('69271711',order_policy=MarketPolicy) 中的账号是模拟资金账号或者是实盘资金账号。 其他更新 这次还增加了几个功能 策略框架中增加 : cancel_order_all() 全撤 get_tradelogs()获取当日全部成交订单 get_orders() 获取委托,和get_order()一致,主要时和tradeapi中函数名对齐 tradeapi增加: get_open_orders() 获取当日未成订单 cancel_order_all() 全撤
浏览40031
评论13
收藏73

精华 编写第一个量化策略(手把手详细版教程)内含策略代码

用户头像量化官方小助理
2023-05-04 发布
编写第一个量化策略(手把手详细版教程)  对于大部分人来说,量化交易是非常陌生与神秘的。本节内容将带你开启第一个量化策略!  本节内容摘要:    1.理解量化策略的基本框架。    2.学会编写一个简单的量化交易策略。    3.学会将量化交易策略绑定实盘模拟交易,并实时收到交易策略的买卖信号。  1.理解量化策略的基本框架   通常情况下,完整的量化交易策略至少需要确定两件事:    A.交易标的,即买什么;    B.确定交易时机,即怎么买卖。   让我们来设计一个简单完整的量化交易策略:    策略交易标的:贵州茅台;    策略交易时机:5日均线与20日均线金叉时,买入;5日均线与20日均线死叉时,卖出。  2.学会编写一个简单的量化交易策略  第一步:打开SuperMind量化交易平台,先在上方导航栏点击“我的策略”—“策略编译”,再点击蓝色按钮“+新建策略”,接着点击已创建的策略进入策略编译器页面,如下:  温馨提示:“回测列表”下方三个按钮,可以设置编译器字体大小,背景颜色,编译设置,开启全屏编译,查看API文档,如下:    第二步:理解量化交易策略框架对应的代码框架。def init(context): #初始化函数:确定交易标的def handle_bar(context, bar_dict): #定时运行函数:确定交易时机  框架理解:   1.def init(context)与def handle_bar(context, bar_dict)是两个函数,函数格式固定为:def 函数名(参数),其中def后面带空格键,函数末尾必须带冒号。   2.def init(context)函数是初始化函数,只运行一次,确定初始化条件;def handle_bar(context, bar_dict)函数是定时运行函数,平台默认该函数定时运行。日级策略,每日9:30;分钟级策略,交易期间内的每分钟。   3.“#”后面为注释内容,用于注释代码,便于编写和阅读。  第三步:确定交易标的:context.security = '600519.SH'。  温馨提示:   1.context是账户对象,该对象存放所有账户相关信息,持仓、可用现金、资产盈亏。   2.context.security是在账户对象下,设置security变量,存放在账户内,这里我们需要确定交易标的,即:context.security = '600519.SH'。def init(context): context.security = '600519.SH'#已确定交易标的def handle_bar(context, bar_dict): #定时运行函数:确定交易时机  第四步:确定交易时机,即为:5日均线与20日均线金叉时,买入;5日均线与20日均线死叉时,卖出。   从交易时机出发,我们需要计算交易标的5日和20日均线,那么5、20日均线需要用历史行情数据的收盘价来计算。   整个流程即:获取历史行情20日的收盘价数据———计算5、20日均线———判断5、20日均线,进行买卖交易。    A.获取历史行情20日的收盘价数据:     1.找到函数历史数据函数:history     2.填写函数参数,获取到数据:      i.交易标的,即:获取那个股票的数据。      ii.数据字段:['close']收盘价,即:获取哪个数据。      iii.输入历史长度,即:获取多长时间的数据。      iv.获取数据的时间步长,即:获取日线级步长数据。      v.填写是否跳过停牌数据,复权选项,返回数据格式。      最终结果即为:history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1)     3.将获取到的数据储存,便于计算,即:closeprice = history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1)#获取证券过去20日的收盘价数据 closeprice = history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1)    B.计算5、20日均线:     1.获取数据值,即:closeprice['close'],['close']可以获取储存中的收盘价数据,格式为closeprice['close']。温馨提示:closeprice是我们刚才获取的数据,但是数据有股票、时间、数值,我们直接用['close']获取收盘价数据值用于计算即可。     2.选取数据长度,即:closeprice['close'].iloc[-5:]。iloc[]用于取值,我们之前获取20个数据,但5日均线只需要过去5日的收盘价,因此iloc[-5:]即为获取倒数第五个到最后一个数据。温馨提示:      i.iloc[:]是获取所有数据。      ii.iloc[:x]是从第一个获取到第x个,不包括第x个。      iii.iloc[x:y]是从第x个到第y个,包括x,但不包括y。      iv.iloc[-x:]获取倒数第x个到最后一个数据。     3.计算均值,即closeprice['close'].iloc[-5:].mean(),赋值给MA5。同理MA20=closeprice['close'].mean(),即对所有值取平均,相当于MA20=closeprice['close'].iloc[:].mean()。#计算二十日均线价格 MA20 = closeprice['close'].mean()#计算五日均线价格 MA5 = closeprice['close'].iloc[-5:].mean()    C.判断5、20日均线,进行买卖交易:     1.if判断条件,即为 if MA5 > MA20:。温馨提示if判断函数的格式为if +添加判断+:,其中if后面必须带一个空格键,其次末尾必须带冒号。     2.当MA5小于MA20时,我们再对持仓市值判断,如果有持仓,那么持仓市值必然大于0,需要进行卖出交易,我们直接通过context账户对象中portfolio资产组合内stock_account股票账户下来获取持仓市值,即为:context.portfolio.stock_account.market_value。     3.下单买入交易:      i.当触发MA5大于MA20时,我们需要买入股票,这时候我们可以使用order_target_percent下单函数,该函数以目标市值占比下单。      ii.输入下单函数的参数,order_target_percent函数需要输入两个参数:       1.下单的股票,即为context.security,我们之前将交易标的传入进去,可以直接用。       2.下单的占比,即为1,取值范围[0,1],此时取1,表示全仓买入股票。      iii.触发条件后程序提醒,当代码执行完下单函数后,我们用log.info()来打印日志,这样我们也可以看到程序下单了。      温馨提示:log.info()内你可以直接输入中文,例如:log.info('条件满足!买入贵州茅台啦!')# 如果5日均线大于20日均线,则全仓买入股票if MA5 > MA20: # 按目标市值占比下单 order_target_percent(context.security, 1) # 记录这次买入 log.info("买入 %s" % (context.security))     4.下单卖出交易:      i.当触发MA5小于MA20时,我们需要卖出股票,这时候我们可以使用order_target下单函数,该函数以目标股数下单。      ii.输入下单函数的参数,order_target函数需要输入两个参数:       1.下单的股票,即为context.security,我们之前将交易标的传入进去,可以直接用。       2.下单的目标股数,即0,因为我们需要将持仓股票卖出,卖到0股为止。      iii.触发条件后程序提醒,当代码执行完下单函数后,我们同log.info()来打印日志,这样我们也可以看到程序下单了。# 如果5日均线小于20日均线,并且目前有头寸,则清仓股票elif MA20 > MA5 and context.portfolio.stock_account.market_value > 0: # 卖出所有股票,使这只股票的最终持有量为0 order_target(context.security, 0) # 记录这次卖出 log.info("卖出 %s" % (context.security))最终完整代码:def init(context): # 设置要操作的股票:贵州茅台 context.security = '600519.SH'# 设置买卖条件,每个交易频率(日/分钟/tick)调用一次def handle_bar(context, bar_dict): # 获取股票过去20天的收盘价数据 closeprice = history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1) # 计算20日均线 MA20 = closeprice['close'].mean() # 计算5日均线 MA5 = closeprice['close'].iloc[-5:].mean() # 如果5日均线大于20日均线,则全仓买入股票 if MA5 > MA20 : # 按目标市值占比下单 order_target_percent(context.security, 1) # 记录这次买入 log.info("买入 %s" % (context.security)) # 如果5日均线小于20日均线,并且目前有头寸,则清仓股票 elif MA20 > MA5 and context.portfolio.stock_account.market_value > 0: # 卖出所有股票,使这只股票的最终持有量为0 order_target(context.security, 0) # 记录这次卖出 log.info("卖出 %s" % (context.security))第五步 回测量化交易策略   通过以上4步,我们已经完成了量化交易策略编写,那么接下来我们需要进行量化交易策略回测。    A.首先,我们尝试去跑通整个历史行情,排查代码错误。     i.右上角设置回测历史长度,设置资金,设置交易频率。          ii.点击左上角“编译运行”按钮,右边出现量化交易策略在历史行情中的表现情况         B.当量化交易策略能跑通整个历史行情后,我们可以确定该代码正确无误,随后点击右上角蓝色按钮“进行回测”。页面跳转至回测页面,在回测详情界面,您可以查看策略收益曲线,风险指标,每日持仓,交易明细,输出日志等信息,如下:    C.学会将量化交易策略绑定实盘模拟交易,并实时收到交易策略的买卖信号     1.在回测显示结果页面,右上角点击蓝色按钮开启模拟交易,可以自行选择:从当前日开始模拟,在已有的回测基础上继续模拟.如下图:          2.至此,我们成功开启了模拟交易,可以查看您的模拟交易账户详细情况:交易明细、持仓、盈亏情况、账户风险指标等等。如下图:     3.您可以为您模拟交易账户新建模拟交易、暂停策略运行、发布策略至社区、重启策略、查看策略运行日志、查看策略代码。注意:重启按钮只会在策略运行错误后显示,如果策略运行正常,显示暂停按钮。新建模拟交易如下图:
浏览46675
评论42
收藏398
策略回测收益图

精华 长期有效,公开征集意见反馈。

用户头像量化官方小助理
2023-03-09 发布
请大家不要客气,任何意见建议可以在这里评论提出。 被采纳后我们将奖励1G研究环境内存 3个月。
浏览20419
评论163
收藏7
用户头像mx_*035qmo
2026-03-09 发布
求助,【我的研究】部分显示功能升级中,后面还能用吗?
浏览72
评论5
收藏2
用户头像sh_***494to70PW
2026-03-09 发布
量化投资与策略研究过程中,港股实时数据的获取与高效处理,是策略回测有效性、实盘执行稳定性的核心前提。在API市场筛选适配接口时,普遍存在接口可用性参差不齐、需大量底层封装、数据稳定性不足等问题,影响策略研发与落地效率。基于长期港股量化实战经验,本文梳理港股实时数据API的接入逻辑、实操方法及落地应用,保留可直接复用的代码示例,聚焦数据在策略回测、实盘监控中的实际价值,供量化投资者与策略研究者交流参考。 量化研究与实盘操作中,对港股数据的需求可明确划分为两类核心场景:一是瞬时快照数据获取,用于历史行情比对、策略回测数据补全及离线统计分析;二是实时推送数据获取,用于策略实盘验证、股价波动监控及动态信号生成。针对两类场景,无需复杂技术架构,采用WebSocket实时订阅与HTTP快照获取两种方式,可覆盖绝大多数量化策略的研发与落地需求。 一、核心需求与数据痛点剖析 对量化投资者与策略研究者而言,港股实时数据接入的核心诉求的是“数据准确、传输稳定、处理高效”,结合实战经验,当前接入过程中主要存在两大核心痛点,直接影响策略研发效率与实盘效果: 其一,实时性与稳定性不达标。量化策略的盈利逻辑高度依赖数据时效性,尤其是中高频策略,数据延迟哪怕达到数百毫秒,都可能导致信号失效、交易成本增加;部分接口标称“实时推送”,实则采用周期性拉取模式,不仅延迟较高,还易出现数据丢包、断连等问题,无法满足实盘监控与高频策略执行需求。 其二,数据处理成本较高。策略研发需聚焦逻辑优化,若接口返回数据格式不规范,需额外编写大量代码进行解析、清洗与转换,不仅占用研发时间,还可能引入数据误差,影响回测结果的准确性。标准化JSON格式数据可直接用于策略回测、可视化分析,是降低处理成本的关键。 结合实战场景,梳理标准化港股API接入流程,可直接用于策略研发落地: 接口选型:根据策略需求,确定采用WebSocket(实时场景)或HTTP(快照场景)接口,确认接口URL有效性及数据传输协议; 标的锁定:明确策略关注的港股标的代码,以热门标的00700.HK(腾讯控股)为例,精准对接目标数据,避免冗余数据占用资源; 数据解析:从接口返回的JSON数据中,提取最新价格、时间戳等核心字段,过滤无关冗余信息,降低数据处理成本; 落地应用:将解析后的有效数据,按需存入数据库用于回测复盘,或接入策略模型用于实盘信号生成、风险监控。 两类接入方式的适用场景对比,可根据策略类型精准选择,提升研发效率: 接入类型 核心适用场景 适配策略类型 WebSocket 实盘监控、动态信号生成、高频行情跟踪 中高频策略、实时风控策略 HTTP GET 历史数据补全、策略回测校验、离线统计分析 低频策略、价值量化策略 实战建议:策略研发初期,建议先通过轻量脚本跑通接口逻辑,验证数据准确性、传输稳定性及格式规范性后,再接入正式回测框架或实盘系统,可大幅降低调试成本,避免因数据问题导致策略研发返工。 二、核心接入方式实操 结合量化实战场景,分别拆解WebSocket与HTTP两种接入方式的实操逻辑,保留完整可复用代码,聚焦核心数据获取功能,适配策略研发与落地需求,无需额外底层封装。 1. WebSocket实时订阅:适配实盘与高频场景 WebSocket基于长连接实现服务器主动推送,数据传输延迟低、连续性强,适用于中高频策略实盘、实时风控监控等场景,可快速同步股价波动数据,支撑策略实时信号生成。 Python接入WebSocket推送港股实时数据完整代码如下,聚焦价格、时间戳核心字段,可直接复用至策略框架: import websocket import json # WebSocket 地址,来自 Api市场 可用接口 ws\_url = "wss://ws.alltick.co/realtime" def on\_message(ws, message): data = json.loads(message) print(f"{data['symbol']} 最新价: {data['price']} 时间: {data['ts']}") def on\_open(ws): # 订阅港股代码,示例:腾讯控股 ws.send(json.dumps({ "op": "sub", "args": [{"symbol": "00700.HK"}] })) ws = websocket.WebSocketApp(ws\_url, on\_message=on\_message, on\_open=on\_open) ws.run\_forever() 实战验证,部分开源接口(如AllTick API)推送逻辑简洁,无需额外底层封装,可快速接入策略系统,降低研发成本,提升实盘数据传输稳定性。 2. HTTP快照请求:适配回测与离线分析场景 HTTP GET请求无需维持长连接,轻量便捷,适用于策略回测数据补全、历史行情比对、离线统计等低频场景,可按需获取某一时刻的标的快照数据,资源消耗较低。 Python接入HTTP获取港股快照数据完整代码如下,可直接用于回测数据采集: import requests url = "https://apis.alltick.co/quote" params = {"symbols": "00700.HK"} resp = requests.get(url, params=params) data = resp.json() print(f"{data['symbol']} 最新价: {data['price']} 时间: {data['ts']}") 需注意,HTTP快照获取的为特定时间点静态数据,数据格式与WebSocket一致,但无法满足实时推送需求;用于策略回测时,可按固定周期采集数据,补全回测数据集,确保回测结果的准确性。 三、数据落地应用:策略回测与实盘价值挖掘 港股实时数据的核心价值,在于支撑策略回测有效性验证与实盘执行稳定性,结合量化实战经验,梳理四类核心数据处理方式,适配策略研发全流程,提升数据利用率: 处理类型 实操方案 策略应用价值 数据存储 轻量场景采用SQLite,分布式回测采用MongoDB 留存历史数据,支撑策略回测复盘、参数优化及绩效分析 实时可视化 借助Matplotlib、Plotly绘制动态折线图 直观监控股价波动,辅助实盘策略信号判断、风险预警 策略分析 通过Pandas进行时间序列处理、指标计算 验证策略逻辑有效性,优化策略参数,提升回测收益表现 条件预警 设置股价阈值,触发信号通知机制 实盘风险控制,捕捉策略交易信号,降低人为干预成本 实战应用中,可将WebSocket推送的实时数据实时追加至数据集,按1-2秒间隔刷新可视化图表,快速捕捉股价异常波动,为实盘策略执行提供支撑;同时,将核心行情数据归档至数据库,用于策略回测复盘,优化策略逻辑,提升实盘适配性。 四、实操技巧与接口选型建议 结合长期港股量化实战经验,梳理实操技巧与接口选型核心要点,聚焦策略研发与实盘落地效率,供量化投资者与策略研究者参考,规避常见问题。 1. 实操技巧(提升效率,保障数据质量) ① 批量订阅优化:若策略需监控多只港股标的,可一次性订阅多个标的代码,避免频繁建立、断开连接,确保数据传输连续性,降低资源消耗; ② 异常处理兜底:WebSocket长连接易受网络波动、服务器维护影响而断开,建议在代码中添加自动重连逻辑,确保实盘数据获取不中断,保障策略正常执行; ③ 核心数据归档:对财报发布、涨跌停等关键时段的行情数据,及时归档至数据库,为策略回测复盘、极端行情应对提供数据支撑; ④ 可视化刷新控制:实时可视化图表无需每条数据都刷新,设置1-2秒刷新间隔,兼顾实时性与资源占用,确保策略系统流畅运行。 2. 接口选型建议(聚焦实战适配性) API市场接口种类繁多,选型核心在于适配策略需求,重点关注以下三点,提升策略研发与实盘效率: ① 标的覆盖度:优先确认接口是否支持策略关注的全部港股标的,尤其是核心交易标的、港股通标的,避免因标的覆盖不足影响策略落地; ② 实时性与稳定性:根据策略类型确认接口推送频率与延迟,中高频策略建议选择延迟100毫秒以内的接口,低频策略可适当放宽,重点验证数据传输稳定性与丢包率; ③ 文档与示例完整性:优先选择接口文档详尽、示例代码可直接运行的服务商,减少底层封装时间,降低接口对接成本,提升策略研发效率。 实战验证,接口稳定性、示例完整性是降低研发成本的关键,参考成熟开源项目的接口示例,可进一步提升对接效率,避免重复造轮子。 总结 港股实时数据接入是量化策略研发与实盘落地的基础,核心在于根据策略需求,选择适配的接入方式,规避实时性、稳定性及数据处理等核心痛点。WebSocket与HTTP两种接入方式,可分别覆盖实盘与回测两类核心场景,无需复杂技术架构,即可快速落地应用。 量化投资中,数据质量直接决定策略回测与实盘效果,建议在接口对接初期充分验证数据准确性与稳定性,结合实操技巧优化数据处理流程,最大化发挥数据的实际应用价值。本文分享的实操方法与代码示例,供量化投资者与策略研究者交流探讨,后续可结合具体策略场景,进一步优化接入逻辑与数据处理方案。
浏览23
评论0
收藏0
用户头像sh_****447dvu
2026-03-09 发布
在量化交易实践中,基础行情数据的获取是策略开发的核心前提,而免费股票 API 凭借低成本、易调用的特性,成为量化入门及基础策略研发的优质选择。本文以 AllTick API 为例,从实操角度分享免费股票 API 的调用方法、实时行情接入方式,并结合双均线经典策略完成历史 K 线回测与交易信号生成的全流程,为量化策略研发提供可落地的技术参考,所有代码均保持原生可运行状态,可直接复刻用于基础策略开发。 一、免费股票 API 的基础能力与使用准备 主流免费股票 API 可覆盖 A 股、港股、美股三大市场的基础行情数据,核心支持分钟至日线级历史 K 线数据与实时行情数据调取,可满足趋势跟踪、均线交叉、量价分析等基础量化策略的研发需求,无需前期投入付费数据成本,适合策略原型验证与入门实践。 使用免费股票 API 的核心准备步骤为平台注册与 API Token 获取,以 AllTick API 为例,注册后可直接获取专属 Token,同时可清晰查看数据调用权限与接口规则,其数据结构设计简洁,接口调用无复杂前置配置,可快速完成数据对接与格式适配,降低策略开发的前期试错成本。 二、实时行情数据的 API 接入实操 量化策略的核心执行逻辑为数据获取→策略逻辑判断→交易信号触发,而实时行情数据的及时性直接决定策略判断的有效性,数据延迟将导致策略信号失真,因此低延迟的行情接入是量化实操的关键。以下分享两种适配性极强的实时行情获取方法,分别适用于单标的监控与多标的实时推送场景。 2.1 RESTful API 单只股票实时价格调取 该方式适用于单标的实时行情监控,接口为 HTTP GET 请求,返回 JSON 格式数据,可快速调取股票名称、实时价格、成交量等核心行情指标,调用速度快、解析难度低,代码实现如下: import requests api_token = "你的API Token" url = "https://api.alltick.co/stock/quote?region=SH&code=600519" headers = {"accept": "application/json", "token": api_token} data = requests.get(url, headers=headers).json() print("股票名称:", data["s"]) print("实时价格:", data["ld"]) print("成交量:", data["v"]) 2.2 WebSocket 多只股票实时行情订阅 该方式采用长连接模式,支持多只股票行情的实时推送,无轮询延迟,可精准捕捉盘中价格波动与涨跌幅变化,适用于多标的联动策略的实时行情需求,代码实现如下: import websocket, json api_token = "你的API Token" def on_message(ws, message): data = json.loads(message) print(f"{data['s']} 实时价格:{data['ld']} | 涨跌幅:{data['chp']}%") def on_open(ws): subscribe_msg = { "action": "subscribe", "types": "quote", "params": "SH$600519,SZ$300750,SZ$002594" } ws.send(json.dumps(subscribe_msg)) ws = websocket.WebSocketApp("wss://api.alltick.co/stock", on_open=on_open, on_message=on_message) ws.run_forever() 三、基于免费 API 数据的双均线策略回测实践 双均线策略作为经典的趋势型基础量化策略,逻辑简洁、可解释性强,是验证免费 API 数据有效性与策略开发实操的理想选择。本策略以 20 日短期均线(MA20)与 60 日长期均线(MA60)为核心指标,通过均线金叉 / 死叉生成买卖交易信号,全程基于免费 API 获取的历史 K 线数据完成回测。 3.1 双均线策略核心逻辑 买入信号:MA20 向上穿越 MA60(金叉),代表短期趋势向上突破,触发买入; 卖出信号:MA20 向下跌破 MA60(死叉),代表短期趋势向下走弱,触发卖出。 3.2 历史 K 线数据回测与交易信号生成 基于免费 API 获取的历史 K 线数据,通过 Pandas 完成数据清洗与格式转换,利用 TA-Lib 计算均线指标,最终实现交易信号的自动化生成,可直观筛选出策略在历史行情中的信号触发点,代码实现如下: import pandas as pd, talib df = pd.DataFrame(history_data["data"], columns=["date","open","high","low","close","volume"]) df[["open","high","low","close","volume"]] = df[["open","high","low","close","volume"]].astype(float) df["MA20"] = talib.SMA(df["close"], 20) df["MA60"] = talib.SMA(df["close"], 60) df["signal"] = 0 df.loc[(df["MA20"] > df["MA60"]) & (df["MA20"].shift(1) < df["MA60"].shift(1)), "signal"] = 1 df.loc[(df["MA20"] < df["MA60"]) & (df["MA20"].shift(1) > df["MA60"].shift(1)), "signal"] = -1 print(df[df["signal"] != 0][["date","close","signal"]]) 3.3 回测代码核心要点说明 数据类型转换:将 K 线数据的开、高、低、收、成交量字段转换为浮点型,避免技术指标计算时出现类型错误; 均线计算:通过 TA-Lib 的 SMA 函数计算简单移动平均线,参数分别设置为 20 和 60,匹配策略逻辑; 信号判定:利用 shift (1) 获取前一期均线数据,通过多条件判断实现金叉 / 死叉的精准识别,以 1 标记买入信号、-1 标记卖出信号; 结果输出:筛选出非 0 信号数据,聚焦策略关键交易节点,便于后续行情匹配与策略有效性分析。 四、免费 API 在量化策略实践中的应用建议 策略场景适配:免费股票 API 主要提供基础行情数据,适用于趋势型、量价型等基础量化策略的研发与回测,暂不满足高频交易、多因子模型等对数据维度、更新频率要求较高的策略场景,策略开发需做好场景与数据能力的匹配; 回测与实盘过渡:基于免费 API 数据完成策略回测后,建议先将策略逻辑迁移至实时行情中生成信号提醒,不直接执行自动交易,通过观察信号与实盘行情的贴合度,验证数据有效性与策略实操性,再逐步过渡至模拟交易与小资金实盘; 数据调用规范:免费 API 均存在一定的调用频率与额度限制,策略开发中需合理设计数据调取逻辑,避免因超限导致接口调用失败,保障策略运行的稳定性; 策略迭代优化:在基础策略验证通过后,可基于免费 API 数据完成策略参数优化(如调整均线周期)、信号过滤(如结合成交量指标),打磨策略细节,为后续接入高级付费数据、升级复杂模型奠定基础。 五、总结 免费股票 API 为量化策略研发提供了低成本的基础数据支撑,其覆盖的行情维度可满足基础量化策略的开发、回测与初步实操需求,是量化入门者熟悉数据处理、策略逻辑、信号生成全流程的优质工具。 从实操角度来看,通过 AllTick 这类免费 API,可快速完成从实时行情接入到历史数据回测的全流程落地,结合双均线等经典基础策略,能够高效完成策略原型验证与技术实操训练。在量化交易实践中,无需过早追求复杂模型与付费数据,先通过免费 API 夯实数据处理与策略开发的基础能力,再根据策略需求逐步升级数据与模型,是更具实操性的量化研发路径。 后续可基于免费 API 数据,进一步探索趋势跟踪、量价结合等更多基础量化策略的开发,同时研究多标的策略联动、信号有效性优化等方向,持续提升量化策略的实操价值。
浏览48
评论0
收藏0
用户头像sh_***174w0d
2026-03-09 发布
导语:被误读的“恐慌” 在全球金融市场的剧烈震荡中,多数投资者正盯着前线的炮火寻求答案。然而,上周盘面透出一种诡异的冷峻:周一,市场表现得极其“理性”,甚至带有一丝侥幸,A股甚至走出了一抹红盘;但到了周二,局面却毫无预兆地急转直下,演变为一场全资产的集体溃败。 这种从“局部震荡”到“全面崩盘”的突变,绝非简单的避险情绪升级。真相是:市场已经停止关注导弹的落点,转而死死盯着能源的计价器。交易逻辑已经从短线的“战争风险”极速切换到了更具毁灭性的“通胀预期”。 核心反直觉观点:通胀的杀伤力是战争的十倍 在宏观逻辑的坐标系里,战争往往只是节奏性的扰动,而通胀才是结构性的扼杀。 回顾上周初的数据,这种逻辑的位移清晰可见。周一,A股万绿丛中一点红,微涨0.5%,黄金、军工、油气等所谓“战争受益股”涨幅一度冲到3%至5%。此时,市场还在试图将冲突定价为一次短周期的套利机会。 然而到了周二,市场经历了惨烈的“醒悟”:火药固然可怕,但比起廉价的弹药,昂贵的能源才是真正的死神。 “论杀伤力,通胀会比战争高十倍以上。” 这并非危言耸听。战争只是局部的阵痛,但通胀是全球性的“铸币税”。当原油与天然气价格因冲突而失控,它会迅速传导至全球生产链条的每一个末梢,迫使全球成本中枢整体上移。最致命的连锁反应在于:高企的通胀将彻底击碎美联储的“降息幻象”,迫使各国央行在经济萎缩的边缘依然被迫收紧货币政策。这种“流动性死循环”一旦开启,全球股市面临的将不是回调,而是估值体系的整体崩塌。 消失的航线:霍尔木兹海峡的“非正式关闭” 目前,能源价格飙升的引信正握在霍尔木兹海峡手中——这里掌控着全球30%的石油海运命脉。 这里的残酷逻辑在于:冲突的胜负早已不再重要,物流的瘫痪才是终局。 目前,并没有任何一方正式宣布关闭海峡,但一种“心理防御性停航”已经造成了事实上的封锁。想象一下:在炮火连天的背景下,没有任何一家理智的保险公司敢为通过该区域的货轮承保,也没有任何一个清醒的船东会押上数亿美金的资产去博弈概率。当货主与物流商集体撤退,即便海峡物理上是通的,它在经济意义上也已经关闭。 这种物流停摆正在推升一个极度危险的预期:油价重回100美元大关可能只是起点。 历史的回响:2022年的“神同步”剧本 对于资深投资者而言,眼下的剧本像极了2022年俄乌冲突初期的那场噩梦。 2022年2月24日冲突爆发后,原油迅速冲上139美元/桶的高位,天然气价格暴涨超过3倍。随后,大宗商品的疯涨引发了全球性的通胀海啸,倒逼央行开启了史上最激进的加息周期。那一次,全球股市经历了惨烈的轮动调整,A股也曾在大背景下出现约15%的回调。 历史不会简单地重复,但总是押着相同的韵脚。当市场开始重温“2022剧本”,那种对流动性枯竭的条件反射式恐惧,正是这两天市场崩盘的深层推手。 投资者生存指南:盯紧这两个核心指标 在流动性面临“抽水”威胁的当下,收起你的投机欲,死盯两个反映底层逻辑的“预警器”: **1.**原油价格: 这是全球通胀的体温计。如果油价站稳100美元并持续向上,意味着通胀的“二次爆发”已成定局。 **2.**美元指数: 这是流动性的风向标。如果美元指数持续反弹,那便是一种“吮吸声”,代表着流动性正在加速撤离风险资产,美联储的政策转向将比预想中更冷酷。 投资策略的底层思考: 对于目前表现强势的“科技”与“大宗商品”两条主线,建议进行战略性收缩。你或许会疑惑:既然通胀要来,为何大宗商品也要收缩? 一个成熟的宏观观察者必须明白:当“交易通胀”演变为因加息而起的“交易衰退”时,任何资产都难逃流动性挤兑。在高利率和需求萎缩的重压下,大宗商品最终也会在价格峰值后轰然倒塌。 结语:在不确定性中寻找确定性 目前的市场正处于“摸着石头过河”的极度谨慎期。战争只是表象,它投下的这块石头,真正激起的是通胀与货币紧缩的层层涟漪。 当流动性的潮水因通胀而加速退去,那些被虚火推高的“避险资产”往往会被证明是脆弱的幻象。真正的“黄金坑”,只属于那些在潮退时没有溺水、且拥有足够胆识在废墟中重新定价的聪明人。在炮火声中,请务必保持你逻辑的清醒。
浏览24
评论0
收藏0