Casos de uso
La forma más fácil de usar el agente IA de Bitnxs es escribir peticiones en lenguaje natural en el chat de la app; para automatizar, un bot externo (escrito por ti o por una IA como Claude o ChatGPT) llama a la API de Bitnxs en https://api.bitnxs.com. Abajo tienes prompts que coinciden con lo que el agente de la app puede hacer realmente, y Python que coincide con la API real.
Prompts para el agente de la app
Sección titulada «Prompts para el agente de la app»Obtener una opinión clara del mercado
¿Largo o corto en BTC ahora mismo? Da una dirección, con entrada e invalidación.Consultar tu cuenta
¿Cuál es mi posición y mejor cotización?Colocar una orden límite
Según tu análisis, compra 0.01 BTC a 65000.Escalera de entradas (un lote, hasta 20 órdenes)
Coloca 3 compras límite en BTC: 0.01 a 64000, 0.01 a 63000 y 0.02 a 62000.Usar un estilo predefinido (atajo “Conservador”, texto literal de la app)
A partir de ahora, opera por mí con un estilo "conservador":- Opera solo BTC- Usa como máximo el 15% del saldo de mi cartera por posición- Mantén como máximo 1 posición a la vez- Mantén el apalancamiento en su ajuste actual — no lo cambiesCada vez que detectes una oportunidad, explica primero tu razonamiento y deja que confirme antes de colocar la orden.Python: tu propio agente o bot
Sección titulada «Python: tu propio agente o bot»Estos fragmentos usan la API documentada (Autenticación, Referencia de endpoints). Instala pip install requests eth-account eth-utils y define BITNXS_USER (dirección de la wallet principal) y BITNXS_API_KEY (una API key con permisos limitados) como variables de entorno.
import os, requestsfrom eth_account import Accountfrom eth_utils import keccak
BASE = "https://api.bitnxs.com"USER = os.environ["BITNXS_USER"] # main wallet addressAPI_KEY = os.environ["BITNXS_API_KEY"] # never hard-code or paste into a prompt
def info(body): return requests.post(f"{BASE}/info", json=body).json()
def open_session(): chal = requests.post(f"{BASE}/session/start", json={"user": USER}).json() sig = Account.unsafe_sign_hash(keccak(chal["challenge"].encode()), private_key=API_KEY) return requests.post(f"{BASE}/session/complete", json={ "challengeId": chal["challengeId"], "signature": {"r": hex(sig.r), "s": hex(sig.s), "v": sig.v - 27}, }).json()["sessionId"]
meta = info({"type": "meta"}) # asset ids, decimals, max leverageEntrada programada: compra límite cada hora
Sección titulada «Entrada programada: compra límite cada hora»import timeSID = open_session() # refresh before the 1-hour session TTLBTC = 1 # numeric asset id from meta
for i in range(3): r = requests.post(f"{BASE}/session/order", json={ "sessionId": SID, "requestId": int(time.time() * 1000), # idempotency key "asset": BTC, "isBuy": True, "limitPx": "65000", "sz": "0.001", "reduceOnly": False, "orderType": {"type": "limit", "tif": "Gtc"}, }).json() print(r) time.sleep(3600)Gestión de TP/SL para un largo abierto
Sección titulada «Gestión de TP/SL para un largo abierto»Requiere el permiso set_triggers. Los disparadores se ejecutan como órdenes de mercado reduce-only cuando el precio de oráculo cruza triggerPx (reglas). TP y SL son dos llamadas separadas.
for is_tp, px in [(True, "72000"), (False, "61000")]: print(requests.post(f"{BASE}/session/trigger", json={ "sessionId": SID, "asset": BTC, "isTp": is_tp, "triggerPx": px, "sz": "0.001", "positionSide": 1, # 1 = long, -1 = short }).json())Bucle de estrategia simple: el LLM decide, tú pones los límites
Sección titulada «Bucle de estrategia simple: el LLM decide, tú pones los límites»Un patrón seguro para agentes creados con Claude, ChatGPT o cualquier LLM:
- Lee el estado con
info({"type": "clearinghouseState", "user": USER})einfo({"type": "allMids"}). - Envía ese estado a tu LLM y pide una decisión en JSON (
long/short/wait, precio, tamaño). - Valida en código antes de enviar: tamaño máximo, órdenes máximas por hora, mercados permitidos, precio dentro de una banda alrededor del mid.
- Coloca una orden límite y añade los disparadores de TP y SL.
- Registra todo; detente si hay errores repetidos.