Recent Posts

Pages: 1 [2] 3 4 5 6 7 8 9 10
11
Announcements / Re: DFS主网开放公告
« Last post by 天籁 on September 11, 2026, 10:26:24 pm »
搞个网关,把DFS弄到BTS链上来交易吧,这样价格更有说服力。
那岂不是中心化的DFS了,BTS社区要搞那是BTS社区的自由。
12
Announcements / Re: DFS主网开放公告
« Last post by abit on September 11, 2026, 07:31:17 pm »
搞个网关,把DFS弄到BTS链上来交易吧,这样价格更有说服力。
13
Announcements / Re: DFS主网开放公告
« Last post by 天籁 on September 11, 2026, 12:52:35 pm »
祝贺DFS价格突破0.16CNY。
14
General Discussion / Re: 🌏XBTS Dex & DeFi
« Last post by EuropaSH on September 11, 2026, 07:57:34 am »


XBTS DEX just got a major upgrade 🚀

v2.18.19 is live — and the mobile experience is on another level now.

📱 Mobile:
• New bottom nav: Trade · Wallet · DeFi · Earn · Menu
• Built-in numeric keypad for Price/Amount - the OS keyboard never covers your field again 😤
• PIN unlock + Biometric login (Face ID / Touch ID / fingerprint) via WebAuthn PRF - PIN encrypted on-device
• Bottom sheets for Transfer, Order Review & PIN unlock
• Transfer: big amount input, 25/50/75/MAX chips, recent recipients, one-tap TX ID copy
• Quick % buttons in the order form
• Swipe between Wallet / Orders / Activity

💻 Desktop:
• App renamed to XBTSDEX in Start menu / installer

⚙️ All platforms:
• ✅ Fixed memo encryption for accounts where memo key = active key - gateway withdrawals no longer show "**"
• ✅ Auto update detection: "New version available - tap to update" toast, instant service worker activation, anti-stale-cache headers
• ✅ Account registration: name rules validation + "password saved" confirmation
• ✅ Referral program - Become a Lifetime Member and earn on every trade

Update now👇
https://github.com/XBTS/xbts-ui-releases/releases/tag/2.18.19



XBTS Cross-Chain Dex & DeFi
Safely! Instantly! Simply!

15
中文 (Chinese) / BTSBots增加AI交易agent
« Last post by alt on September 10, 2026, 04:10:27 am »
https://github.com/pch957/btsbots/blob/main/TradeBots.md
BTSBots增加AI交易agent
demo.btsbots在 XBTSX.USDT/BTS 市场测试,使用的 gemini-3.5-flash-lite 模型

  • 正在连接 Meteor 节点: wss://ws.btsbots.com/websocket

🔌[DDP 协议] 连接已激活。
🔑[等待登陆] 未登陆,等待认证...
✓ [BotsKey] 从 pass 成功载入账号 [demo.btsbots] 及其关联的 2 把 Key。
✓ [BotsClient] 登录成功!
🔄 [配置更新] 成功载入策略 [ai_agent]: 基于 Google AI Studio (Gemini 2.0) / OpenAI 的全自主量化交易 Agent (支持吃单与做
市)

🚀 [TradeBots] 机器人引擎就绪!策略: [ai_agent] | 监听账户: [demo.btsbots]

======================================================================
📊 [BTSBots AI Agent] 负责市场历史成交统计与盈亏看板 (PnL Dashboard)
======================================================================
 • 负责市场范围: [('BTS', 'XBTSX.USDT'), ('XBTSX.USDT', 'BTS')]
 • 撮合成交总笔数: 16 笔
 • 累计成交换手额: 449.86 CNY
 • 累计法币净盈亏: 🔴 -5.47 CNY
 • 各代币累计净流动明细:
    └─ BTS       : -34678.5170 (公允折合: -349.65 CNY)
    └─ XBTSX.USDT: +51.8450 (公允折合: +344.17 CNY)
======================================================================

💓 [Pulse] 区块 #114230048 | 2026-09-10 13:52:48
🧠 [AI Agent 思考分析] [区块 #114230049]
   └─ 补齐BTS市场做市挂单
   🛡️ [风控拦截] 严重警告: 报价 0.00157960 偏离公允价 0.00151879 超过 2.0% 红线 -> 自动修正到安全区间

📡 [触发 AI 决策] [区块 #114230049] 原因: 检测到有充足余额的市场缺失挂单 ['BTS/XBTSX.USDT'],强制唤醒 AI 建立流动



# 🤖 BTSBots TradeBots 开发者与量化策略指南

`TradeBots` 是专为 BitShares(比特股)DEX 量化交易与做市设计的 Python 自动化交易框架。它深度集成了 Meteor DDP 实时数据流、BitShares 原生高效订单修改操作(OP 77,无需撤单即可直改价格与数量)以及零信任密钥管理。

---

## 🚀 快速上手

### 启动量化与 AI Agent 策略机器人

```bash
# 1. 启动 AI 自主交易 Agent 机器人 (支持 Google AI Studio / OpenAI / DeepSeek / Ollama)
GEMINI_API_KEY="AIzaSy..." uv run trade_bots_ai.py --pass btsbots/my_account --strategy ai_agent

# 2. 启动简单法定做市策略 (SimpleMaker)
uv run trade_bots.py --pass btsbots/my_account --strategy simple

# 3. 启动动态自适应多档网格策略 (DynamicGrid - 震荡收割机)
uv run trade_bots_grid.py --pass btsbots/my_account --strategy grid

# 4. 启动通用 N 环路原子无损套利策略 (UniversalArbitrage - 负对数图算法)
uv run trade_bots_arbitrage.py --pass btsbots/my_account --strategy arbitrage

# 5. 启动布林带均值回归做市策略 (BollingerMeanReversion)
uv run trade_bots_bollinger.py --pass btsbots/my_account --strategy bollinger
```

---

## 🧠 AI 自主交易 Agent (`trade_bots_ai.py`)

`AITradingAgent` 将大语言模型(LLM)与去中心化区块链高频交易引擎深度结合,为 AI 提供 360° 结构化全景市场决策上下文,并由底层的零信任硬风控护栏(Guardrails)确保每一笔链上操作的安全合规。

### 1. 核心架构与决策流

```text
       ┌────────────────────────────────────────────────────────┐
       │               Meteor DDP 实时行情与成交流               │
       └───────────────────────────┬────────────────────────────┘
                                   │
       ┌───────────────────────────▼────────────────────────────┐
       │            360° 全景市场上下文构建器 (Context)           │
       │  • 负责市场资产画像、余额与持仓上限 (Max Holding CNY)  │
       │  • Top 5 盘口深度、微观流动性与单价物理单位 (Price Unit)│
       │  • 历史成交记录与法定 CNY 实时盈亏看板 (PnL Tracker)   │
       │  • 市场双向缺口与在单残缺度诊断 (Coverage & Health)    │
       │  • 动态库存倾斜加价指导 (Dynamic Inventory Skew)       │
       └───────────────────────────┬────────────────────────────┘
                                   │ JSON 提示词
       ┌───────────────────────────▼────────────────────────────┐
       │               主流 LLM 决策推理引擎                    │
       │     (Gemini 2.0 / GPT-4o / DeepSeek / Ollama)          │
       └───────────────────────────┬────────────────────────────┘
                                   │ 输出 JSON 意向 (Intents)
       ┌───────────────────────────▼────────────────────────────┐
       │             🛡️ 零信任硬风控护栏 (Guardrails)            │
       │  • 市场范围锁 (Market Scoping Guard: 彻底隔离无关市场) │
       │  • 法币下单额度硬截断熔断 (target_order_cny Cap)        │
       │  • 最大持仓上限拦截 (max_holding_cny)                  │
       │  • 双向价差保底锁 (Anti Self-Match: 严禁平价自成交)    │
       │  • 冗余重复挂单自动清理撤单                            │
       └───────────────────────────┬────────────────────────────┘
                                   │ 原子打包提交
       ┌───────────────────────────▼────────────────────────────┐
       │         BitShares 区块链原生广播 (OP 77 / OP 1)        │
       └────────────────────────────────────────────────────────┘
```

### 2. AI Agent 五大核心技术优势
- **免费 Google AI Studio 原生支持**:使用 `gemini-2.0-flash` 模型,高吞吐低延迟,免去高昂 API 费用。
- **智能自主门控与静默心跳(Gating & Pulse Heartbeat)**:仅在发生缺单、在单被吃超 50%、价格变动等实质信号时才唤醒 AI;平稳时终端保持单行脉冲心跳,绝不刷屏。
- **动态库存倾斜(Dynamic Inventory Skew)**:越接近设定的资产持仓上限,买入挂单价格向下偏离折价越多;未设上限则视为无上限。
- **多资产法定盈亏看板(PnL Dashboard)**:启动即自动汇总结算负责市场的撮合成交笔数、累计换手额与净盈亏。
- **单价物理单位防混淆**:明确区分 `A/B` 市场单价单位为 `B per 1 A`,彻底避免买卖单数值颠倒错单。

---

## 📊 经典交易策略与数学原理

### 1. 简单法定做市 (`SimpleMaker` / `trade_bots.py`)
- **场景**:日常做市、提供双向流动性。
- **原理**:基于资产的法定公允价格(或自定义锚定比率)计算理论中间价,向上加价 `maker_spread%` 挂单,同时设置严格的 Maker 防吃单保护。

### 2. 动态多档网格策略 (`DynamicGrid` / `trade_bots_grid.py`)
- **场景**:宽幅震荡行情。
- **原理**:自适应盘口中间价 $P_{\text{mid}} = \frac{P_{\text{ask1}} + P_{\text{bid1}}}{2}$ 作为中轴,按等比步长铺设 $N$ 档网格,买卖双向严格受 Maker 边界保护(买单不高过卖一,卖单不低过买一),利用 **OP 77 动态平移网格档位**。

### 3. 通用 $N$ 环路原子无损套利 (`UniversalArbitrage` / `trade_bots_arbitrage.py`)
- **场景**:跨币种环路价差套利(自动发现 2 环、3 环、4 环机会)。
- **负对数图算法优化**:
  $$\prod_{i=1}^k P_i > 1 \iff \sum_{i=1}^k -\ln(P_i) < 0$$
  将各市场的最优兑换汇率转换为有向图边权重 $-\ln(P)$,通过**负权环路探测算法**在毫秒级内自动寻优。
- **原子事务**:将整个闭环的 $N$ 笔操作打包在同一个区块链 Transaction 内原子提交,零滑点零单边风险。

### 4. 布林带均值回归做市 (`BollingerMeanReversion` / `trade_bots_bollinger.py`)
- **场景**:波动率扩张与均值回归行情。
- **原理**:实时统计滑动采样均线(MA)与标准差 $\sigma$,在上轨超买区与下轨超卖区挂单做市,赚取波动率收缩利润。

---

## ⚙️ 配置文件说明 (`trade_rules.json` / `trade_rules-example.json`)

```json
{
  "strategies": {
    "ai_agent": {
      "strategy_name": "AITradingAgent",
      "description": "基于 Google AI Studio / OpenAI 的全自主量化交易 Agent",
      "block_delay": 1.0,
      "keep_bts_fees": 30.0,
      "max_holding_cny": {
        "XBTSX.USDT": 2000.0,
        "CNY": 5000.0,
        "BTS": 10000.0
      },
      "ai_agent": {
        "provider": "gemini",
        "model": "gemini-2.0-flash",
        "api_base": "https://generativelanguage.googleapis.com/v1beta/openai/",
        "api_key": "YOUR_GEMINI_API_KEY",
        "max_price_deviation_pct": 15.0,
        "min_maker_spread_pct": 1.5
      },
      "custom_price": { "CNY": [13.597625854, "BTS"] },
      "default": { "target_order_cny": 50.0 },
      "markets": [["BTS", "CNY"], ["BTS", "XBTSX.USDT"]]
    },
    "simple": {
      "strategy_name": "SimpleMaker",
      "description": "基于公允法定价值 (CNY) 的简单做市策略",
      "block_delay": 1.0,
      "keep_bts_fees": 20.0,
      "custom_price": { "CNY": [16.0, "BTS"] },
      "default": { "freq": 2, "maker_spread": 1.5, "target_order_cny": 50.0 },
      "markets": [["BTS", "CNY"], ["BTS", "USD"]]
    },
    "grid": {
      "strategy_name": "DynamicGrid",
      "description": "多档动态等比网格策略",
      "block_delay": 1.0,
      "keep_bts_fees": 20.0,
      "custom_price": { "CNY": [16.0, "BTS"], "USD": [7.0, "CNY"] },
      "default": {
        "freq": 2,
        "grid_levels": 3,
        "grid_step_pct": 1.2,
        "target_order_cny_per_grid": 30.0
      },
      "markets": [["BTS", "CNY"], ["BTS", "USD"]]
    },
    "arbitrage": {
      "strategy_name": "UniversalArbitrage",
      "description": "通用 N 环路原子无损套利策略",
      "block_delay": 0.5,
      "keep_bts_fees": 30.0,
      "min_profit_pct": 0.5,
      "trade_amount_cny": 100.0,
      "max_cycle_length": 4,
      "markets": [["BTS", "CNY"], ["BTS", "USD"], ["CNY", "USD"]]
    },
    "bollinger": {
      "strategy_name": "BollingerMeanReversion",
      "description": "布林带均值回归做市策略",
      "block_delay": 1.0,
      "keep_bts_fees": 20.0,
      "custom_price": { "CNY": [16.0, "BTS"] },
      "default": { "freq": 2, "window_size": 20, "k_std": 2.0, "target_order_cny": 50.0 },
      "markets": [["BTS", "CNY"], ["BTS", "USD"]]
    }
  }
}
```

---

## 🛠️ 二次开发指南

### 1. 核心数据查询 API

| 接口名称 | 参数 | 返回值 | 说明 |
| :--- | :--- | :--- | :--- |
| `self.get_price(asset)` | `asset: str` | `float` | 获取资产公允定价(支持 `custom_price` 链式锚定换算) |
| `self.get_free_balance(asset)` | `asset: str` | `float` | 获取资产可用余额(若为 BTS 已自动扣除保留的手续费) |
| `self.get_total_balance(asset)` | `asset: str` | `float` | 获取资产总持仓(空闲余额 + 在单资产) |
| `self.get_my_orders(sell, recv)`| `sell, recv: Optional[str]` | `List[dict]` | 获取当前账号在指定方向上的有效挂单(已清洗 order_id) |
| `self.get_market_orders(sell, recv)` | `sell, recv: str` | `List[dict]` | 获取市场上除自身以外的盘口深度订单列表(按单价升序) |
| `self.calculate_market_pnl(markets)` | `markets: Optional
    ` | `dict` | 统计指定市场的成交笔数、换手额及法定净盈亏 |
    | `self.get_order_by_id(order_id)` | `order_id: str` | `Optional[dict]` | 根据订单 ID 检索订单完整详情 |
    | `self.is_chain_synced()` | 无 | `Tuple
[bool, delay, ts]`| 检查区块链时钟是否正常同步(30 秒容差) |

---

### 2. 极简订单意向提交接口 (`apply_order_intents`)

#### ① 取消订单 (`cancel`)
```python
{"action": "cancel", "order_id": "1.7.573627825", "reason": "清理冗余订单"}
```

#### ② 修改订单 (`update` - 原生 OP 77,极简入参)
```python
# 仅需传入 order_id 与期望的目标新值,底层自动计算 Delta 与在单基数
{"action": "update", "order_id": "1.7.573174054", "price": 0.0754, "amount": 1000.0}

# 或仅改价格:
{"action": "update", "order_id": "1.7.573174054", "price": 0.0754}

# 或仅改数量:
{"action": "update", "order_id": "1.7.573174054", "amount": 1000.0}
```

#### ③ 新建挂单 (`create`)
```python
{
    "action": "create",
    "sell_asset": "BTS",
    "receive_asset": "CNY",
    "amount": 500.0,
    "price": 0.0754,
    "reason": "初始流动性挂单"
}
```

---

### 3. 自定义策略完整编写范例

```python
import asyncio
from typing import List, Dict, Any, Optional
from btsbots.tradebots import TradeBots

class MyCustomBot(TradeBots):
    async def calculate_strategy(self, block_num: int) -> Optional[List[Dict[str, Any]]]:
        intents = []
       
        for (a_s, a_b), m_cfg in self.markets_config.items():
            freq = int(m_cfg.get("freq", 1))
            if (block_num % freq) != 0:
                continue

            p_s = self.get_price(a_s)
            p_b = self.get_price(a_b)
            if p_s <= 0 or p_b <= 0:
                continue

            fair_price = p_s / p_b
            spread_pct = float(m_cfg.get("maker_spread", 1.5)) / 100.0
            target_price = fair_price * (1.0 + spread_pct)

            target_cny = float(m_cfg.get("target_order_cny", 50.0))
            target_amount = target_cny / p_s

            my_orders = self.get_my_orders(a_s, a_b)
            if my_orders:
                primary = my_orders[0]
                curr_p = float(primary.get("p", 0.0))
               
                # 偏离超过 0.5% 则极简更新订单
                if abs(curr_p - target_price) / target_price > 0.005:
                    intents.append({
                        "action": "update",
                        "order_id": primary["order_id"],
                        "price": target_price,
                        "amount": target_amount,
                        "reason": "跟随行情调价"
                    })
            else:
                free_b = self.get_free_balance(a_s)
                if free_b >= (target_amount * 0.1):
                    intents.append({
                        "action": "create",
                        "sell_asset": a_s,
                        "receive_asset": a_b,
                        "amount": min(free_b, target_amount),
                        "price": target_price,
                        "reason": "初始做市挂单"
                    })

        return intents if intents else None

async def main():
    bot = MyCustomBot(config_path="trade_rules.json", strategy_name="simple")
    try:
        await bot.run()
        while True:
            await asyncio.sleep(1)
    finally:
        await bot.close()

if __name__ == "__main__":
    asyncio.run(main())
```[/list]
16
Announcements / Re: Bitshares Astro UI - Almost feature complete!
« Last post by R2 on September 09, 2026, 07:47:46 pm »
https://hive.blog/hive-120117/@nftea.gallery/bitshares-astro-ui-update-new-features-improvements-and-fixes-check-it-out

Release Notes

New features:

Added Trollbox page
Add global properties configuration page
Added ticket asset request form
Enable editing a liquidity pool
Enable editing credit deal
Home page sections can be reordered by drag & drop
Added a publish smartcoin feed page

Changes:

Improved barter page UX
Improved credit offer editor UX
Improved Credit offer list UX
Improved Asset dropdown dialog component UX
Improved Credit deal list UX
Improved pool stake page UX
Add beautification text for recent activities
Provide credit deal aggregate statistics
Package dependency version changes

Fixes:

Reintroduce nanoeffect polling instead of chainstore subscriptions for testnet
Fix the colour selection for the top operation chart
17
General Discussion / Re: Bitshares Hive community link sharing thread
« Last post by R2 on September 09, 2026, 07:45:29 pm »
https://hive.blog/hive-120117/@nftea.gallery/bitshares-astro-ui-update-new-features-improvements-and-fixes-check-it-out
18
中文 (Chinese) / Re: Btsbots发布windows版本app和签名网关
« Last post by R2 on September 08, 2026, 08:14:05 pm »
Great work! The frontend is approximately 1/100th the file size as my electron astro-ui app, tauri is quite impressive!
19
中文 (Chinese) / 🤖 BTSBots TradeBots 开发者与量化策略指南
« Last post by alt on September 08, 2026, 09:32:22 am »
https://github.com/pch957/btsbots/blob/main/TradeBots.md

🤖 BTSBots TradeBots 开发者与量化策略指南

TradeBots 是专为 BitShares(比特股)DEX 量化交易与做市设计的 Python 自动化交易框架。它深度集成了 Meteor DDP 实时数据流、BitShares 原生高效订单修改操作(OP 77,无需撤单即可直改价格与数量)以及零信任密钥管理。
🚀 快速上手
启动内置量化策略机器人

# 1. 简单法定做市策略 (SimpleMaker)
uv run trade_bots.py --pass btsbots/my_account --strategy simple

# 2. 动态自适应多档网格策略 (DynamicGrid - 震荡收割机)
uv run trade_bots_grid.py --pass btsbots/my_account --strategy grid

# 3. 通用 N 环路原子无损套利策略 (UniversalArbitrage - 负对数图算法)
uv run trade_bots_arbitrage.py --pass btsbots/my_account --strategy arbitrage

# 4. 布林带均值回归做市策略 (BollingerMeanReversion)
uv run trade_bots_bollinger.py --pass btsbots/my_account --strategy bollinger

📊 经典交易策略与数学原理
1. 简单法定做市 (SimpleMaker / trade_bots.py)

    场景:日常做市、提供双向流动性。
    原理:基于资产的法定公允价格(或自定义锚定比率)计算理论中间价,向上加价 maker_spread% 挂单,同时设置严格的 Maker 防吃单保护。

2. 动态多档网格策略 (DynamicGrid / trade_bots_grid.py)

    场景:宽幅震荡行情。
    原理:自适应盘口中间价 P mid = P ask1 + P bid1 2 作为中轴,按等比步长铺设 N 档网格,买卖双向严格受 Maker 边界保护(买单不高过卖一,卖单不低过买一),利用 OP 77 动态平移网格档位。

3. 通用 N 环路原子无损套利 (UniversalArbitrage / trade_bots_arbitrage.py)

    场景:跨币种环路价差套利(自动发现 2 环、3 环、4 环机会)。
    负对数图算法优化: ∏ i = 1 k P i > 1 ⟺ ∑ i = 1 k − ln ⁡ ( P i ) < 0 将各市场的最优兑换汇率转换为有向图边权重 − ln ⁡ ( P ) ,通过负权环路探测算法在毫秒级内自动寻优。
    原子事务:将整个闭环的 N 笔操作打包在同一个区块链 Transaction 内原子提交,零滑点零单边风险。

4. 布林带均值回归做市 (BollingerMeanReversion / trade_bots_bollinger.py)

    场景:波动率扩张与均值回归行情。
    原理:实时统计滑动采样均线(MA)与标准差 σ ,在上轨超买区与下轨超卖区挂单做市,赚取波动率收缩利润。

⚙️ 配置文件说明 (trade_rules.json)

{
  "strategies": {
    "simple": {
      "strategy_name": "SimpleMaker",
      "description": "基于公允法定价值 (CNY) 的简单做市策略",
      "block_delay": 1.0,
      "keep_bts_fees": 20.0,
      "custom_price": { "CNY": [16.0, "BTS"] },
      "default": { "freq": 2, "maker_spread": 1.5, "target_order_cny": 50.0 },
      "markets": [["BTS", "CNY"], ["BTS", "USD"]]
    },
    "grid": {
      "strategy_name": "DynamicGrid",
      "description": "多档动态等比网格策略",
      "block_delay": 1.0,
      "keep_bts_fees": 20.0,
      "custom_price": { "CNY": [16.0, "BTS"], "USD": [7.0, "CNY"] },
      "default": {
        "freq": 2,
        "grid_levels": 3,
        "grid_step_pct": 1.2,
        "target_order_cny_per_grid": 30.0
      },
      "markets": [["BTS", "CNY"], ["BTS", "USD"]]
    },
    "arbitrage": {
      "strategy_name": "UniversalArbitrage",
      "description": "通用 N 环路原子无损套利策略",
      "block_delay": 0.5,
      "keep_bts_fees": 30.0,
      "min_profit_pct": 0.5,
      "trade_amount_cny": 100.0,
      "max_cycle_length": 4,
      "markets": [["BTS", "CNY"], ["BTS", "USD"], ["CNY", "USD"]]
    },
    "bollinger": {
      "strategy_name": "BollingerMeanReversion",
      "description": "布林带均值回归做市策略",
      "block_delay": 1.0,
      "keep_bts_fees": 20.0,
      "custom_price": { "CNY": [16.0, "BTS"] },
      "default": { "freq": 2, "window_size": 20, "k_std": 2.0, "target_order_cny": 50.0 },
      "markets": [["BTS", "CNY"], ["BTS", "USD"]]
    }
  }
}

🛠️ 二次开发指南
1. 核心数据查询 API
接口名称    参数    返回值    说明
self.get_price(asset)    asset: str    float    获取资产公允定价(支持 custom_price 链式锚定换算)
self.get_free_balance(asset)    asset: str    float    获取资产可用余额(若为 BTS 已自动扣除保留的手续费)
self.get_total_balance(asset)    asset: str    float    获取资产总持仓(空闲余额 + 在单资产)
self.get_my_orders(sell, recv)    sell, recv: Optional[str]    List[dict]    获取当前账号在指定方向上的有效挂单(已清洗 order_id)
self.get_market_orders(sell, recv)    sell, recv: str    List[dict]    获取市场上除自身以外的盘口深度订单列表(按单价升序)
self.get_order_by_id(order_id)    order_id: str    Optional[dict]    根据订单 ID 检索订单完整详情
self.is_chain_synced()    无    Tuple[bool, delay, ts]    检查区块链时钟是否正常同步(30 秒容差)
2. 极简订单意向提交接口 (apply_order_intents)
① 取消订单 (cancel)

{"action": "cancel", "order_id": "1.7.573627825", "reason": "清理冗余订单"}

② 修改订单 (update - 原生 OP 77,极简入参)

# 仅需传入 order_id 与期望的目标新值,底层自动计算 Delta 与在单基数
{"action": "update", "order_id": "1.7.573174054", "price": 0.0754, "amount": 1000.0}

# 或仅改价格:
{"action": "update", "order_id": "1.7.573174054", "price": 0.0754}

# 或仅改数量:
{"action": "update", "order_id": "1.7.573174054", "amount": 1000.0}

③ 新建挂单 (create)

{
    "action": "create",
    "sell_asset": "BTS",
    "receive_asset": "CNY",
    "amount": 500.0,
    "price": 0.0754,
    "reason": "初始流动性挂单"
}

3. 自定义策略完整编写范例

import asyncio
from typing import List, Dict, Any, Optional
from btsbots.tradebots import TradeBots

class MyCustomBot(TradeBots):
    async def calculate_strategy(self, block_num: int) -> Optional[List[Dict[str, Any]]]:
        intents = []
       
        for (a_s, a_b), m_cfg in self.markets_config.items():
            freq = int(m_cfg.get("freq", 1))
            if (block_num % freq) != 0:
                continue

            p_s = self.get_price(a_s)
            p_b = self.get_price(a_b)
            if p_s <= 0 or p_b <= 0:
                continue

            fair_price = p_s / p_b
            spread_pct = float(m_cfg.get("maker_spread", 1.5)) / 100.0
            target_price = fair_price * (1.0 + spread_pct)

            target_cny = float(m_cfg.get("target_order_cny", 50.0))
            target_amount = target_cny / p_s

            my_orders = self.get_my_orders(a_s, a_b)
            if my_orders:
                primary = my_orders[0]
                curr_p = float(primary.get("p", 0.0))
               
                # 偏离超过 0.5% 则极简更新订单
                if abs(curr_p - target_price) / target_price > 0.005:
                    intents.append({
                        "action": "update",
                        "order_id": primary["order_id"],
                        "price": target_price,
                        "amount": target_amount,
                        "reason": "跟随行情调价"
                    })
            else:
                free_b = self.get_free_balance(a_s)
                if free_b >= (target_amount * 0.1):
                    intents.append({
                        "action": "create",
                        "sell_asset": a_s,
                        "receive_asset": a_b,
                        "amount": min(free_b, target_amount),
                        "price": target_price,
                        "reason": "初始做市挂单"
                    })

        return intents if intents else None

async def main():
    bot = MyCustomBot(config_path="trade_rules.json", strategy_name="simple")
    try:
        await bot.run()
        while True:
            await asyncio.sleep(1)
    finally:
        await bot.close()

if __name__ == "__main__":
    asyncio.run(main())
20
中文 (Chinese) / Re: Btsbots发布windows版本app和签名网关
« Last post by abit on September 06, 2026, 09:52:24 pm »
好。
这个 nodejs 的应该也可以方便移植到 mac 或者 linux 桌面用。
Pages: 1 [2] 3 4 5 6 7 8 9 10