fix: Polymarket API offset limit crash in CopytradingEstimator
This commit is contained in:
@@ -201,24 +201,31 @@ public class CopytradingEstimator : ICopytradingEstimator
|
||||
int limit = 1000;
|
||||
int offset = 0;
|
||||
|
||||
while (true)
|
||||
while (offset <= 4000)
|
||||
{
|
||||
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)
|
||||
try
|
||||
{
|
||||
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
|
||||
@@ -316,19 +323,26 @@ public class CopytradingEstimator : ICopytradingEstimator
|
||||
int limit = 1000;
|
||||
int offset = 0;
|
||||
|
||||
while (true)
|
||||
while (offset <= 4000)
|
||||
{
|
||||
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)
|
||||
try
|
||||
{
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user