Fast-Trade:声明式配置与向量化计算驱动的量化回测引擎实践

news2026/5/8 18:43:14
1. 项目概述Fast-Trade一个为量化交易者打造的“快”速回测引擎如果你在量化交易领域摸爬滚打过一阵子肯定对回测这件事又爱又恨。爱的是它能让你在真金白银投入市场前验证策略的有效性恨的是写回测框架、处理数据、计算指标、管理交易逻辑……一套流程下来策略还没跑精力先耗掉一半。更别提那些动辄需要运行几个小时甚至几天的复杂回测迭代一个想法简直像在跑马拉松。Fast-Trade 这个库就是冲着解决这些痛点来的。它的核心目标写在脸上“如果回测足够快策略就足够便宜”。这里的“便宜”不是指金钱而是指试错成本和时间成本。它试图将回测这件事从一项繁重的工程任务简化成一个可以快速定义、快速验证、快速迭代的“实验”过程。我花了些时间深入使用和研究了它的源码发现它确实在“便携性”和“性能”这两个量化开发者最关心的地方做了不少有意思的设计。它不是另一个试图包罗万象的庞然大物而更像一把锋利的手术刀专注于把策略逻辑验证这个核心环节做到极致。简单来说Fast-Trade 让你能用一种近乎“声明式”的 YAML 或 JSON 配置文件来定义一个完整的交易策略然后它负责加载数据、计算技术指标、按你的逻辑模拟买卖并输出一份详尽的绩效报告。它内置了与主流加密货币交易所如币安、Coinbase的数据接口Archive 模块能直接下载 K 线数据到本地形成标准化的 Parquet 数据集这大大简化了数据准备环节。从我的实际体验来看对于一个简单的均线交叉策略从零开始配置到跑出结果十分钟内就能搞定这对于策略灵感的快速捕捉至关重要。2. 核心设计哲学为什么是“声明式”配置与模块化2.1 告别“面条代码”策略即配置很多自研的回测系统最终都会演变成一堆难以维护的“面条代码”。交易信号、仓位管理、绩效统计全部绞在一起。Fast-Trade 的第一个聪明之处在于它强制你将策略逻辑与执行引擎分离。你的策略核心被抽象为三个部分全部在配置文件中定义数据点Datapoints定义你需要哪些技术指标。比如计算一个 30 周期的 SMA简单移动平均线并命名为sma_short。入场逻辑Enter与出场逻辑Exit定义买卖条件。使用类似自然语言的数组来表达if条件例如[close, , sma_short]表示“如果收盘价大于短期均线”。规则Rules定义回测结果的过滤条件。例如只保留夏普比率大于 0.5 的回测结果用于批量策略筛选。这样做的好处显而易见。首先策略变得可读、可版本控制。一个.yml文件就是一个完整的策略你可以用 Git 轻松管理它的迭代历史。其次它极大地降低了策略复现和分享的门槛。我给你一个配置文件你就能完全复现我的回测结果不存在因代码执行顺序或全局变量导致的隐性错误。2.2 性能优先向量化计算与高效数据流回测速度慢很多时候瓶颈不在策略逻辑本身而在数据吞吐和指标计算。Fast-Trade 底层大量使用了 Pandas 的向量化操作并依赖于TA-Lib或Finta这样的高效技术指标库进行计算。这里有个细节值得注意它的“数据点”计算是惰性且并行的。在回测开始前配置文件里定义的所有技术指标如 SMA, RSI, Bollinger Bands会一次性被计算好并作为新的列添加到整个历史数据 DataFrame 中。在模拟运行时引擎只需要在这些预先计算好的列上进行逻辑判断避免了在循环中重复计算指标的巨大开销。这种“空间换时间”的做法是它实现快速回测的关键。实操心得在定义复杂策略时要特别注意datapoints中指标的参数。比如一个基于 200 日均线的策略计算量会远大于基于 10 日均线的策略。虽然 Fast-Trade 处理得很快但在进行超参数网格搜索时不必要的大周期指标仍会成为性能瓶颈。我的经验是先用小数据量如最近三个月跑通逻辑确认策略方向再扩展到全历史数据计算最终绩效。2.3 内置数据管道Archive解决“找数据”的麻烦回测的另一大拦路虎是数据。去哪里找格式怎么统一如何保证没有缺失Fast-Trade 的 Archive 模块直接内置了从 Binance 和 Coinbase 抓取 K 线数据的功能并保存为高效的 Parquet 格式。# 下载最近30天的BTCUSDT数据到本地 ft_archive/ 目录 ft download BTCUSDT binanceus这个设计非常务实。它承认了对于大多数个人交易者和研究员来说自己维护一个全市场、全历史的数据库既困难又不必要。Parquet 是一种列式存储格式对于时间序列数据的读取速度极快且压缩率高非常适合回测场景。数据被按交易对和交易所组织在本地后续回测时直接引用文件路径即可实现了数据的“一次下载多次使用”。3. 从零到一手把手构建你的第一个策略理论说了不少我们直接动手用一个经典的“双均线金叉死叉”策略来感受一下 Fast-Trade 的工作流。这个策略的逻辑是当短期均线上穿长期均线时买入当短期均线下穿长期均线时卖出。3.1 环境准备与安装首先确保你的 Python 环境是 3.11 或更高版本。我强烈建议使用虚拟环境来管理依赖避免包冲突。# 1. 创建并进入项目目录 mkdir my_algo_project cd my_algo_project # 2. 创建虚拟环境这里使用 venv你也可以用 conda python -m venv venv # 3. 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate # 4. 安装 fast-trade pip install fast-trade安装完成后可以通过命令行测试是否成功ft -h你应该能看到所有可用的命令列表。3.2 准备历史数据我们使用内置的 Archive 功能来获取数据。假设我们要测试 BTC/USDT 在币安上的表现。# 下载 BTCUSDT 从币安国际站的数据默认是最近30天1分钟K线 ft download BTCUSDT binance # 如果你想指定时间和周期可以使用更完整的命令 # 下载2023年全年4小时K线数据 ft download BTCUSDT binance --start 2023-01-01 --end 2023-12-31 --freq 4H命令执行后数据会保存在项目目录下的ft_archive/binance/BTCUSDT.parquet文件中。你可以用 Pandas 直接读取查看pd.read_parquet(‘ft_archive/binance/BTCUSDT.parquet’)。3.3 编写策略配置文件现在创建我们的策略文件sma_cross.yml。Fast-Trade 的策略配置本质是一个字典我们用 YAML 来写会更清晰。# sma_cross.yml base_balance: 10000 # 起始资金10000 USDT freq: “1H” # 使用1小时K线进行回测 chart_start: “2023-01-01 00:00:00” chart_stop: “2023-06-01 00:00:00” comission: 0.001 # 交易手续费假设为0.1% datapoints: - args: [10] # 计算10周期均线 transformer: “sma” name: “sma_fast” # 命名为快线 - args: [30] # 计算30周期均线 transformer: “sma” name: “sma_slow” # 命名为慢线 enter: - [“sma_fast”, “”, “sma_slow”] # 入场条件快线上穿慢线金叉 exit: - [“sma_fast”, “”, “sma_slow”] # 出场条件快线下穿慢线死叉 # 可选设置规则过滤不满意的回测 rules: - [“sharpe_ratio”, “”, 0] # 只保留夏普率为正的结果 - [“total_num_trades”, “”, 10] # 交易次数不能太少否则无统计意义这个配置文件几乎就是自然语言的翻译。它定义了我们要看什么数据10日和30日均线以及什么情况下买卖金叉买死叉卖。comission参数很关键它让回测更贴近现实每一笔买卖都会扣除一定比例的费用。3.4 运行回测与分析结果有了数据和策略运行回测就是一行命令的事。# 基础运行在终端打印摘要 ft backtest ./sma_cross.yml # 如果你想保存详细结果包括图表、交易记录CSV等加上 --save 参数 ft backtest ./sma_cross.yml --save加上--save后Fast-Trade 会在saved_backtests/目录下生成一个带时间戳的文件夹里面通常包含backtest.json: 你使用的策略配置。summary.json: 核心绩效指标。df.parquet: 包含所有K线数据、计算指标、以及模拟持仓、资金曲线的完整DataFrame。trade_df.parquet: 所有交易记录的摘要。equity_curve.png: 资金曲线图。现在我们重点看看summary.json里有什么。对于一个量化策略我们至少需要关注以下几类指标收益类return_perc: 策略总收益率。buy_and_hold_perc: 同期买入持有的收益率。这是最重要的基准如果你的策略跑不赢拿着不动那就得重新思考了。market_adjusted_return: 策略收益减去市场基准收益即超额收益。风险调整后收益类sharpe_ratio: 夏普比率衡量每承受一单位风险能获得多少超额回报。大于1通常算不错。sortino_ratio: 索提诺比率只考虑下行风险亏损的夏普比率对趋势策略可能更友好。max_drawdown: 最大回撤这是你策略可能面临的最大亏损幅度是风控的核心。交易统计类win_perc/loss_perc: 胜率/败率。avg_win_perc/avg_loss_perc: 平均盈利幅度/平均亏损幅度。一个高胜率但平均盈利很小的策略可能不如一个低胜率但盈亏比很高的策略。profit_factor: 总盈利 / 总亏损。大于1表示整体盈利。num_trades: 总交易次数。太少没有统计意义太多则可能交易成本侵蚀利润。第一次跑这个简单的双均线策略你可能会发现它在某些震荡市表现很差频繁产生“假信号”导致亏损。这正是回测的价值——用历史数据低成本地暴露策略的缺陷。4. 进阶技巧让策略更健壮与高效一个能写在教科书上的简单策略在实盘中往往不堪一击。Fast-Trade 提供了一些高级功能可以帮助我们打磨策略使其更接近实战。4.1 使用逻辑回看Logic Lookbacks过滤噪音市场的短期波动会产生大量噪音信号。比如价格可能只是瞬间刺穿了均线然后又回来产生假的金叉或死叉。Fast-Trade 的逻辑回看功能允许你要求信号必须持续 N 个周期才有效。修改我们之前的入场条件enter: - [“sma_fast”, “”, “sma_slow”, 2] # 快线必须在连续2根K线上都大于慢线才算有效金叉这个小小的改动可以过滤掉大量因市场毛刺产生的无效交易显著提高策略的稳定性。出场逻辑也可以做类似处理。4.2 利用规则Rules进行批量筛选与优化当你开始调整策略参数时比如把快线周期从10改成9或11就会进入参数优化阶段。手动一个个跑回测然后记录结果效率极低。Fast-Trade 的rules配置项结合命令行可以半自动化这个过程。假设我们想测试快线周期9, 10, 11, 12和慢线周期25, 30, 35的所有组合并只保留夏普比率大于0.5且最大回撤小于20%的策略。你可以写一个简单的 Python 脚本import yaml import subprocess import itertools base_config yaml.safe_load(open(“sma_cross_base.yml”)) fast_periods [9, 10, 11, 12] slow_periods [25, 30, 35] results [] for fast, slow in itertools.product(fast_periods, slow_periods): config base_config.copy() config[‘datapoints’][0][‘args’] [fast] config[‘datapoints’][1][‘args’] [slow] config[‘name’] f“sma_{fast}_{slow}” # 给策略起个名 # 将配置写入临时文件 with open(f“temp_{fast}_{slow}.yml”, ‘w’) as f: yaml.dump(config, f) # 运行回测并解析摘要中的夏普率和最大回撤 # 这里需要调用 ft backtest 并捕获输出略复杂但展示了思路 # 更优雅的方式是直接使用 run_backtest 函数编程运行 print(f“Testing SMA{fast}/{slow}...”)实际上Fast-Trade 提供了更强大的遗传算法进化器Evolver来做这件事。你可以定义一个evolver_example.yml配置文件指定要优化的参数基因、优化目标适应度函数如夏普率然后运行ft evolve evolver_example.yml它会自动进行多代演化寻找最优参数组合。4.3 探索更多技术指标与组合Fast-Trade 内置了数十种常见的技术指标通过 Finta 库。不要局限于均线。一个成熟的策略往往是多因子共同作用的结果。例如一个经典的“趋势跟踪动量过滤”策略datapoints: - args: [20] transformer: “sma” name: “ma_trend” - args: [14] transformer: “rsi” name: “rsi” - args: [20, 2] # 20周期2倍标准差 transformer: “bbands” name: “bb” enter: - [“close”, “”, “ma_trend”] # 价格在趋势线上方 - [“rsi”, “”, 50] # RSI显示多头动量 - [“close”, “”, “bb_bb_upper”] # 价格未触及布林带上轨避免追高 exit: - [“close”, “”, “ma_trend”] # 价格跌破趋势线 - or # 使用 any_exit 逻辑以下任一条件满足即出场 - [“rsi”, “”, 40] # 动量衰竭 - [“close”, “”, “bb_bb_upper”] # 触及上轨可能超买注意这里用到了any_exit的逻辑在配置中是exit与any_exit的区分示例中用了注释说明。这允许出场条件更加灵活符合不同场景下的风控需求。避坑指南技术指标不是越多越好。每增加一个指标就增加了一层过拟合的风险。我的经验法则是先从一个核心逻辑比如趋势开始逐步加入过滤条件比如动量、波动率每加一个都要观察它是否独立地提升了策略的夏普率或降低了回撤而不是仅仅让历史曲线变得更漂亮。回测中“过度优化”是导致实盘失效的主要原因。5. 终端模式像专业交易员一样工作Fast-Trade 最让我惊喜的功能之一是它的终端Terminal模式。通过ft terminal命令你会进入一个交互式的命令行界面其操作感有些类似 Bloomberg 终端非常适合快速分析和探索。5.1 核心工作流启动与概览ft terminal进入后默认是仪表盘Dashboard,DB可以看到已保存回测的概览。查看交易明细输入TR可以列出最近一次回测的所有交易记录包括入场时间、价格、出场时间、价格、盈亏等。按N/P翻页。深入分析绩效SUM查看详细的绩效摘要TS生成并查看专业的资金曲线与回撤分析图表Tearsheet。策略管理与回测OPEN STRAT可以浏览并选择不同的策略文件BT SAVE会使用当前选中的策略立刻运行一次回测并保存结果。你甚至可以用EDIT STRAT临时修改策略参数会生成一个strategy.override.yml文件快速进行假设分析。5.2 实盘信号与模拟持仓终端模式不止于回测它还连接了“准实盘”场景LIVE START [SYMBOL]根据当前加载的策略对指定交易对如 BTCUSDT启动一个实盘信号运行器。它会按照策略的freq如 5分钟定期检查市场数据并在终端输出买入/卖出信号。注意这只是一个信号发生器并不执行真实交易。你需要自己将这些信号连接到交易所的API。PORTFOLIO START启动一个模拟持仓Paper Trading运行器。这个功能就强大了它会在内存中维护一个虚拟的投资组合根据 LIVE 模式产生的信号自动模拟执行买卖并计算浮动盈亏、持仓成本等。这是将策略投入实盘前最后、也是最重要的一步验证。STREAM START启动一个市场数据流实时显示指定交易对的买卖盘口和最新成交价。这些功能组合起来形成了一个从策略开发回测- 策略验证模拟盘- 信号监控实盘的完整闭环工作流全部在一个统一的终端内完成极大地提升了效率。个人体会我花了很多时间在模拟持仓Paper Trading上。即使一个策略回测表现再好在模拟盘中运行一两周你也能发现很多回测中忽略的问题比如滑点假设是否合理在流动性不足的时段你的限价单能成交吗手续费模型是否准确这些“手感”对于建立对策略的信心至关重要。Fast-Trade 的 Portfolio 模块虽然简单但足以让你暴露这些问题。6. 常见问题与故障排除实录在实际使用中你肯定会遇到各种问题。下面是我踩过的一些坑和解决方案。6.1 数据问题缺失或格式错误问题运行回测时提示数据列缺失或时间格式错误。排查首先检查下载的数据文件。用pd.read_parquet(‘你的数据文件.parquet’).info()查看列名。Fast-Trade 默认需要open,high,low,close,volume这几列且索引必须是DatetimeIndex。如果你的数据来自其他源如 CSV需要确保列名匹配并且时间列已被正确解析为 Pandas 的 datetime 类型并设置为索引。使用--start和--end参数下载数据时确保交易所在该时间段有数据。对于新上线的币种历史数据可能很短。解决最可靠的方法是使用 Fast-Trade 自己的ft download命令来获取数据确保格式完全兼容。对于自定义数据可以参考ft_archive下已下载的 Parquet 文件格式进行转换。6.2 策略逻辑不触发问题回测运行了但num_trades为 0没有任何交易发生。排查检查逻辑条件是否过于苛刻入场条件enter列表中的所有条件必须同时满足。如果你写了[[close, , sma_a], [close, , sma_b]]而sma_a始终大于sma_b那么这个条件永远不可能成立。检查数据点名称在enter/exit逻辑中引用的名字必须与datapoints里定义的name字段完全一致包括大小写。检查时间周期策略的freq如”1H”与数据文件的周期是否匹配如果你用 1 小时数据跑一个 5 分钟周期的策略datapoints里计算的指标会基于 1 小时 K 线但逻辑判断的频率不对会导致奇怪的结果。使用调试输出在 Python 中调用run_backtest时返回的dfDataFrame 包含了所有计算后的数据点和信号列。你可以把df保存为 CSV仔细检查在应该触发信号的时间点各项条件是否满足。解决从一个最简单的策略开始验证比如enter: [[“close”, “”, 0]]价格大于0永远为真看是否能产生交易。然后逐步添加条件定位是哪个条件导致了问题。6.3 绩效指标异常问题夏普比率高得离谱比如 10或者最大回撤为 0。排查交易次数过少如果总共只有一两笔盈利交易夏普比率可能会因为样本太少而失真。通过rules设置[“num_trades”, “”, 20]来过滤。未考虑手续费comission参数设为 0。在高频或短线策略中手续费对净利润的侵蚀非常严重。务必设置一个合理的费率如币安现货挂单0.1%吃单0.075%。数据穿透确保没有使用未来数据。Fast-Trade 在计算指标时已经做了滞后处理但如果你在自定义datapoints时引用了错误的列可能会引入未来函数。一个简单的检查方法是在df中任意一行的信号如enter_long所依赖的指标如sma_10其值必须完全由该行及之前行的数据计算得出。初始资金与仓位管理base_balance是初始资金。Fast-Trade 默认使用固定比例可通过lot_size_perc设置开仓。如果你的资金量很大而市场深度不足回测中“全部买入”的假设可能不现实导致绩效虚高。解决始终将buy_and_hold_perc买入持有收益作为基准。如果一个策略的收益远低于基准显然不行如果远高于基准则需要极度警惕仔细检查是否存在过拟合或模型错误。加入合理的comission和滑点虽然 Fast-Trade 原生不支持滑点模型但可以通过提高手续费或调整入场价来近似模拟后再看结果。6.4 命令行与终端使用问题问题ft命令找不到或终端模式下的快捷键失灵。排查确保虚拟环境已激活且fast-trade已正确安装 (pip list | grep fast-trade)。终端模式下所有命令都是大写英文缩写。DB仪表盘、TR交易、SUM摘要等。输入后按回车执行。在终端模式下OPEN BT或OPEN STRAT会打开一个文件选择界面使用方向键和回车进行选择。解决如果遇到奇怪的错误尝试退出终端 (Q)在普通命令行下用ft backtest your_strategy.yml -v(如果有 verbose 选项) 运行看是否有更详细的错误信息。查阅项目docs/目录下的文档特别是Terminal.md。最后再分享一个我自己的小技巧善用--mods参数进行快速参数扫描。比如你想快速测试不同止损点位的效果不需要修改配置文件可以直接在命令行完成ft backtest ./my_strategy.yml --mods trailing_stop_loss 0.02 ft backtest ./my_strategy.yml --mods trailing_stop_loss 0.05 ft backtest ./my_strategy.yml --mods trailing_stop_loss 0.10--mods参数会临时覆盖配置文件中对应的字段这对于做敏感性分析非常方便。量化交易的世界里没有圣杯任何一个有效的策略都是对市场某种规律的近似描述并且需要持续的维护和迭代。Fast-Trade 提供的这套工具链价值就在于它能极大地压缩从“想法”到“验证”的周期让你能把更多精力花在策略逻辑本身而不是工程实现上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2595533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…