0

所以我正在尝试编写我自己的 Solana 网格交易机器人。我正在尝试使用Pyserum 库来实现这一点,我非常好奇 Serum Dex 如何确定当前的 Sol 值,因为我注意到,当从 Serum 请求订单簿时,询价和出价之间存在很大差异.

例如,查看我的代码:

from pyserum.connection import get_live_markets, get_token_mints

from pyserum.connection import conn
from pyserum.market import Market

import statistics
from time import sleep
import json

cc = conn("https://api.mainnet-beta.solana.com/")
market_address = "9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT" # Address for SOL/USDC


def pricestats():
    # Load the given market
    market = Market.load(cc, market_address)
    raw_asks = market.load_asks()
    raw_bids = market.load_bids()

    # Show all current ask orders
    asks = []
    for ask in raw_asks:
        asks.append(ask.info.price)

    print("\n")

    # Show all current bid orders
    bids = []
    for bid in raw_bids:
        bids.append(bid.info.price)

    
    askave = statistics.mean(asks)
    askunc = statistics.stdev(asks)

    bidave = statistics.mean(bids)
    bidunc = statistics.stdev(bids)

    askbidave = (askave+bidave)/2
    askbidrelunc = askbidave*((askunc/askave) + (bidunc/bidave))

    print(f"Ask average for SOL/USDC is {askave} ± {askunc} \n 
            Bid average is {bidave} ± {bidunc} \n 
            Ask-bid average is {askbidave} ± {askbidrelunc}")


while True:
    pricestats()
    sleep(2)

这个代码片段基本上每两秒打印一次,平均价格与各自的标准偏差,平均价格与标准开发的投标。也是,以及第一个值的平均值及其标准偏差。

我注意到卖价平均值非常接近Serum Dex上显示的 Sol 价格,但相差 2 或 3 美元。

我的程序输出之一是:

153.71994323104545 ± 66.2740217025596

因此,1 Sol 等于 153.720 USDC,标准差为 66.270 USDC。

尽管如此,同时Serum Dex显示Sol的价格是这样的:

146.804 USDC

如果我想构建一个网格交易机器人,我真的需要把这部分做好,所以...... Serum Dex 如何实际确定这个 Sol 价格?无论如何,我可以直接从 Serum 获取当前的实时价格,而不是使用 Pyserum 库计算它吗?或者我怎样才能准确地计算出来?

4

0 回答 0