KOL feeds: fix dead/blocked sources, drop stale feeds (29→25)
Feed-health pass over KOL_FEEDS: - raoulpal: stale Substack (last 2024-05) → Real Vision podcast feed - dampedspring: paywalled (0 entries) → free "Damped Spring 101" Substack - unchained: Cloudflare 403 → canonical Megaphone podcast feed - lynalden: Cloudflare 202 → FeedBurner mirror - glassnode: recovered via httpx http2=True (was 403 on HTTP/1.1) - browser User-Agent + Accept headers on feed fetch - removed dead feeds with no active replacement: placeholder, dragonfly, niccarter, eugene - pin h2==4.3.0 (required by http2=True) All 25 remaining feeds verified fetching real body content; newest post per feed ≤88d. Bundles in-flight KOL-module work already in the working tree (kol_x ingest, migration 027, tests). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -158,6 +158,19 @@ def register_trade(
|
||||
and not derisk_ladder):
|
||||
return
|
||||
|
||||
# Warn when the price feed doesn't cover this asset — TP/SL/trailing
|
||||
# stops will NEVER fire; only max_hold will exit the position.
|
||||
from app.services.binance import ASSET_MAP
|
||||
from app.services.hl_price_feed import HL_PRICE_ASSETS
|
||||
covered = set(ASSET_MAP.values()) | HL_PRICE_ASSETS
|
||||
if asset not in covered:
|
||||
logger.error(
|
||||
"PRICE FEED GAP: trade %d asset=%s has no price coverage. "
|
||||
"TP/SL/trailing-stop will NOT trigger — only max_hold protects "
|
||||
"this position. Add %susdt to ASSET_MAP in binance.py.",
|
||||
trade_id, asset, asset.lower(),
|
||||
)
|
||||
|
||||
_watched[trade_id] = WatchedTrade(
|
||||
trade_id=trade_id, wallet=wallet, api_key=api_key, leverage=leverage,
|
||||
asset=asset, side=side, entry_price=entry_price,
|
||||
|
||||
Reference in New Issue
Block a user