0

0

一篇学会构建自己的合约交易“指标库”与“信号系统”

幻夢星雲

幻夢星雲

发布时间:2025-12-22 16:28:57

|

531人浏览过

|

来源于php中文网

原创

指标参数库以MA、RSI、MACD为模板,分别配置周期与阈值;封装为无状态JS函数,确保输入输出规范与回测一致;信号引擎将指标输出布尔化,支持多头/空头入场平仓等五类动作及复合条件触发。

一篇学会构建自己的合约交易“指标库”与“信号系统” - php中文网

全球正规靠谱的交易所推荐

欧易OKX:

Binance币安

火币Huobi:

Gateio芝麻开门:

一、定义核心指标参数

指标库的基础是可复用、可验证的数学表达式,需明确输入源(如K线收盘价、成交量、时间周期)与输出形态(标量、布尔值或数组)。每个指标必须绑定唯一标识符,便于后续调用与组合。

1、选取MA、RSI、MACD三类典型震荡与趋势指标作为初始模板。

2、为MA设定3种常用周期:5、20、60,输出为浮点数值序列。

3、为RSI配置标准14周期,并将超买阈值设为70,超卖阈值设为30

4、MACD采用默认参数(12,26,9),输出包含DIF、DEA、MACD柱三项独立字段。

二、封装指标为可执行函数模块

将指标逻辑抽象为无状态函数,输入为统一结构的K线数据数组,输出为带时间戳的指标结果对象。函数不依赖外部变量,确保跨平台一致性与回测可复现性。

1、使用JavaScript编写MA函数,接收priceArray与period参数,返回长度匹配的移动平均数组。

2、RSI函数内部实现Wilders平滑算法,输出范围严格限定在0–100之间。

3、MACD函数调用内置EMA实现,DIF与DEA均以指数加权方式计算,避免简单SMA偏差。

4、所有函数头部添加注释说明参数类型、单位、精度要求及边界处理逻辑。

三、构建信号触发规则引擎

信号系统本质是指标输出的布尔化映射,通过预设条件组合生成开仓、平仓、反向等动作指令。每条规则须含唯一名称、生效周期、优先级编号及失效机制。

1、定义基础信号类型:多头入场、空头入场、多头平仓、空头平仓、持仓反转。

2、设置复合条件示例:“当RSI(14) 多头入场信号。

3、加入过滤条件:仅在UTC时间00:00–23:59内激活,避开合约交割窗口前30分钟。

4、每条规则附加最大持仓时长限制,例如“多头入场后若12根K线未触发止盈止损,则自动平仓”。

四、集成链上事件监听接口

将链上交易行为纳入信号判断维度,监听指定合约地址的Transfer、Swap、Mint等事件日志,提取金额、地址、时间戳并转化为辅助信号因子。

1、配置Infura或Alchemy节点端点,订阅目标代币合约的Transfer事件。

2、对单笔Transfer金额超过100000 USDT等值的地址标记为大额流入/流出标签。

3、统计过去1小时内大额流入地址数,若连续3个周期大于5,触发链上热度增强辅助信号。

4、将该信号与RSI超卖状态叠加,形成“链上吸筹+技术超卖”的双重确认条件。

五、部署本地化策略调度器

调度器负责按固定间隔拉取行情数据、执行指标计算、运行信号规则、生成操作指令队列,并对接交易所API完成指令提交。全程离线运行,不上传原始数据至第三方服务。

1、设定调度周期为30秒,每次启动时校验本地时间与NTP服务器偏差,误差超500ms则暂停执行。

2、指标计算模块启用Web Worker隔离主线程,防止UI阻塞。

3、信号输出队列按优先级排序,高优先级指令(如爆仓预警平仓)覆盖低优先级指令(如常规止盈)。

4、每条发出指令附带唯一trace_id,写入本地IndexedDB日志表,字段包括时间戳、合约对、方向、数量、价格、响应状态。

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

554

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

374

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

731

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

477

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

394

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

991

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

656

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

551

2023.09.20

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

8

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.7万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.2万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号