fix: Polymarket API offset limit crash in CopytradingEstimator

This commit is contained in:
Richard
2026-07-06 13:01:06 +02:00
parent a564c016bb
commit 33a52ed173
@@ -201,24 +201,31 @@ public class CopytradingEstimator : ICopytradingEstimator
int limit = 1000; int limit = 1000;
int offset = 0; int offset = 0;
while (true) while (offset <= 4000)
{ {
var page = await _polymarketClient.GetMarketTradesAsync(traderTrade.MarketId, limit, offset, ct); try
if (page.Count == 0) break;
var filtered = page.Where(p =>
!string.Equals(p.ProxyWallet, traderTrade.Trader.PlatformUserId, StringComparison.OrdinalIgnoreCase) &&
!string.Equals(p.User, traderTrade.Trader.PlatformUserId, StringComparison.OrdinalIgnoreCase))
.ToList();
tape.AddRange(filtered);
var oldestInPage = page.Last().Timestamp;
if (oldestInPage < tradeUnix)
{ {
break; // We have gone back far enough var page = await _polymarketClient.GetMarketTradesAsync(traderTrade.MarketId, limit, offset, ct);
if (page.Count == 0) break;
var filtered = page.Where(p =>
!string.Equals(p.ProxyWallet, traderTrade.Trader.PlatformUserId, StringComparison.OrdinalIgnoreCase) &&
!string.Equals(p.User, traderTrade.Trader.PlatformUserId, StringComparison.OrdinalIgnoreCase))
.ToList();
tape.AddRange(filtered);
var oldestInPage = page.Last().Timestamp;
if (oldestInPage < tradeUnix)
{
break; // We have gone back far enough
}
offset += limit;
}
catch (Exception)
{
break; // Offset exceeded limit or API error
} }
offset += limit;
} }
var relevantTrades = tape var relevantTrades = tape
@@ -316,19 +323,26 @@ public class CopytradingEstimator : ICopytradingEstimator
int limit = 1000; int limit = 1000;
int offset = 0; int offset = 0;
while (true) while (offset <= 4000)
{ {
var page = await _polymarketClient.GetMarketTradesAsync(tradeEvent.MarketId, limit, offset, ct); try
if (page.Count == 0) break;
tape.AddRange(page);
var oldestInPage = page.Last().Timestamp;
if (oldestInPage < startUnix)
{ {
break; var page = await _polymarketClient.GetMarketTradesAsync(tradeEvent.MarketId, limit, offset, ct);
if (page.Count == 0) break;
tape.AddRange(page);
var oldestInPage = page.Last().Timestamp;
if (oldestInPage < startUnix)
{
break;
}
offset += limit;
}
catch (Exception)
{
break; // Offset exceeded limit or API error
} }
offset += limit;
} }
var relevantTrades = tape var relevantTrades = tape