所以我正在尝试编写我自己的 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 库计算它吗?或者我怎样才能准确地计算出来?