headless-trading

Autonomous trading for AI agents on Solana and BNB Chain. Use when: (1) executing token swaps on DEXs (Raydium, PancakeSwap), (2) checking token prices and balances, (3) monitoring…

Crypto Dev

@bnbcompanions

Install

$ openclaw skills install @bnbcompanions/headless-crypto

Headless Trading

Autonomous trading toolkit for AI agents on Solana (Raydium) and BNB Chain (PancakeSwap).

Core Capabilities

1. Token Swaps

Execute swaps on decentralized exchanges without browser interaction:

  • Raydium (Solana): SOL ↔ SPL tokens
  • PancakeSwap (BNB Chain): BNB ↔ BEP20 tokens

2. Price Monitoring

Fetch real-time token prices:

  • DEX liquidity pool prices
  • Multiple pair support
  • Slippage calculation

3. Portfolio Management

Check balances and positions:

  • Native token balances (SOL, BNB)
  • Token holdings across wallets
  • Transaction history

4. Strategy Execution

Implement automated trading strategies:

  • Limit orders (via monitoring + execution)
  • DCA (Dollar Cost Averaging)
  • Stop-loss / Take-profit
  • Arbitrage opportunities

Quick Start

Prerequisites

  1. Private key (environment variable or secure storage)
  2. RPC endpoint (public or private node)
  3. Python 3.8+ with dependencies

Installation

pip install solana web3 anchorpy raydium-py base58
pip install web3 pancakeswap-sdk

Basic Swap Example

from scripts.raydium_swap import swap_on_raydium

# Swap 0.1 SOL for USDC
tx_hash = swap_on_raydium(
    input_token="SOL",
    output_token="USDC",
    amount=0.1,
    slippage=1.0  # 1% slippage tolerance
)

Workflow Decision Tree

1. What chain are you trading on?

2. What operation do you need?

  • Get token price → get_price.py
  • Check wallet balance → get_balance.py
  • Execute swap → swap.py
  • Monitor liquidity → monitor_pool.py

3. What strategy are you implementing?

Trading Operations

Get Token Price

from scripts.get_price import get_token_price

# Get current price of a token
price = get_token_price(
    chain="solana",
    token_address="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",  # USDC
    quote_token="SOL"
)
print(f"Price: {price} SOL")

Check Wallet Balance

from scripts.get_balance import get_balance

# Check SOL balance
balance = get_balance(
    chain="solana",
    wallet_address="YOUR_WALLET_ADDRESS"
)
print(f"Balance: {balance} SOL")

Execute Swap

from scripts.swap import execute_swap

# Swap tokens with slippage protection
result = execute_swap(
    chain="solana",
    input_token="SOL",
    output_token="USDC",
    amount=0.5,
    slippage=1.0,
    private_key="YOUR_PRIVATE_KEY"  # Use env var in production
)

Monitor Liquidity Pool

from scripts.monitor_pool import get_pool_info

# Get liquidity pool stats
pool_info = get_pool_info(
    chain="solana",
    token_a="SOL",
    token_b="USDC"
)
print(f"Liquidity: ${pool_info['liquidity']}")
print(f"24h Volume: ${pool_info['volume_24h']}")

Security Best Practices

1. Private Key Management

NEVER hardcode private keys. Use environment variables or secure vaults:

import os

PRIVATE_KEY = os.getenv("TRADING_PRIVATE_KEY")
if not PRIVATE_KEY:
    raise ValueError("TRADING_PRIVATE_KEY not set")

2. Slippage Protection

Always set reasonable slippage limits:

  • Stablecoins: 0.1-0.5%
  • Blue chips: 0.5-1%
  • Low liquidity: 1-3% (risky)

3. Transaction Simulation

Test swaps on devnet/testnet first:

result = execute_swap(
    chain="solana",
    input_token="SOL",
    output_token="USDC",
    amount=0.01,  # Small test amount
    slippage=1.0,
    simulate=True  # Dry run
)

4. Rate Limiting

Respect RPC rate limits:

  • Public RPCs: ~5 req/sec
  • Private RPCs: Check provider limits

5. Error Handling

Always handle transaction failures:

try:
    tx_hash = execute_swap(...)
    print(f"Success: {tx_hash}")
except InsufficientFundsError:
    print("Not enough balance")
except SlippageExceededError:
    print("Price moved too much")
except RPCError as e:
    print(f"RPC failed: {e}")

Common Patterns

Pattern 1: Price Monitoring Bot

Monitor token prices and execute when conditions are met:

from scripts.get_price import get_token_price
from scripts.swap import execute_swap
import time

TARGET_PRICE = 100  # USDC per token
CHECK_INTERVAL = 60  # seconds

while True:
    price = get_token_price(chain="solana", token_address="...", quote_token="USDC")
    
    if price <= TARGET_PRICE:
        execute_swap(
            chain="solana",
            input_token="USDC",
            output_token="TARGET_TOKEN",
            amount=100,
            slippage=1.0
        )
        break
    
    time.sleep(CHECK_INTERVAL)

Pattern 2: DCA (Dollar Cost Averaging)

Buy fixed amounts at regular intervals:

import schedule

def dca_buy():
    execute_swap(
        chain="solana",
        input_token="SOL",
        output_token="BTC",
        amount=0.1,  # 0.1 SOL every day
        slippage=1.0
    )

# Run daily at 9 AM
schedule.every().day.at("09:00").do(dca_buy)

Pattern 3: Stop-Loss

Sell when price drops below threshold:

ENTRY_PRICE = 100
STOP_LOSS_PERCENT = 10  # 10% loss

while True:
    current_price = get_token_price(...)
    loss_percent = ((ENTRY_PRICE - current_price) / ENTRY_PRICE) * 100
    
    if loss_percent >= STOP_LOSS_PERCENT:
        execute_swap(...)  # Sell position
        break
    
    time.sleep(60)

Resources

scripts/

Executable Python scripts for trading operations:

  • get_price.py - Fetch token prices from DEXs
  • get_balance.py - Check wallet balances
  • swap.py - Execute token swaps
  • monitor_pool.py - Get liquidity pool info
  • raydium_swap.py - Raydium-specific swap implementation
  • pancakeswap_swap.py - PancakeSwap-specific swap implementation

references/

  • raydium.md - Raydium DEX API reference and pool addresses
  • pancakeswap.md - PancakeSwap DEX API reference
  • strategies.md - Detailed trading strategy implementations
  • rpc_endpoints.md - List of public/private RPC providers

Limitations

  • Gas fees: Transactions require native tokens (SOL, BNB)
  • Slippage: High volatility can cause failed transactions
  • RPC reliability: Public RPCs may be slow/unstable
  • MEV: Transactions may be frontrun on popular pairs

Troubleshooting

"Insufficient funds"

  • Check wallet balance with get_balance.py
  • Ensure enough native token for gas fees

"Slippage exceeded"

  • Increase slippage tolerance (carefully)
  • Wait for lower volatility
  • Split large orders into smaller ones

"Transaction failed"

  • Check RPC endpoint is responsive
  • Verify token addresses are correct
  • Ensure wallet has approval for token spend

"Rate limited"

  • Switch to private RPC
  • Add delays between requests
  • Use multiple RPC endpoints

Top skills in this category

Stock Analysis

@udiedrichsen

Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management, watchlists with alerts, dividend analysis, 8-dimension stock scoring, viral trend detection (Hot Scanner), and rumor/early signal detection. Use for stock analysis, portfolio tracking, earnings reactions, crypto monitoring, trending stocks, or finding rumors before they hit mainstream.

25959k

Stock Market Pro

@kys42

Yahoo Finance (yfinance) powered stock analysis skill: quotes, fundamentals, ASCII trends, high-resolution charts (RSI/MACD/BB/VWAP/ATR), plus optional web a...

15532k

Stock Watcher

@robin797860

Manage and monitor a personal stock watchlist with support for adding, removing, listing stocks, and summarizing their recent performance using data from 10jqka.com.cn. Use when the user wants to track specific stocks, get performance summaries, or manage their watchlist.

8837k

A股量化 AkShare

@mbpz

A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。

10232k

Intelligent Stocks Screener

@financial-ai-analyst

基于东方财富数据库,支持通过自然语言输入筛选A港美股、基金、债券等多种资产,支持多元指标筛选,含技术面、消息面、基本面及市场情绪等,可用于全球资产速筛、跨市场监控、投资组合构建、策略回测等场景。返回结果包含数据说明及 csv 文件。Natural language screener for investment...

10627k