SolanaDEX交易Skill trading-solana

这是一个用于在Solana区块链的去中心化交易所上进行代币交易、获取实时报价、管理流动性池和执行量化交易的技能。支持Jupiter、Raydium、Orca、Meteora和Pump.fun等多种DEX,提供完整的TypeScript API参考、聊天命令、错误处理和SEO关键词,适用于DeFi开发者、量化交易员和区块链爱好者。关键词:Solana, DEX, 去中心化交易所, 代币交易, Jupiter, Raydium, Orca, Meteora, Pump.fun, API, 量化交易, 流动性管理, DeFi, 区块链开发。

DeFi 0 次安装 0 次浏览 更新于 3/9/2026

名称: trading-solana 描述: “在Solana DEXes上交易代币 - Jupiter, Raydium, Orca, Meteora, Pump.fun” 表情: “☀️” 条件: 环境变量: - SOLANA_PRIVATE_KEY

Solana DEX交易 - 完整API参考

使用Jupiter聚合器、Raydium、Orca Whirlpools、Meteora DLMM和Pump.fun在Solana上交易任何代币。

必需的环境变量

SOLANA_PRIVATE_KEY=base58_or_json_array    # 您的Solana钱包私钥
SOLANA_RPC_URL=https://api.mainnet-beta.solana.com  # 可选:自定义RPC

聊天命令

交换

/swap sol <金额> <从> 到 <到>           # 在Solana上交换代币
/swap sol 1 SOL 到 USDC                     # 交换1 SOL为USDC
/swap sol 100 USDC 到 JUP                   # 交换100 USDC为JUP
/swap sol 0.5 SOL 到 BONK                   # 交换0.5 SOL为BONK

报价

/quote sol <金额> <从> 到 <到>          # 获取交换报价而不执行
/quote sol 1 SOL 到 USDC                    # 报价1 SOL → USDC

流动性池发现

/pools sol <代币>                          # 列出代币的流动性池
/pools sol SOL                              # 所有SOL池
/pools sol BONK                             # 所有BONK池

余额

/balance sol                                # 检查SOL和代币余额
/balance sol <代币>                        # 检查特定代币余额

支持的DEXes

DEX 类型 功能
Jupiter 聚合器 跨所有DEX的最佳路径、限价订单、DCA
Raydium AMM 集中流动性、高交易量
Orca Whirlpool 集中流动性池、LP管理
Meteora DLMM 动态流动性市场做市商、LP管理
Pump.fun Launchpad 新代币发行

TypeScript API参考

Jupiter (聚合器 - 推荐)

import {
  executeJupiterSwap,
  getJupiterQuote,
  createJupiterLimitOrder,
  cancelJupiterLimitOrder,
  listJupiterLimitOrders,
  createJupiterDCA,
  closeJupiterDCA,
  listJupiterDCAs,
} from 'clodds/solana/jupiter';

// 通过Jupiter执行交换(最佳路径)
const result = await executeJupiterSwap(connection, keypair, {
  inputMint: 'So11111111111111111111111111111111111111112',  // SOL
  outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
  amount: '1000000000',  // 1 SOL在lamports中
  slippageBps: 50,       // 0.5%滑点
});

console.log(`交换: ${result.inAmount} → ${result.outAmount}`);
console.log(`交易: ${result.signature}`);

Jupiter限价订单

// 创建限价订单 - 以至少250 USDC卖出1 SOL
const order = await createJupiterLimitOrder(connection, keypair, {
  inputMint: 'So11111111111111111111111111111111111111112',
  outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  inAmount: '1000000000',  // 1 SOL
  outAmount: '250000000',  // 250 USDC
  expiredAtMs: Date.now() + 7 * 24 * 60 * 60 * 1000, // 1周过期
});
console.log(`订单创建: ${order.orderPubKey}`);

// 列出开放订单
const orders = await listJupiterLimitOrders(connection, keypair.publicKey.toBase58());
console.log(`开放订单: ${orders.length}`);

// 取消订单
await cancelJupiterLimitOrder(connection, keypair, order.orderPubKey);

Jupiter DCA(美元成本平均)

// 创建DCA - 每100 USDC换JUP,每小时10 USDC
const dca = await createJupiterDCA(connection, keypair, {
  inputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
  outputMint: 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN', // JUP
  inAmount: '100000000',        // 总计100 USDC
  inAmountPerCycle: '10000000', // 每次交换10 USDC
  cycleSecondsApart: 3600,      // 每小时(最小30秒)
});
console.log(`DCA创建: ${dca.dcaPubKey}`);

// 列出活跃DCA
const dcas = await listJupiterDCAs(connection, keypair.publicKey.toBase58());

// 关闭DCA并提取剩余资金
await closeJupiterDCA(connection, keypair, dca.dcaPubKey);

Raydium

import {
  executeRaydiumSwap,
  getRaydiumQuote,
  listRaydiumPools,
  getClmmPositions,
  createClmmPosition,
  increaseClmmLiquidity,
  decreaseClmmLiquidity,
  closeClmmPosition,
  harvestClmmRewards,
  addAmmLiquidity,
  removeAmmLiquidity,
} from 'clodds/solana/raydium';

// 获取报价
const quote = await getRaydiumQuote({
  inputMint: 'SOL',
  outputMint: 'USDC',
  amount: 1_000_000_000,
});
console.log(`预期输出: ${quote.outAmount}`);

// 执行交换
const result = await executeRaydiumSwap(connection, keypair, {
  inputMint: 'So11111111111111111111111111111111111111112',
  outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  amount: '1000000000',
  slippageBps: 50,
});

// 列出池
const pools = await listRaydiumPools({ tokenMints: ['So11111111111111111111111111111111111111112'] });

// CLMM: 开放集中流动性仓位
const position = await createClmmPosition(connection, keypair, {
  poolId: 'POOL_ID_HERE',
  priceLower: 100,
  priceUpper: 200,
  baseAmount: '1000000000',
});

// CLMM: 列出仓位
const positions = await getClmmPositions(connection, keypair);

// CLMM: 收获奖励
const rewards = await harvestClmmRewards(connection, keypair);

// AMM: 添加流动性
await addAmmLiquidity(connection, keypair, {
  poolId: 'AMM_POOL_ID',
  amountA: '1000000000',
  fixedSide: 'a',
});

Orca Whirlpools

import { executeOrcaWhirlpoolSwap, getOrcaWhirlpoolQuote, listOrcaWhirlpoolPools } from 'clodds/solana/orca';

// 获取报价
const quote = await getOrcaWhirlpoolQuote({
  inputMint: 'SOL',
  outputMint: 'USDC',
  amount: 1_000_000_000,
});

// 执行交换
const result = await executeOrcaWhirlpoolSwap({
  inputMint: 'SOL',
  outputMint: 'USDC',
  amount: 1_000_000_000,
  slippage: 0.5,
});

// 列出池
const pools = await listOrcaWhirlpoolPools({ token: 'SOL' });

Meteora DLMM

import { executeMeteoraDlmmSwap, getMeteoraDlmmQuote, listMeteoraDlmmPools } from 'clodds/solana/meteora';

// 获取报价
const quote = await getMeteoraDlmmQuote({
  inputMint: 'SOL',
  outputMint: 'USDC',
  amount: 1_000_000_000,
});

// 执行交换
const result = await executeMeteoraDlmmSwap({
  inputMint: 'SOL',
  outputMint: 'USDC',
  amount: 1_000_000_000,
  slippage: 0.5,
});

// 列出池
const pools = await listMeteoraDlmmPools({ token: 'SOL' });

Pump.fun

import {
  executePumpFunTrade,
  getBondingCurveState,
  getTokenPriceInfo,
  calculateBuyQuote,
  calculateSellQuote,
  isGraduated,
  getTokenInfo,
  getPumpPortalQuote,
} from 'clodds/solana/pumpapi';

// 在Pump.fun上购买代币
const result = await executePumpFunTrade(connection, keypair, {
  mint: 'token_mint_address',
  action: 'buy',
  amount: 0.1,           // SOL金额
  denominatedInSol: true,
  slippageBps: 500,      // 5%滑点用于波动代币
});

// 卖出代币
const result = await executePumpFunTrade(connection, keypair, {
  mint: 'token_mint_address',
  action: 'sell',
  amount: 1000000,       // 代币数量
  denominatedInSol: false,
  slippageBps: 500,
});

链上绑定曲线

import BN from 'bn.js';

// 直接从链上获取绑定曲线状态
const state = await getBondingCurveState(connection, 'token_mint');
if (state) {
  console.log(`虚拟SOL: ${state.virtualSolReserves.toString()}`);
  console.log(`虚拟代币: ${state.virtualTokenReserves.toString()}`);
  console.log(`毕业: ${state.complete}`);
}

// 获取综合价格信息
const priceInfo = await getTokenPriceInfo(connection, 'token_mint', 200); // 200 = SOL价格USD
console.log(`价格: ${priceInfo.priceInSol} SOL ($${priceInfo.priceInUsd})`);
console.log(`市值: $${priceInfo.marketCapUsd}`);
console.log(`绑定进度: ${(priceInfo.bondingProgress * 100).toFixed(1)}%`);

// 计算购买报价与价格影响
const solAmount = new BN(0.5 * 1e9); // 0.5 SOL在lamports中
const buyQuote = calculateBuyQuote(state, solAmount, 100); // 1%费用
console.log(`输出代币: ${buyQuote.tokensOut.toNumber() / 1e6}`);
console.log(`价格影响: ${buyQuote.priceImpact.toFixed(2)}%`);

// 计算卖出报价
const tokenAmount = new BN(1000000 * 1e6); // 1M代币
const sellQuote = calculateSellQuote(state, tokenAmount, 100);
console.log(`输出SOL: ${sellQuote.solOut.toNumber() / 1e9}`);

// 检查代币是否毕业到Raydium
const graduation = await isGraduated(connection, 'token_mint');
if (graduation.graduated) {
  console.log(`Raydium池: ${graduation.raydiumPool}`);
}

PumpPortal报价API

// 从PumpPortal获取报价(支持pump和raydium池)
const quote = await getPumpPortalQuote({
  mint: 'token_mint',
  action: 'buy',
  amount: '0.5',  // 0.5 SOL
  pool: 'auto',   // pump, raydium, 或 auto
});
console.log(`输入: ${quote.inputAmount}, 输出: ${quote.outputAmount}`);

代币解析

import { resolveTokenMints, getTokenList } from 'clodds/solana/tokenlist';

// 将代币符号解析为铸币地址
const mints = await resolveTokenMints(['SOL', 'USDC', 'JUP', 'BONK']);
// ['So111...', 'EPjF...', '...', '...']

// 获取完整代币列表
const tokens = await getTokenList();

池发现

import { listAllPools, selectBestPool } from 'clodds/solana/pools';

// 列出代币对的所有池
const pools = await listAllPools({
  inputMint: 'SOL',
  outputMint: 'USDC',
});

// 基于流动性选择最佳池
const best = await selectBestPool({
  inputMint: 'SOL',
  outputMint: 'USDC',
  amount: 1_000_000_000,
});

钱包工具

import { loadSolanaKeypair, getSolanaConnection, signAndSendTransaction } from 'clodds/solana/wallet';

// 从环境变量加载密钥对
const keypair = loadSolanaKeypair();

// 获取连接
const connection = getSolanaConnection();

// 签名并发送交易
const signature = await signAndSendTransaction(connection, transaction, keypair);

代币符号

常用代币符号:

符号 名称 铸币地址
SOL Solana So11111111111111111111111111111111111111112
USDC USD Coin EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDT Tether Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
JUP Jupiter JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN
BONK Bonk DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263
WIF dogwifhat EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm
PYTH Pyth HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3

滑点设置

代币类型 推荐滑点
主要 (SOL, USDC) 0.5%
中市值 1-2%
小市值 / 迷因 3-5%
新发行 5-10%

错误处理

import { SolanaSwapError, InsufficientBalanceError, SlippageExceededError } from 'clodds/solana';

try {
  await executeJupiterSwap({ ... });
} catch (error) {
  if (error instanceof InsufficientBalanceError) {
    console.log('余额不足');
  } else if (error instanceof SlippageExceededError) {
    console.log('价格变动过大,增加滑点');
  }
}