mcpField
M
MCP Upstox Trading Server

MCP Upstox Trading Server

本地服务
github.com/lonelypx金融数据078 周前更新

关于 MCP Upstox Trading Server

MCP Upstox Trading Server 是面向 Upstox 交易者的 Node.js 应用,可从历史价格计算支撑和阻力位,并通过自动策略下单。它还提供跨标的计算和交易执行接口。

主要功能

  1. 01识别密集连接的支撑阻力位
  2. 02计算多个标的的 MCP 值
  3. 03通过 Upstox 执行交易
  4. 04运行自动 MCP 策略
  5. 05保存并刷新身份验证令牌

适用场景

  1. 01根据历史行情计算枢轴位
  2. 02比较多个标的的 MCP 水平
  3. 03通过 Upstox 下单
  4. 04运行基于价格水平的自动策略

MCP 相关

README 描述了行情分析、MCP 计算、交易和策略执行的 HTTP 接口,但未说明其实现了 MCP 协议接口。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Upstox 交易服务

项目概述

Most Connected Pivot(MCP)Upstox 交易服务是一款自动交易应用,可识别市场中高概率的支撑位和阻力位,并据此进行交易。系统会分析历史价格数据,识别价格曾多次与特定价位交互的枢轴点,并在当前价格接近这些重要价位时执行交易。

什么是 MCP(Most Connected Pivot)?

MCP 是一种技术分析概念,用于识别过去曾发挥重要支撑或阻力作用的价格水平。这些位置具备以下特征:

  1. 价格多次穿过其均值(枢轴点)
  2. 多个价格点聚集在某个特定水平附近(连接)
  3. 连接数最多的水平即为 MCP——一个高概率反转区域

该策略假设,价格更有可能遵循过去曾多次发挥支撑/阻力作用的水平,从而为交易者带来统计优势。

前置条件

  • Node.js(v14 或更高版本)
  • NPM(Node Package Manager)
  • 拥有 API 访问权限的 Upstox 开发者账户
  • JavaScript 和交易概念的基础知识

安装步骤

  1. 创建项目目录

    mkdir mcp-upstox-server
    cd mcp-upstox-server
    
  2. 初始化项目

    npm init -y
    
  3. 安装所需依赖

    npm install express axios cors dotenv upstox-js-sdk
    
  4. 创建服务文件

    • 将提供的服务代码复制到名为 server.js 的文件中
    • 创建 .env 文件,并填入提供的配置
  5. 获取 Upstox API 凭据

    • 登录 Upstox 开发者账户
    • 创建新应用以获取 API 密钥和密钥
    • 将重定向 URI 设置为 http://localhost:3000/callback 或自定义域名
    • 使用你的凭据更新 .env 文件

环境设置

开发环境

创建 .env.development 文件,并填入以下配置:

PORT=3000
UPSTOX_API_KEY=your_development_api_key
UPSTOX_API_SECRET=your_development_api_secret
REDIRECT_URI=http://localhost:3000/callback
NODE_ENV=development

在开发模式下运行:

NODE_ENV=development node server.js
测试环境

创建 .env.test 文件:

PORT=3001
UPSTOX_API_KEY=your_test_api_key
UPSTOX_API_SECRET=your_test_api_secret
REDIRECT_URI=http://localhost:3001/callback
NODE_ENV=test

在测试模式下运行:

NODE_ENV=test node server.js
生产环境

创建 .env.production 文件:

PORT=8080
UPSTOX_API_KEY=your_production_api_key
UPSTOX_API_SECRET=your_production_api_secret
REDIRECT_URI=https://your-domain.com/callback
NODE_ENV=production

在生产模式下运行:

NODE_ENV=production node server.js

部署选项

本地部署

用于个人或开发用途:

node server.js
云部署
Heroku
  1. 创建 Procfile:

    web: node server.js
    
  2. 在 Heroku 控制面板中设置环境变量

  3. 部署:

    git push heroku main
    
AWS EC2
  1. 设置 EC2 实例
  2. 安装 Node.js 和 npm
  3. 克隆代码库
  4. 设置环境变量
  5. 使用 PM2 管理 Node 进程:
    npm install -g pm2
    pm2 start server.js
    
Docker 部署

创建 Dockerfile:

FROM node:16
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "server.js"]

构建并运行:

docker build -t mcp-upstox-server .
docker run -p 8080:8080 -d mcp-upstox-server

运行服务

  1. 启动服务

    node server.js
    
  2. 通过 Upstox 进行身份验证

    • 打开浏览器并访问 http://localhost:3000/auth
    • 系统会将你重定向到 Upstox 登录页面
    • 登录并授权应用后,系统会将你重定向回服务
    • 你应会看到一条表示身份验证成功的消息
    • 你的令牌现已安全存储,并会在需要时自动刷新

身份验证改进

服务现已包含以下身份验证改进:

  1. 令牌持久化

    • 访问令牌和刷新令牌会安全地存储在本地文件(token.json)中
    • 服务启动时会加载令牌,无需重新进行身份验证
  2. 自动刷新令牌

    • 系统会自动检测令牌是否即将过期
    • 令牌会在过期前 5 分钟于后台刷新
    • 所有 API 调用都会使用中间件,确保有可用的有效令牌
  3. 登出功能

    • 新增的 /logout 端点允许用户完全退出登录
    • 此操作会从内存和磁盘中清除所有已存储的令牌

Upstox SDK 集成

服务器现在使用官方 Upstox JavaScript SDK,提供以下功能:

  1. 简化 API 调用

    • 通过统一的接口直接访问所有 Upstox API 端点
    • 为 API 请求提供类型检查和更完善的错误处理
  2. 自动格式化请求

    • SDK 会妥善格式化所有 API 请求
    • 确保符合 Upstox API 要求
  3. 更易于维护

    • 通过 SDK 更新处理 API 变更
    • Upstox API 演进时,无需频繁修改代码

使用 MCP 交易 API

计算某个标的的 MCP

请求:

GET /historical-data/NSE_FO%7CNIFTY-I/1D?from=2023-01-01&to=2023-04-01

响应:

{
  "symbol": "NSE_FO|NIFTY-I",
  "interval": "1D",
  "dataPoints": [...],
  "mcp": {
    "timestamp": "2023-02-15T09:15:00.000Z",
    "price": 17865.75,
    "connections": 12
  }
}
计算多个标的的 MCP

请求:

POST /mcp/calculate
Content-Type: application/json

{
  "symbols": ["NSE_FO|NIFTY-I", "NSE_FO|BANKNIFTY-I"],
  "interval": "1D",
  "from": "2023-01-01",
  "to": "2023-04-01"
}

响应:

{
  "NSE_FO|NIFTY-I": {
    "timestamp": "2023-02-15T09:15:00.000Z",
    "price": 17865.75,
    "connections": 12
  },
  "NSE_FO|BANKNIFTY-I": {
    "timestamp": "2023-02-18T09:15:00.000Z",
    "price": 41235.50,
    "connections": 9
  }
}
执行交易

请求:

POST /trade
Content-Type: application/json

{
  "symbol": "NSE_FO|NIFTY-I",
  "quantity": 50,
  "side": "BUY",
  "orderType": "LIMIT",
  "price": 17850
}

响应:

{
  "order_id": "12345678",
  "status": "success",
  "message": "Order placed successfully"
}
运行自动化 MCP 策略

请求:

POST /strategy/mcp
Content-Type: application/json

{
  "symbol": "NSE_FO|NIFTY-I",
  "interval": "1D",
  "lookbackDays": 30,
  "investmentAmount": 100000
}

响应:

{
  "strategy": "MCP",
  "action": "BUY",
  "order": {
    "order_id": "12345678",
    "status": "success"
  },
  "mcp": {
    "timestamp": "2023-03-15T09:15:00.000Z",
    "price": 17865.75,
    "connections": 12
  },
  "currentPrice": 17870.25,
  "analysis": {
    "mcpDeviation": "0.03%",
    "connectionStrength": 12
  }
}

安全注意事项

开发环境
  • 使用权限受限的测试 API 密钥
  • 仅在内存中存储令牌(禁用文件持久化)
  • 启用详细的错误日志记录
生产环境
  • 使用权限受限的适当 API 密钥管理方案
  • 使用安全数据库存储令牌,而非文件系统
  • 为 API 访问实施 IP 白名单
  • 为所有连接启用 HTTPS
  • 使用 Nginx 等反向代理
  • 实施速率限制

在生产模式下,将以下代码添加到 server.js:

if (process.env.NODE_ENV === 'production') {
  // Force HTTPS
  app.use((req, res, next) => {
    if (req.header('x-forwarded-proto') !== 'https') {
      res.redirect(`https://${req.header('host')}${req.url}`);
    } else {
      next();
    }
  });
  
  // Rate limiting
  const rateLimit = require('express-rate-limit');
  const limiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15 minutes
    max: 100 // limit each IP to 100 requests per windowMs
  });
  app.use(limiter);
}

故障排除

  • 身份验证问题:确保 .env 文件中的 API 凭据正确
  • 下单错误:检查数量是否符合最小手数要求
  • 数据获取问题:确认标的格式正确(NSE_FO|SYMBOL-I)
  • 令牌刷新失败:检查 API 密钥是否已过期或被撤销

进一步自定义

可通过修改以下内容来自定义 MCP 计算和交易逻辑:

  1. calculateMCP() 函数 — 调整连接条件和枢轴点识别
  2. 策略端点 — 修改偏差阈值和趋势识别逻辑
  3. 订单参数 — 更改订单类型、有效期和披露数量

贡献

欢迎贡献!请随时提交 Pull Request。

许可证

本项目采用 MIT License 授权。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。