跳至主要內容
返回範例應用程式

Solana Jupiter Trading Bot

This is a simple demo uses Jupiter's Metis API and Quicknode's Metis add-on to create a simple Solana trading bot. The bot monitors price differences between token pairs and executes trades when profitable opportunities arise.

前端框架/函式庫:
Solana 套件
語言:
TypeScript
建置工具/開發伺服器:
Jupiter Metis API
範例應用程式預覽

概覽

This is a simple demo uses Jupiter's Metis API and Quicknode's Metis add-on to create a simple Solana trading bot. The bot monitors price differences between token pairs and executes trades when profitable opportunities arise.

This example is for educational purposes only. Quicknode does not provide financial advice or endorse any trading strategies. Always do your own research and consult with a financial advisor before making any investment decisions.

The demo uses:

Supporting resources:

開始使用

Install Dependencies

Open the project directory:

cd solana/jupiter-bot

Then, install the dependencies:

npm install
# or
pnpm install
# or
bun install

Set Environment Variables

Make sure you have a Quicknode endpoint handy. You can get one here.


  • Rename .env.example.env and update with your Quicknode Solana Node and Metis Add-on Endpoints.
  • Specify your SECRET_KEY (the private key of the wallet you want to use for the bot). You can generate a new one with solana-keygen new command using the Solana CLI.
  • Specify your SOLANA_ENDPOINT (get one here) 以及 METIS_ENDPOINT (get one here) or use the public endpoint, https://public.jupiterapi.com.
SECRET_KEY=[00, ..., 00]
SOLANA_ENDPOINT=https://example.solana-mainnet.quiknode.pro/abc123/
METIS_ENDPOINT=https://jupiter-swap-api.quiknode.pro/abc123

Ensure your wallet is funded and modify the trading strategy in bot.ts to suit your needs.

First, run the development server:

npm run start
# or
pnpm start
# or
bun start

How it Works

建築

- bot.ts # Main bot logic
- index.ts # Entry point
- .env # Environment variables
- package.json # Dependencies

ArbBot Class

The main class that handles all trading logic:


  • constructor: Sets up the bot with configuration parameters including RPC endpoints, wallet details, and trading parameters
  • init: Initializes the bot by checking wallet balances and starting the price monitoring
  • initiatePriceWatch: Creates an interval to regularly check for arbitrage opportunities
  • getQuote: Fetches current price quotes from Jupiter Exchange
  • evaluateQuoteAndSwap: Analyzes quotes to determine if they meet profit thresholds
  • executeSwap: Handles the creation and submission of swap transactions
  • refreshBalances: Updates the current SOL and USDC balances
  • logSwap: Records successful trades to a JSON file
  • updateNextTrade: Prepares for the next trade after a successful swap
  • terminateSession: Safely shuts down the bot when conditions require it
  • jupiterInstructionToKitInstruction: Converts Jupiter API instruction format to @solana/kit instructions
  • getAddressLookupTableAccounts: Fetches address lookup tables for optimized transactions
  • postTransactionProcessing: Handles tasks after a successful transaction

Main Application

A simple runner script that:


  • Loads environment variables
  • Creates an instance of the ArbBot with configuration
  • Initializes and starts the bot

Example Trading Strategy

The bot uses a simple arbitrage strategy:


  1. Start with an initial token (USDC or SOL)
  2. Execute a trade when the price exceeds the target threshold
  3. Update parameters for the reverse trade with a profit margin
  4. Continue the cycle as long as profitable opportunities exist

This example is for educational purposes only. Quicknode does not provide financial advice or endorse any trading strategies. Always do your own research and consult with a financial advisor before making any investment decisions.

貢獻與回饋
我們非常樂意聽取您的意見,並歡迎您為這個範例應用程式提供任何貢獻!
若要回報問題或提供意見回饋,請在 qn-guide-examples 儲存庫。
若要貢獻,請依照以下步驟操作:
  1. 分叉此儲存庫
  2. 建立功能分支:
    git checkout -b feature/amazing-feature
  3. 將您的變更提交:
    git commit -m "新增超棒的功能"
  4. 推送您的分支:
    git push origin feature/amazing-feature
  5. 開啟一個 Pull Request。