fix: 尾盘策略 book 取最高买价为 bestBid,移除 tokenToEntries null 日志
- book 事件 bids 为升序,改为遍历取最高价作为 bestBid(修复 marketPrice 恒为 0.01) - 移除 onBestBid 中 tokenToEntries null 的 debug 日志 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+9
-6
@@ -10,6 +10,7 @@ import com.wrbug.polymarketbot.service.binance.BinanceKlineAutoSpreadService
|
|||||||
import com.wrbug.polymarketbot.util.RetrofitFactory
|
import com.wrbug.polymarketbot.util.RetrofitFactory
|
||||||
import com.wrbug.polymarketbot.util.createClient
|
import com.wrbug.polymarketbot.util.createClient
|
||||||
import com.wrbug.polymarketbot.util.fromJson
|
import com.wrbug.polymarketbot.util.fromJson
|
||||||
|
import com.wrbug.polymarketbot.util.gt
|
||||||
import com.wrbug.polymarketbot.util.toJson
|
import com.wrbug.polymarketbot.util.toJson
|
||||||
import com.wrbug.polymarketbot.util.toSafeBigDecimal
|
import com.wrbug.polymarketbot.util.toSafeBigDecimal
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -136,8 +137,13 @@ class CryptoTailOrderbookWsService(
|
|||||||
val assetId = (json.get("asset_id") as? com.google.gson.JsonPrimitive)?.asString ?: return
|
val assetId = (json.get("asset_id") as? com.google.gson.JsonPrimitive)?.asString ?: return
|
||||||
val bids = json.get("bids") as? com.google.gson.JsonArray
|
val bids = json.get("bids") as? com.google.gson.JsonArray
|
||||||
if (bids == null || bids.isEmpty) return
|
if (bids == null || bids.isEmpty) return
|
||||||
val firstBid = bids.get(0) as? com.google.gson.JsonObject
|
// Polymarket book 的 bids 为价格升序,bids[0] 为最低买价;bestBid 应取最高买价
|
||||||
val bestBid = (firstBid?.get("price") as? com.google.gson.JsonPrimitive)?.asString?.toSafeBigDecimal()
|
var bestBid: BigDecimal? = null
|
||||||
|
for (i in 0 until bids.size()) {
|
||||||
|
val level = bids.get(i) as? com.google.gson.JsonObject ?: continue
|
||||||
|
val p = (level.get("price") as? com.google.gson.JsonPrimitive)?.asString?.toSafeBigDecimal() ?: continue
|
||||||
|
if (bestBid == null || p.gt(bestBid)) bestBid = p
|
||||||
|
}
|
||||||
if (bestBid != null) onBestBid(assetId, bestBid)
|
if (bestBid != null) onBestBid(assetId, bestBid)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,10 +163,7 @@ class CryptoTailOrderbookWsService(
|
|||||||
private fun onBestBid(tokenId: String, bestBid: BigDecimal) {
|
private fun onBestBid(tokenId: String, bestBid: BigDecimal) {
|
||||||
if (closedForNoStrategies.get()) return
|
if (closedForNoStrategies.get()) return
|
||||||
val entries = tokenToEntries.get()[tokenId]
|
val entries = tokenToEntries.get()[tokenId]
|
||||||
if (entries == null) {
|
if (entries == null) return
|
||||||
logger.debug("tokenToEntries null: $tokenId")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
val nowSeconds = System.currentTimeMillis() / 1000
|
val nowSeconds = System.currentTimeMillis() / 1000
|
||||||
for (e in entries) {
|
for (e in entries) {
|
||||||
val windowStart = e.periodStartUnix + e.strategy.windowStartSeconds
|
val windowStart = e.periodStartUnix + e.strategy.windowStartSeconds
|
||||||
|
|||||||
Reference in New Issue
Block a user