Lumibot量化交易框架:Python开源工具实现多经纪商统一策略开发

news2026/5/14 3:26:10
1. 项目概述当量化交易遇见开源框架如果你在金融科技圈子里待过一阵子或者对用代码“炒股”感兴趣那你大概率听说过“量化交易”这个词。它听起来高大上仿佛是高盛、桥水那些大机构的专属玩具需要顶尖的数学博士和天价的服务器集群。但事实是随着像Python这样的语言和丰富的开源库出现个人开发者和中小团队搭建自己的量化交易系统门槛已经大大降低。今天要聊的Lumiwealth/lumibot就是这样一个旨在“让量化交易民主化”的开源框架。简单来说Lumibot是一个用Python编写的、面向对象的量化交易框架。它的核心目标很明确提供一个统一、简洁的接口让你能用同一套代码逻辑去连接和操作多个不同的经纪商Broker和行情数据源。想象一下你写了一个基于移动平均线的策略今天你想在盈透证券Interactive Brokers上跑明天因为某些原因想换到Alpaca或者币安Binance如果没有Lumibot你可能需要重写大量的API交互、订单管理、账户状态同步的代码。而Lumibot试图把这些脏活累活都封装起来让你能更专注于策略逻辑本身。我最初接触它是因为受够了在多个经纪商API之间来回切换的繁琐。每个经纪商的API设计、数据格式、订单类型甚至错误处理都各不相同维护多套适配代码不仅耗时还容易出错。Lumibot提出的“一次编写多处运行”的理念直接切中了这个痛点。它不只是一个简单的API包装器它内置了回测引擎、实时交易调度、资产组合跟踪、财报日历集成等一系列量化交易中常见的组件试图成为一个“开箱即用”的全栈解决方案。2. 核心架构与设计哲学拆解2.1 面向对象的设计策略即类Lumibot最核心的设计思想是面向对象。在这个框架里一个交易策略被定义为一个继承自Strategy基类的Python类。这不是什么新概念许多量化框架如zipline、backtrader都采用类似模式。但Lumibot的实现非常直观它强制你将策略的生命周期和核心逻辑组织在几个特定的方法中这让代码结构异常清晰。当你创建一个策略类时你需要重写几个关键方法initialize(): 策略的初始化方法在策略开始运行前无论是回测还是实盘执行一次。这里通常用来设置策略参数、初始化变量、订阅感兴趣的资产等。on_trading_iteration(): 这是策略的“心脏”会在每个交易周期可配置如每分钟、每小时被自动调用。你的核心交易逻辑、信号计算、下单决策都写在这里。before_market_opens(),after_market_closes(): 顾名思义在交易日开始前和结束后执行适合做盘前数据准备、盘后清算和日志记录。on_strategy_end(): 策略停止时执行用于资源清理和最终报告生成。这种设计的好处是强制分离了关注点。你的策略逻辑on_trading_iteration不需要关心如何获取数据、如何下单、如何记录日志这些都由框架在背后处理。你只需要告诉框架“如果条件A满足就买入X股AAPL”。这种抽象极大地提高了代码的可读性和可维护性。2.2 经纪商抽象层统一接口的魅力这是Lumibot最具价值的部分。框架定义了一个抽象的Broker基类规定了所有经纪商实现必须提供的一套标准方法例如get_last_price(symbol): 获取最新价格。submit_order(order): 提交订单。get_positions(): 获取当前持仓。get_account(): 获取账户信息现金、净资产等。然后针对每个具体的经纪商如InteractiveBrokers,Alpaca,BinanceLumibot都提供了一个具体的实现类。这些实现类内部处理了与该经纪商API通信的所有细节包括认证、请求格式、错误重试、数据格式转换等。这意味着什么假设你的策略中有一条下单指令order self.create_order(“AAPL”, quantity10, side“buy”) self.submit_order(order)无论你后台配置的是哪个Broker这段代码都无需改变。今天你用AlpacaBroker在模拟盘测试明天你只需在启动脚本里换成InteractiveBrokersBroker并提供相应的API密钥就能无缝切换到实盘的盈透证券账户。这种可移植性对于策略开发、多经纪商对比以及降低供应商锁定风险至关重要。2.3 数据源与回测引擎从历史中学习没有数据的量化策略如同无米之炊。Lumibot同样抽象了数据源Data Source。它内置支持从Yahoo Finance、Alpha Vantage、IEX Cloud等免费或付费源获取历史数据和实时数据。更重要的是在回测模式下你可以指定一个数据源比如YahooFinanceBacktesting框架会自动按时间顺序向你的策略“喂送”历史数据并模拟on_trading_iteration的调用。回测引擎的设计巧妙之处在于它复用了实盘交易的接口。在回测中你使用的“经纪商”是一个BacktestingBroker。它模拟了真实的市场环境检查账户余额、计算订单成交价可配置滑点模型、更新持仓和现金。你的策略代码完全感知不到自己是在回测还是实盘因为与它交互的broker对象提供的接口是一样的。这保证了策略在回测和实盘中的行为高度一致避免了“回测王者实盘青铜”的常见陷阱。注意回测的准确性严重依赖于数据质量和成交模拟的逼真度。Lumibot提供了基本的滑点slippage和交易费用fees模型但对于高频交易或对流动性非常敏感的策略你可能需要自己扩展更复杂的市场微观结构模型。3. 从零搭建一个Lumibot策略实战演练理论说了这么多我们动手搭建一个简单的策略体验一下Lumibot的工作流。我们的目标是创建一个经典的“双均线交叉”策略在Alpaca的模拟交易环境中运行。3.1 环境准备与安装首先确保你的Python环境是3.7以上。创建一个新的虚拟环境是个好习惯。# 创建并激活虚拟环境以conda为例 conda create -n lumibot_trading python3.9 conda activate lumibot_trading # 安装Lumibot pip install lumibot除了Lumibot本身我们还需要安装对应经纪商的连接器。这里以Alpaca为例它提供免费的模拟交易API非常适合学习和测试。pip install alpaca-trade-api接下来你需要去Alpaca官网https://alpaca.markets/ 注册一个免费账户并获取你的API密钥对API Key ID和Secret Key。妥善保存我们稍后会用到。3.2 策略代码编写创建一个名为moving_average_cross.py的文件。from lumibot.strategies import Strategy from lumibot.brokers import Alpaca from lumibot.traders import Trader from datetime import datetime, time import pandas as pd class DualMovingAverageCross(Strategy): # 初始化策略参数 def initialize(self): # 设置要交易的标的 self.symbol “SPY” # 以标普500 ETF为例 # 设置均线周期 self.short_window 20 # 短期均线周期 self.long_window 50 # 长期均线周期 # 设置仓位比例每次动用资金的10% self.allocation 0.1 # 设置一个等待期避免过于频繁交易 self.last_trade None self.wait_period 5 # 至少等待5个bar再考虑下一次交易 # 订阅数据。这里我们订阅日线数据用于计算均线。 # backtesting_data_source 是回测时使用的数据源这里我们先为实盘准备。 self.sleeptime “1D” # 策略每天运行一次 # 每个交易周期执行的核心逻辑 def on_trading_iteration(self): # 获取历史数据 # self.get_historical_prices 返回一个pandas DataFrame bars self.get_historical_prices(self.symbol, self.short_window self.long_window, “day”) df bars.df # 获取DataFrame if df.empty or len(df) self.long_window: self.log_message(f”数据不足等待更多数据。当前数据条数{len(df)}”) return # 计算短期和长期简单移动平均线SMA df[‘short_sma’] df[‘close’].rolling(windowself.short_window).mean() df[‘long_sma’] df[‘close’].rolling(windowself.long_window).mean() # 获取最新的均线值 current_short_sma df[‘short_sma’].iloc[-1] current_long_sma df[‘long_sma’].iloc[-1] # 获取前一个周期的均线值用于判断交叉 previous_short_sma df[‘short_sma’].iloc[-2] previous_long_sma df[‘long_sma’].iloc[-2] # 获取当前持仓和现金 position self.get_position(self.symbol) cash self.get_cash() # 交易逻辑金叉买入死叉卖出 # 金叉条件短期均线上穿长期均线且我们当前没有持仓 if (previous_short_sma previous_long_sma and current_short_sma current_long_sma): if position is None or position.quantity 0: # 计算可买入的股数 last_price self.get_last_price(self.symbol) quantity int((cash * self.allocation) // last_price) if quantity 0: order self.create_order(self.symbol, quantity, “buy”) self.submit_order(order) self.last_trade self.get_datetime() self.log_message(f”金叉信号以约{last_price}的价格买入{quantity}股{self.symbol}。”) # 死叉条件短期均线下穿长期均线且我们当前持有仓位 elif (previous_short_sma previous_long_sma and current_short_sma current_long_sma): if position is not None and position.quantity 0: order self.create_order(self.symbol, position.quantity, “sell”) self.submit_order(order) self.last_trade self.get_datetime() self.log_message(f”死叉信号卖出全部{position.quantity}股{self.symbol}。”) else: # 无信号持有观望 pass # 在每天市场收盘后记录一下账户情况 def after_market_closes(self): equity self.get_account().equity self.log_message(f”今日收盘后账户净值{equity:.2f}”) # 策略主启动逻辑 if __name__ “__main__”: # 1. 配置经纪商 broker Alpaca({ “API_KEY”: “YOUR_ALPACA_API_KEY_ID”, # 替换为你的Key ID “API_SECRET”: “YOUR_ALPACA_SECRET_KEY”, # 替换为你的Secret Key “PAPER”: True # 使用模拟交易Paper Trading }) # 2. 创建策略实例 strategy DualMovingAverageCross( brokerbroker, parameters{ “symbol”: “SPY”, “short_window”: 20, “long_window”: 50, } ) # 3. 创建交易员并运行策略 trader Trader() trader.add_strategy(strategy) trader.run_all()3.3 代码逐段解析与实操要点继承与初始化class DualMovingAverageCross(Strategy)定义了我们的策略。initialize方法设定了策略的“基因”交易标的、参数、数据订阅频率。self.sleeptime “1D”告诉框架这个策略每天执行一次on_trading_iteration。对于日线策略这是合理的。如果你想做分钟级策略可以设置为“1M”。数据获取self.get_historical_prices是框架提供的方法它向配置的数据源请求历史数据。我们请求足够多的数据self.short_window self.long_window条日线来计算均线。返回的是一个Bars对象其.df属性是Pandas DataFrame包含open,high,low,close,volume等列。这里有个关键点在实盘模式下这个方法获取的是截至当前的最新历史数据在回测模式下它获取的是回测当前时点的历史数据。信号计算我们使用Pandas的rolling和mean方法计算移动平均线。判断“金叉”和“死叉”不仅需要看当前均线值的关系还要看前一个时刻的关系以避免在均线纠缠时产生重复信号。这是一个简单的过滤技巧。仓位与订单管理self.get_position和self.get_cash用于查询当前状态。self.create_order创建订单对象self.submit_order将其提交给经纪商。注意我们通过(cash * self.allocation) // last_price来计算买入数量这是一个简单的资金管理确保每次开仓只动用固定比例的资金。日志记录self.log_message是框架的日志工具它会将信息输出到控制台并可能保存到文件对于调试和监控至关重要。主程序流程这是启动脚本的标准模式。创建经纪商对象传入认证信息创建策略对象传入经纪商和参数最后创建一个Trader对象来管理和运行所有策略。trader.run_all()会启动一个事件循环根据策略的sleeptime定期调用策略逻辑。实操心得在实盘运行前务必先在模拟盘Paper Trading上充分测试。Alpaca的模拟盘环境非常接近实盘但不会产生真实资金损失。将上述代码中的PAPER设为True并用模拟API密钥运行至少一个完整的市场周期比如几周观察策略行为是否符合预期检查日志确认订单执行逻辑无误。4. 进阶功能与生态集成4.1 多资产与多时间框架策略一个真实的策略往往不会只交易单一资产。Lumibot可以轻松处理多资产组合。你可以在initialize中订阅多个标的在on_trading_iteration中循环处理。更高级的用法是多时间框架分析。例如你用日线判断长期趋势用小时线寻找入场点。Lumibot本身不直接提供多时间框架数据同步但你可以通过订阅更细粒度的数据如小时线然后在策略内部用Pandas进行降采样resample来合成日线或者分别请求不同时间维度的历史数据。def on_trading_iteration(self): # 获取日线数据判断趋势 daily_bars self.get_historical_prices(self.symbol, 100, “day”) daily_trend … # 计算日线趋势 # 获取小时线数据寻找入场点 hourly_bars self.get_historical_prices(self.symbol, 50, “hour”) entry_signal … # 计算小时线信号 if daily_trend “up” and entry_signal “buy”: # 执行买入这种模式给了策略开发者很大的灵活性。4.2 自定义数据源与事件驱动Lumibot的抽象设计允许你扩展自己的数据源。如果你有独家的数据源如另类数据、爬虫数据可以继承DataSource基类实现get_historical_prices和get_last_price等方法然后将其注入到策略或经纪商中。这使得将非传统数据融入量化模型成为可能。框架虽然是基于轮询sleeptime但也支持一定程度的事件驱动。除了定时触发的on_trading_iteration你还可以在策略中定义on_order_filled订单成交、on_order_partially_filled订单部分成交等回调函数用于更精细的订单管理和风险控制。4.3 与现有生态的融合一个成熟的量化系统很少是孤立的。Lumibot在这方面考虑得比较周到Pandas NumPy无缝集成。你获取的数据本身就是DataFrame可以直接使用整个Pandas和NumPy生态进行复杂的数据分析和计算。机器学习库你可以在策略中导入scikit-learn、TensorFlow或PyTorch使用历史数据训练模型并在on_trading_iteration中调用模型进行预测。框架负责数据获取和订单执行你负责核心的预测算法。可视化与监控虽然Lumibot本身不提供强大的可视化界面但它输出的日志和交易记录是结构化的。你可以很容易地用matplotlib、plotly或streamlit来构建自己的业绩仪表盘读取框架生成的交易记录文件进行分析和绘图。5. 避坑指南与常见问题排查在实际使用Lumibot的过程中你会遇到一些典型的“坑”。以下是我和社区成员总结的一些常见问题及解决方案。5.1 数据问题与延迟问题策略运行时报错提示数据不足Data is empty或获取不到最新价格。原因1数据源配置错误或API限额耗尽。比如Yahoo Finance有时不稳定Alpha Vantage有免费调用次数限制。排查首先在策略外单独测试数据源连接。其次检查你的get_historical_prices请求的条形数bar_count是否超过了你订阅的数据范围例如向只能提供2年数据的免费源请求5年数据。解决考虑使用更稳定的数据源如IEX Cloud有免费层级或付费数据源。对于实时性要求高的策略确保使用支持实时数据流的经纪商如Alpaca、盈透证券而不是依赖延迟的免费数据。问题回测结果异常美好实盘一塌糊涂。原因幸存者偏差Survivorship Bias和前视偏差Look-ahead Bias是回测两大杀手。Lumibot默认的数据源如Yahoo Finance提供的股票数据通常只包含目前仍上市的公司那些已经退市的“失败者”被剔除了导致回测过于乐观。另外确保在回测中on_trading_iteration里使用的数据必须是该时点“已经发生”的不能用到未来数据。解决使用包含退市股票数据的专业数据库进行回测。在代码中严格检查日期索引确保计算指标时没有用到未来的信息。Lumibot的回测引擎在按时间推进时get_last_price返回的是当前回测时刻的价格这一点是可靠的但你自己在策略内部进行复杂数据处理时要格外小心。5.2 订单执行与经纪商差异问题订单状态一直处于Submitted或Pending无法成交。原因1模拟盘与实盘环境差异。模拟盘的撮合引擎有时不如实盘灵敏特别是在非流动性时段或对非标订单类型如限价单离市价太远。排查首先检查订单类型。市价单market通常能立即成交。如果是限价单limit检查你设定的价格是否偏离市价太远。其次检查交易时间你是否在交易所的正常交易时段内提交的订单解决在模拟盘测试时可以先用市价单验证整个流程。对于限价单可以加入一个“超时取消”逻辑或者使用更智能的订单类型如盈透证券支持的“相对市价单”Relative Order。问题切换经纪商后同样的策略表现不一致。原因不同经纪商在订单类型支持、最小交易单位、费用模型、结算货币等方面存在差异。例如加密货币交易所通常支持小数交易Fractional Shares而传统股票经纪商可能要求整股交易。解决在策略的initialize中可以通过self.broker.name来识别当前使用的经纪商并据此调整策略参数。例如针对不同的最小交易单位调整下单数量计算逻辑。务必仔细阅读目标经纪商的API文档。5.3 性能与稳定性优化问题策略运行越来越慢或者内存占用过高。原因如果在on_trading_iteration中频繁请求大量历史数据或者没有妥善管理内存中的数据结构如不断append列表而不清理会导致性能下降。解决缓存数据对于不经常变化的数据如财报日历、股票列表可以在initialize中加载并缓存而不是每次迭代都请求。优化数据请求只请求必要的数据量和时间范围。如果策略只需要最近100根K线就不要请求1000根。使用Pandas向量化操作避免在循环中进行元素级计算尽量使用Pandas内置的向量化函数。调整sleeptime如果不是高频策略没必要设置为“1M”每分钟。根据策略逻辑选择合适的频率减少不必要的唤醒。问题程序运行一段时间后意外崩溃尤其是长时间运行的实盘策略。原因网络波动、API临时故障、服务器内存泄漏等都可能导致崩溃。解决实现健壮的错误处理在on_trading_iteration和所有与外部服务经纪商、数据源交互的地方使用try…except块捕获异常并记录日志而不是让整个程序崩溃。可以考虑在发生非致命错误时让策略休眠一段时间再重试。使用进程监控使用像systemdLinux或supervisor这样的工具来管理你的策略进程配置自动重启。添加心跳和监控让策略定期向一个监控服务如自建的HTTP端点、Telegram Bot发送“心跳”信号。如果心跳停止能及时收到警报。5.4 一个典型错误排查案例场景策略在Alpaca模拟盘运行日志显示计算出了买入信号也生成了订单但账户始终没有持仓变化。排查步骤检查订单提交日志在self.submit_order(order)前后添加详细日志打印订单信息标的、数量、方向、类型。检查经纪商返回submit_order会返回一个订单对象检查其状态order.status。是createdsubmitted还是rejected查看Alpaca Dashboard登录Alpaca的模拟交易网页控制台在“Orders”和“Activities”标签下查看是否有对应的订单记录。这是最直接的方式。常见原因资金不足模拟盘初始资金是10万美元但如果你的下单金额计算错误可能超过现金余额。检查cash * self.allocation // last_price的计算结果。交易时段你是否在美股市场休市周末、节假日、盘前盘后运行策略Alpaca模拟盘在非交易时段可能不接受订单或者订单会排队到开盘。订单类型与价格如果下了限价单且价格偏离市价太远在模拟环境中可能无法成交。通过这样一层层地排查从策略逻辑到框架调用再到经纪商接口最终定位问题根源。养成细致记录日志的习惯是快速排查问题的关键。Lumibot内置的日志功能可以输出到文件建议你将其与更专业的日志系统如Python的logging模块集成方便按级别DEBUG, INFO, ERROR过滤和查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2587801.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…