自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 基于MT5的K线处理逻辑

1、LatestCount > 0 的情况下,如果EndTime == default(DateTime), 查询最近LatestCount条记录;由于从MT5获取的是1分钟k线数据,所以转化成5分钟k线、小时k线、日k、周k还涉及到k线数据合并与归档逻辑。2、LatestCount <= 0的情况下,查询StartTime,EndTime范围内的记录。2、推送线程: 每10秒将实时报价聚合到K线存储 (PushQuoteToChart)1、存储线程: 每60分钟持久化K线到文件 (StoreChart)

2025-10-27 17:50:18 897

原创 基于MT5的交易下单校验过程

逻辑:必须明确指定要操作的是订单还是持仓,不能同时为0或同时大于0。(1). 平仓操作不能操作挂单。(2). 删除操作不能操作持仓。

2025-10-23 10:43:19 969

原创 C++ WonderTrader 源码分析之内存对象池

WonderTrader中封装了ObjectPool, 是一个基于 Boost.Pool 封装的简单对象池,主要作用是高效分配和回收同类型对象的内存,避免频繁 new/delete 带来的堆分配开销。

2025-08-12 11:29:01 823

原创 C++ 设计模式《智能任务助手上线,小明用上了解释器》

优势描述📖 自定义小型语言能将规则/命令表达为结构🔄 灵活扩展支持组合(AND/OR)、嵌套等复杂逻辑♻️ 复用性高表达式可以灵活重用。

2025-11-10 16:42:43 558

原创 C++ 设计模式《业务模块的调度室》

小明创建一个“统一调度中心(Mediator)”,各模块只跟它打交道,由它协调模块之间的互动。比如快递服务完成后需要通知用户 + 通知清洁员打扫 + 通知外卖暂停投递……每个模块都引用其他模块,代码越来越难维护,小明快崩溃了!每加一个模块,就要在所有模块里修改逻辑 ➜ 违背开闭原则!这些模块彼此通信非常混乱!

2025-11-10 16:10:38 204

原创 C++ 设计模式《统计辅助功能》

但是这些业务对象(User, Order, Review)分属不同模块、由不同人维护,结构不同,统计逻辑也不同。小明的系统上线后,业务越来越多。

2025-11-10 15:31:58 416

原创 C++ 设计模式《外卖骑手状态系统》

👦 小明在他的平台引入了外卖骑手系统,其中就需要及时记录和更新骑手的状态。

2025-11-10 12:05:52 273

原创 C++ 设计模式《账本事故:当备份被删光那天》

他没有一个安全的备份机制,而且账本的内部数据是私有成员变量,“今天赚了300块奶茶钱!明天请甜妹喝咖啡☕!但有天他手滑写了个bug 💥,把所有账本清零了!小明最近在开发一个“收益记录系统”📊,每天的收入、支出都自动记录到账本中。他想恢复昨天的记录,却发现……

2025-11-10 11:37:49 429

原创 C++ 设计模式《订单的撤销和重做》

public:场景命令模式传统写法撤销操作✅ 支持❌ 手动处理重做操作✅ 支持❌日志记录✅ 可序列化命令对象❌ 不可持久化解耦调用者/执行者✅ 调用者不关心执行细节❌ 代码耦合。

2025-11-07 18:17:26 203

原创 C++ 设计模式《投诉升级!从甜妹客服到校长热线》

我们将“客服甜妹”、“配送主管”、“校长”都设计成独立的处理者(Handler),配送主管处理完毕:教育骑手注意形象🚴‍♂️。“代办写的情书太动人,女朋友哭了😭”配送主管:这事我也管不了,交校长吧📞。配送主管:这事我也管不了,交校长吧📞。甜妹客服:这不归我管,转交主管➡️。甜妹客服:这不归我管,转交主管➡️。校长亲自处理:组织调查会议🧑‍⚖️。甜妹客服:这不归我管,转交主管➡️。校长:这点小事不用我来管😅。—— 投诉 1 ———— 投诉 2 ———— 投诉 3 ———— 投诉 4 ——

2025-11-07 17:59:21 303

原创 基于MT5的出入金过程

有时 Manager API 返回失败但实际生成了 deal,因此这里做兜底确认。必须确保账户存在,且能够成功读取该账户的保证金、结余等信息。进一步从数据库层面防止重复处理相同的业务流水号。确保即使 API 返回不准,也不会重复执行。限制用户提现不能超过可用余额。

2025-10-28 17:04:19 313

原创 MT5账户状态和交易状态的区别

这是一个用户级(User-level) 状态,决定该账户是否能登录、连接服务器、接受任何交易请求。在 C++ API 中通常通过用户权限位(如 USER_RIGHT_ENABLED)来控制。可通过权限位(如 USER_RIGHT_TRADE_DISABLED)控制。这属于 交易权限级别(Trading Rights) 控制范围。即使账户启用并能登录,它也可能被禁止交易。描述账户本身是否“可用”或“启用”。描述账户是否允许执行“交易操作”。

2025-10-28 14:09:18 436

原创 基于MT5的价格校验逻辑

(1)判断是否使用默认点差差额默认点差不做额外调整,返回 0。(2)计算卖价增加的点数如果 SpreadDiff 是偶数,平均分给买卖两边:askChange = SpreadDiff / 2如果 SpreadDiff 是奇数,买价多 1 点,卖价少 1 点:askChange = (SpreadDiff - 1)/2(3)加上点差偏移量(4)这个值最后会用于 调整 Ask(卖价):2、买价调整值过程和卖价类似,区别在于(2)买价是减去点差偏移量(3)最终买价变化点数

2025-10-24 10:06:08 745

原创 基于MT5的交易时间校验逻辑

这一天是节假日” 且 “现在不在节假日里的特殊开市时间段”,那么就认为现在是休市(返回 true)。今天有没有对该 symbolName(例如 “EURUSD”)或全局(“All”)设置假期?只要其中任何一个为 true,就认为“当前时间处于交易时段”,否则“市场关闭”。Symbol(对应的交易品种名,比如 “XAUUSD” 或 “All”)👉 注意这里 “All” 的作用是全局假期(所有品种都休市)。1、isHoliday 必须为真(即确实是个节假日);→ 返回 false(虽然是假期,但此时仍开市)

2025-10-23 14:31:55 1144

原创 MT5中的点差、点差差额、以及点差差额结余

点差常用于是外汇、期货、差价合约(CFD)。定义:点差 = 卖价(Ask) - 买价(Bid)它表示买入和卖出价格之间的差值。名称含义作用Bid(买价)市场愿意买的价格(你卖出时成交的价格)你“卖”时用Ask(卖价)市场愿意卖的价格(你买入时成交的价格)你“买”时用Spread(点差)Ask - Bid成交成本(相当于手续费)品种BidAskSpreadEUR/USD1.162841.162820.00002假设最小报价单位(Point)是 0.00001,

2025-10-21 14:11:56 862

原创 C++ WonderTrader 源码分析之时间处理类

3、日期计算:getNextDate、getNextMonth、getNextMinute等便捷函数。timeToMinBar() 和 minBarToDate/Time() - 分钟K线时间转换。1、高性能时间获取:优化的getLocalTimeNow(),性能提升显著。2、多种时间格式:支持YYYYMMDD、HHMMSS、时间戳等多种格式。getLocalTime() - 获取格式化时间字符串。getDateTime() - 同时获取日期和时间。getTZOffset() - 获取时区偏移。

2025-10-13 16:26:28 523

原创 C++ WonderTrader 源码分析之字符串处理类

3、大小写转换:toLowerCase、toUpperCase、makeLowerCase、makeUpperCase。4、匹配检查:startsWith、endsWith、match(支持通配符)8、截取扩展:left、right、extend、charCount。startsWith() 和 endsWith() - 前缀后缀检查。7、格式化:printf、printf2(类似sprintf)5、查找定位:findFirst、findLast。1、修剪清理:trim、trimAllSpace。

2025-10-13 14:21:48 257

原创 C++ WonderTrader 源码分析之容器类

自动内存管理- 避免内存泄漏,减少程序员负担统一对象生命周期- 适配现有的WTSObject引用计数系统性能优化- 针对交易系统的访问模式优化线程安全- 引用计数的原子操作API一致性- 降低学习和使用成本类型安全- 统一的WTSObject基类系统这些优势在高频交易、实时风控、大量数据处理等场景下尤为重要,能显著提高代码质量和系统稳定性。

2025-10-10 13:57:18 293

原创 C++ WonderTrader 源码分析之引用计数基类

该基类还可以用在其他需要共享使用的类上,通过引用计数的方式避免数据的拷贝。

2025-09-17 14:06:29 257

原创 C++ 设计模式《外卖菜单展示》

public:适用场景描述不同集合类型统一遍历vector、list、map 等不同结构隐藏内部结构客户端不关心菜单内部支持并发、懒加载遍历支持自定义迭代顺序和惰性加载等。

2025-09-08 17:23:49 512

原创 C++ WonderTrader 源码分析之共享内存

(1) 缺少溢出检测(当写入速度大于读取速度时,就会出现读取不及时数据被覆盖的问题。- ShmCaster作为数据发送方,将tick、委托队列、逐笔委托、逐笔成交等数据写入共享内存队列。写后通知: 先写数据,再更新_readable,确保读取方看到完整数据。检测发送方进程重启(如果重启则读取最新的数据,自己重启也是读最新数据)2、在这块内存上调用 CastQueue 的构造函数,初始化对象。4、进程标识: 记录发送方进程ID,用于重启检测。2、只调用构造函数,在已有的内存上“构建对象”。

2025-09-05 13:54:25 1013 1

原创 C++ WonderTrader源码分析之自旋锁实现

在WonderTrader的文件SpinMutex.hpp定义了跨平台的自旋锁的实现。private:flag 是一个原子布尔变量,标志锁的状态:false:锁未被占用。true:锁已被占用。使用 std::atomic 保证该变量在线程之间的读写是原子的,不会产生数据竞争。

2025-08-08 17:49:21 1039

原创 C++ WonderTrader源码分析之异常捕获

在工程TestDtPorterv中调用的getRunner().start(bAsync) 有使用到程序的异常捕获处理s < NSIG;s++)if(!});

2025-08-08 16:30:21 626

原创 C++ WonderTrader 源码分析之浮点数处理

在WonderTrader的文件decimal.h中封装了一些用于浮点数(double)处理的工具函数,主要目的是解决浮点数精度误差带来的比较问题,以及进行一些常用运算(四舍五入、比较、取模等)。下面我们逐行详细解释每个函数的功能和实现逻辑。用于浮点数比较的误差容忍值,表示在 1e-6 精度内认为两个浮点数相等。这是处理浮点误差的标准做法。函数功能描述关键意义rnd四舍五入到指定精度格式化数值eq判断两个浮点数近似相等避免a == b失败gtlt判断严格大于/小于(排除误差)精确控制浮点比较。

2025-08-05 17:46:00 449

原创 C++ 浅谈Robin Hood Hash 算法

探测距离远的元素 = 穷人探测距离短的元素 = 富人插入时发现某位置被占:如果新元素比桶里元素 更穷(探测距离更远),就 抢占 位置,把老元素 往后挤。贫富差距变小(探测距离差距减小)查找操作平均探测次数变少最坏情况比普通线性探测更好Robin Hood 探测通过“让探测距离大的元素优先占位”的方式,有效抑制了哈希表中因聚集造成的长尾探测链,提升了在高负载场景下的平均与最坏查找性能。

2025-08-04 11:32:57 1193

原创 C++ 高性能容器:ankerl::unordered_dense::map

ankerl::unordered_dense::map 是一个 高性能哈希表容器,来自开源库 unordered_dense,由 Martin Ankerl 开发。特性说明🚀更快性能通常比更好,特别是在查找、插入、大量数据时📦内存紧凑内存布局更紧凑,缓存友好,避免了节点式内存开销🔁开放寻址 (Open Addressing)使用了 Robin Hood Hashing,避免链表结构,提升性能一致性🧠数据局部性更好有利于 CPU 缓存利用,提升实际运行速度🛠️无依赖。

2025-07-30 17:56:01 884

原创 C++ Boost Asio 实现通用异步任务调度器(线程池 + 定时任务)

Boost.Asio 的底层实现非常精妙,它是一个高性能、跨平台、基于事件驱动的异步 I/O 框架,类似于 libevent / libuv,但更现代、面向对象、支持多种异步资源(网络、定时器、串口等),并且通过 io_context 实现统一的任务调度。所有 I/O 操作(如 socket、定时器)都注册到内核的事件通知机制(如 epoll/kqueue/IOCP)这意味着你不会阻塞在 recv 或 accept 上,而是注册一个事件+回调函数,一旦事件触发,回调。支持线程池,多线程并发执行任务。

2025-07-29 15:52:32 579

原创 C++ 设计模式《消息轰炸日:小明差点错过客户投诉!》

方式优点缺点不使用观察者简单直观高耦合,难扩展使用观察者解耦、灵活通知、易扩展增加了一点抽象。

2025-07-21 17:12:22 977

原创 C++ 设计模式《小明的万能快递助手:送货流程的模板革命》

它定义一个算法框架,让子类去实现某些步骤,而框架本身流程固定,不让乱改。特点不用模板方法用模板方法结构冗余、混乱清晰、统一流程灵活性添加新逻辑困难子类重写局部逻辑即可可维护性不一致、易错逻辑集中、标准统一。

2025-07-16 14:10:13 824

原创 C++ 设计模式《优惠大战:小明外卖平台的满减大危机!》

不使用策略模式使用策略模式if-else 地狱,维护困难每种优惠独立封装,便于扩展修改主逻辑风险高满足开闭原则新活动上线慢热插拔式扩展,开发效率高。

2025-07-07 14:15:17 1102

原创 C++ 设计模式 《外卖高峰期,小明靠一键下单系统拯救了万千饥饿学子》

特性没有外观模式使用外观模式用户代码耦合性高必须了解每个子系统的细节和调用顺序隐藏子系统实现,仅暴露统一接口代码复用性重复调用多个系统封装逻辑,集中维护用户体验需要多步操作,容易出错一键下单,体验丝滑顺畅 🛫开发与维护成本每个地方都要处理子系统调用改变子系统不影响调用方。

2025-06-30 10:43:34 11214 1

原创 C++ 设计模式 《打卡签到炸服事件:小明如何靠享元保命》

因为每次打卡,系统都会给用户创建一大堆重复的数据对象,例如地点、活动说明、图标……⚠️ 结果:activityTitle、location、icon 每人都拷贝一份,浪费内存,GC 压力山大。自从小明平台推出了“每日打卡领饭票 🍱”的活动,用户们蜂拥而至。高并发、大量对象重复的场景(如弹幕、地图点、粒子特效)所有用户的数据只需独立记录用户名,而活动信息可复用。游戏中地图格子、棋子、NPC 多个实例共用模型。“打卡活动”中的活动标题、位置、图标等是不变的。每天早上 8 点,系统就会响起:……

2025-06-10 11:33:03 1651

原创 C++ 设计模式 《爬虫围城危机:小明用代理模式自救》

比较维度硬编码处理代理模式处理结构清晰❌ 混乱✅ 职责分明易于扩展❌ 修改原类代码✅ 添加新代理类即可测试性好❌ 很难隔离测试✅ 每个代理功能可独立测试灵活组装❌ 所有逻辑耦合✅ 可按需组合代理链避免重复代码❌ 每个接口都要写一遍✅ 写一次代理,可全局复用。

2025-06-09 15:30:51 3617 7

原创 C++ 设计模式 《树状目录服务上线,小明用if/else快崩溃了!》

组合模式将对象组织成树形结构,使得“单个对象”和“组合对象”具有一致的操作方式。在这里,我们把:每一个服务部门(如“饮品服务部”)看作 组合节点每一个具体服务(如“奶茶配送”)看作 叶子节点。

2025-06-06 17:16:21 1452

原创 C++ 设计模式 《小明的奶茶加料风波》

问题没使用使用装饰器类数量爆炸(组合越多类越多)只需一个装饰器类一类加料灵活性不能动态组合可以任意组合加料可维护性每改一组合要改多个类可拓展性强,易维护。

2025-06-06 11:05:07 1316

原创 C++ 设计模式《前端小美又改UI了,小明头秃三厘米》

将抽象部分与实现部分分离,让它们可以独立变化。就像“遥控器”桥接“电视品牌”一样 —— 遥控器不关心电视品牌,电视也不依赖遥控器风格。他们通过中间桥(接口)交互 💡public:// 浅色模式public:std::cout << "🌞 浅色显示:" << content << std::endl;// 夜间模式public:std::cout << "🌙 夜间显示:" << content << std::endl;

2025-06-05 11:18:12 2474

原创 C++ 设计模式《接口不兼容,差点让小明的平台下线》

将一个类的接口转换成客户希望的另一个接口,解决接口不兼容的问题。就像现实生活的插头转换器 🔌。

2025-06-05 10:55:27 1379

原创 C++ 设计模式《复制粘贴的奇迹:小明的原型工厂》

每次重复创建套餐,累得像🐂!现在我直接复制模板,一键下单,效率飙升⚡!原型模式,YYDS!🙌”

2025-06-04 16:44:46 1490

原创 C++ 设计模式《小明的一站式套餐服务平台》

现在我不是做平台的,我是做生活服务生态系统的!一个服务,就像一整支小分队,自动出发,统一风格,配合默契。🆕 新增“情侣套餐”或“高考陪跑套餐”,只需添加一组新工厂,无需改老代码。⚠️ 一个服务订单里,包含多个子产品:外卖 + 跑腿 + 快递!🚴 然后,每种“服务组合”实现一整套产品族!“你们点的是外卖,还是‘人生管家服务’?增加一个服务种类,要改所有地方,维护地狱。

2025-06-04 14:39:16 1733

原创 C++ 设计模式《外卖爆单那天,小明差点猝死》

于是他设计了一个“送达工厂”,让每种商品背后都有一个派送工厂负责创建“配送员”。他打开代码一看,全是 if-else,一改就容易崩,想支持新类型还得改老代码。“以前我是外卖员,现在我是平台老板。我不再手动派单,而是工厂自动生成配送员!小明是计算机系的大三学生,课余搞了个创业项目,做一个**“校园版美团”**。每天下课后,几十个同学在他的 APP 上点餐,他负责把订单派给外卖小哥。新增商品类型时,只需新建一个工厂类,主逻辑不用改。那天下雨、食堂关门,APP 爆单了!易出错,低扩展,不专业。

2025-05-30 10:45:39 1390

C# 桌面应用WPF(适配 .NET Framework)- 控件使用与交互事件(增加注册页面和登录页面之间的跳转)

C# 桌面应用WPF(适配 .NET Framework)- 控件使用与交互事件(增加注册页面和登录页面之间的跳转)

2025-05-22

C# 桌面应用WPF(适配 .NET Framework)- WPF 初识与布局基础(实现登录窗口)

C# 桌面应用WPF(适配 .NET Framework)- WPF 初识与布局基础(实现登录窗口)

2025-05-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除