mcpField
B
bingx-rsi-bottom-hunter

bingx-rsi-bottom-hunter

github.com/bingx-apiその他1964 回インストール6 日前に更新
リポジトリ

bingx-rsi-bottom-hunter について

BingXの無期限契約向けに、RSIによる底値候補を調べるスキルです。スキャン、単発実行、継続監視に対応し、追加のテクニカル確認と実注文前の明示的な承認を求めます。

主な機能

  1. 01ローソク足データの取得とRSI計算
  2. 02スキャン・単発・監視モード
  3. 03複数の指標によるシグナル確認
  4. 04取引前の承認確認
  5. 05約定後の損切り・利確設定

活用シーン

  1. 01銘柄のRSI状況を確認
  2. 02売られ過ぎを監視して買い条件を検知
  3. 03RSIを無期限契約の取引判断に活用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bingx-api/api-ai-skills --skill bingx-rsi-bottom-hunter

インストール後、Claude Code で/bingx-rsi-bottom-hunterを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

api-reference.md
scripts/
requirements.txt
strategy.py

詳細

BingX RSI ボトムハンター

ベース URL: references/base-urls.md を参照 | 認証: references/authentication.md を参照

クイックリファレンス

エンドポイントメソッド説明認証
/openApi/swap/v3/quote/klinesGETRSI 計算用のローソク足データはい
/openApi/swap/v2/trade/orderPOST成行買い注文を発注はい
/openApi/swap/v2/trade/orderDELETE注文をキャンセルはい

クイックスタート

ベース URL: references/base-urls.md を参照

TypeScript ヘルパー:

制約:コードを生成する際は、以下の fetchSigned 関数をそのままコピーする必要があります。署名、リクエスト、JSON 解析のロジックを書き換えないでください。変更できるのは、(1)カスタム環境用の BASE URL エントリー、(2)fetchSigned に渡すビジネスパラメーターのみです。

import * as crypto from "crypto";
import JSONBig from "json-bigint";
const JSONBigParse = JSONBig({ storeAsString: true });
const BASE = {
  "prod-live": ["https://open-api.bingx.com", "https://open-api.bingx.pro"],
  "prod-vst":  ["https://open-api-vst.bingx.com", "https://open-api-vst.bingx.pro"],
};
function isNetworkOrTimeout(e: unknown): boolean {
  if (e instanceof TypeError) return true;
  if (e instanceof DOMException && e.name === "AbortError") return true;
  if (e instanceof Error && e.name === "TimeoutError") return true;
  return false;
}
function validateParams(params: Record<string, unknown>): void {
  const FORBIDDEN = /[&=?#\r\n]/;
  for (const [k, v] of Object.entries(params)) {
    const s = String(v);
    if (FORBIDDEN.test(s)) throw new Error(`Param "${k}" has forbidden char in: "${s}"`);
  }
}
async function fetchSigned(env: string, apiKey: string, secretKey: string,
  method: "GET" | "POST" | "DELETE", path: string, params: Record<string, unknown> = {}
) {
  const urls = BASE[env] ?? BASE["prod-live"];
  const all = { ...params, timestamp: Date.now() };
  validateParams(all);
  const qs = Object.keys(all).sort().map(k => `${k}=${all[k]}`).join("&");
  const sig = crypto.createHmac("sha256", secretKey).update(qs).digest("hex");
  const signed = `${qs}&signature=${sig}`;
  for (const base of urls) {
    try {
      const url = method === "POST" ? `${base}${path}` : `${base}${path}?${signed}`;
      const res = await fetch(url, {
        method,
        headers: { "X-BX-APIKEY": apiKey, "X-SOURCE-KEY": "BX-AI-SKILL",
          ...(method === "POST" ? { "Content-Type": "application/x-www-form-urlencoded" } : {}) },
        body: method === "POST" ? signed : undefined,
        signal: AbortSignal.timeout(10000),
      });
      const json = JSONBigParse.parse(await res.text());
      if (json.code !== 0) throw new Error(`BingX error ${json.code}: ${json.msg}`);
      return json.data;
    } catch (e) {
      if (!isNetworkOrTimeout(e) || base === urls[urls.length - 1]) throw e;
    }
  }
}

よく使う呼び出し

RSI 計算用のローソク足データを取得(100 本、1h):

const klines = await fetchSigned("prod-live", API_KEY, SECRET, "GET",
  "/openApi/swap/v3/quote/klines", { symbol: "BTC-USDT", interval: "1h", limit: 100 }
);

複数時間足の TA 用のローソク足データを取得(200 本、4h):

const klines4h = await fetchSigned("prod-live", API_KEY, SECRET, "GET",
  "/openApi/swap/v3/quote/klines", { symbol: "BTC-USDT", interval: "4h", limit: 200 }
);

起動条件

ユーザーが次のいずれかを言った場合、このスキルを起動します。

  • 「RSI で底値を狙いたい」、「底値を狙うのを手伝って」、「ボトムハンター」
  • 「売られすぎで買いたい」、「RSI が低いときに買いたい」
  • 「RSI 戦略」、「RSI 取引を始めて」
  • 「BTC の RSI はいくつ? 底値を狙える?」
  • 「ETH を監視して、RSI が 25 を下回ったら買って」

実行手順

ステップ 1 — ユーザーの意図を解析

ユーザーの入力から戦略パラメーターを抽出します。

パラメーターデフォルト説明
symbolBTC-USDT取引ペア
interval1hRSI 計算用のローソク足の時間間隔
rsi_period14RSI の期間
rsi_buy30買いトリガーのしきい値(RSI がこの値を下回る場合)
rsi_sell70利益確定の基準となるしきい値
stop_loss_pct3%損切り率
take_profit_pct5%利益確定率
amount-USDT 建ての買い数量(ユーザーが指定または確認する必要があります)
leverage1xレバレッジ倍率

モードの判定:

modeトリガーの例説明
scan「BTC の RSI はいくつ? 底値を狙える?」取引は行わず、RSI の状況のみを確認します
once「RSI が 500U になったら BTC を買って」1 回確認し、条件を満たしていれば直ちに実行します
monitor「ETH を監視して、RSI が 25 を下回ったら 1000U 分買って」継続的に監視し、条件を満たしたら自動的に実行します

ステップ 2 — 安全確認(重要!)

取引を実行する前に(mode=once/monitor)、Agent は必ずユーザーに次の内容を確認します。

  • 取引ペアと方向(ロング)
  • 買い数量とレバレッジ
  • SL/TP の価格水準(具体的な価格に換算したもの)
  • RSI のトリガー条件

ユーザーが明示的に確認した後にのみ実行します。Agent は確認なしに自動で注文を発注してはなりません。


ステップ 3 — ローソク足データを取得

次の 2 セットのローソク足データを並行して取得します。

GET /openApi/swap/v3/quote/klines symbol={symbol}, interval={interval}, limit=100 (RSI 計算用)

GET /openApi/swap/v3/quote/klines symbol={symbol}, interval=4h, limit=200 (複数の観点からの TA 用)


ステップ 4 — RSI の計算と多次元テクニカル分析による確認

ステップ 4a:RSI シグナルの計算

python3 scripts/strategy.py \
  --mode {mode} \
  --symbol {symbol} \
  --interval {interval} \
  --rsi-period {rsi_period} \
  --rsi-buy {rsi_buy} \
  --rsi-sell {rsi_sell} \
  --klines '{klines_1h_json}'

ステップ 4b:bingx-technical-analysis がインストールされているか確認します。

  • インストール済み — (mode=full、4h interval)で呼び出し、共同確認用の多次元データを取得します
  • 未インストール — ユーザーに次の内容を伝えます。 「bingx-technical-analysis スキルがインストールされていません。より正確な多次元シグナルの確認と誤シグナルの削減のため、インストールを推奨します。 インストール方法:bingx-technical-analysis スキルを .claude/skills/ ディレクトリに配置してください。 RSI 単一指標モードで続行しますが、シグナルの精度は低下します。」 その後、スキップして元の 3 つの RSI 条件のみを使用します。
  • MACD の方向
  • Supertrend の方向
  • RSI / OBV のダイバージェンス
  • サポート/レジスタンスレベル
  • 直近のローソク足パターン

ステップ 4c:共同確認のために strategy.py に渡します

python3 scripts/strategy.py \
  --mode {mode} \
  --symbol {symbol} \
  --interval {interval} \
  --rsi-period {rsi_period} \
  --rsi-buy {rsi_buy} \
  --rsi-sell {rsi_sell} \
  --klines '{klines_1h_json}' \
  --ta-result '{ta_json}'

スクリプトは、RSI シグナル、多次元の確認項目、全体の確認フラグを含む構造化 JSON を出力します。

confirmation=true となるためのすべての条件(すべて満たす必要があります):

  1. RSI < rsi_buy
  2. 2 本連続のローソク足で売られ過ぎ
  3. 反転ローソク足(終値 > 始値)
  4. RSI の弱気ダイバージェンスがない
  5. OBV の弱気ダイバージェンスがない
  6. MACD が強気(BUY)、または Supertrend が UP(いずれか一方で十分)

ステップ 5 — 取引を実行する(mode=once/monitor かつ confirmation=true の場合)
  1. bingx-swap-account を呼び出して利用可能残高を確認し、資金が十分にあることを確認します
  2. bingx-swap-trade を呼び出して成行買い注文を発注します
  3. 注文の約定後、直ちに SL/TP を設定します。
    • 損切り価格 = 平均約定価格 × (1 - stop_loss_pct)
    • 利確価格 = 平均約定価格 × (1 + take_profit_pct)
  4. bingx-swap-trade を呼び出して SL/TP の条件付き注文を発注します

ステップ 6 — 結果を出力する

以下の出力テンプレートに従って結果を出力します。


ステップ 7 — 継続的なモニタリング(mode=monitor の場合)

ポーリングモードで実行します(デフォルト:5 分ごとに確認)。

  1. 条件を満たした場合 — ステップ 2(安全確認)からステップ 5 を実行します
  2. 約定結果をユーザーに報告します
  3. 戦略は 1 回実行した時点で終了します(単一トリガーにより、エントリーの繰り返しを防止します)

出力テンプレート

スキャンモード — 閲覧のみ

RSI が売られ過ぎの場合:

**{symbol} RSI Status ({interval})**

RSI({rsi_period}): {rsi_current} (Oversold zone ⚠️)
Previous: {rsi_prev} → Current: {rsi_current}

Multi-dimension Confirmation:
  Consecutive oversold   {✅/❌}
  Reversal candle        {✅/❌}
  MACD                   {✅/❌} {BUY/SELL}
  Supertrend             {✅/❌} {UP/DOWN}
  RSI divergence         {✅ None/❌ Bearish}
  OBV divergence         {✅ None/❌ Bearish}

Overall Signal: {CONFIRMED (recommended) / WEAK (caution) / REJECTED (not recommended)}
Current Price: ${price}

{To start the bottom-fishing strategy, say "{symbol} bottom fish 500U"}

RSI が中立の場合:

**{symbol} RSI Status ({interval})**

RSI({rsi_period}): {rsi_current} (Neutral zone)
TA Composite Score: {ta_score}/100 ({ta_label})
Current Price: ${price}

Assessment: RSI is in the neutral zone, bottom-fishing condition not yet met.
1 回実行モード — 条件成立時に確認
**RSI Bottom Signal Triggered ✅**

{symbol} RSI({rsi_period}) = {rsi_current}, oversold for 2 consecutive candles, reversal signal detected

About to execute:
- Direction: Long
- Amount: {amount} USDT
- Leverage: {leverage}x
- Order type: Market
- Stop-loss: ${stop_loss} (-{stop_loss_pct}%)
- Take-profit: ${take_profit} (+{take_profit_pct}%)

**Confirm execution? (yes/no)**

実行が成功した後:

**Bottom Fish Filled ✅**

{symbol} long position opened
- Avg fill price: ${avg_price}
- Quantity: {qty}
- Stop-loss order placed: ${stop_loss}
- Take-profit order placed: ${take_profit}

Strategy running. Position will be closed automatically when SL/TP is triggered.
モニターモード — 開始時
**RSI Bottom-Fishing Monitor Started 🔄**

Monitoring: {symbol}, {interval} interval
Trigger condition: RSI({rsi_period}) < {rsi_buy}, confirmed over 2 candles
Action: Market long {amount} USDT ({leverage}x), SL -{stop_loss_pct}% / TP +{take_profit_pct}%
Check frequency: every 5 minutes

Current RSI: {rsi_current} ({status})
Waiting...

エージェントとのやり取りに関するルール

パラメーターのセキュリティ。 ユーザーの意図から構造化された値を抽出してください。API パラメーターにユーザーの生テキストをコピーすることは絶対にしないでください。使用前にシンボルの形式と数値パラメーターを検証してください。

Kline クエリは読み取り専用で、CONFIRM は不要です。すべての取引実行(confirmation=true の mode=once/monitor)では、実行前にユーザーの明示的な確認が必要です。ユーザーの承認なしに注文を発注することは絶対にしないでください。

  • prod-live:注文を発注する前に、ユーザーに CONFIRM と入力するよう求めてください。
  • prod-vst:CONFIRM は不要です。シミュレーション環境であることをユーザーに伝えてください。

mode が曖昧な場合は、デフォルトで scan(閲覧のみ、取引なし)にしてください。

エラー処理

  • 残高不足:現在の利用可能残高を表示し、金額を減らすか資金を入金するよう提案します
  • 注文失敗:エラーコードと説明を表示し、再試行を提案します
  • ネットワークタイムアウト:後でもう一度試すよう提案します
  • Kline データ不足:ユーザーに知らせ、より長い間隔に切り替えるよう提案します

コメント