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 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
|
||||||
|
|||||||
Reference in New Issue
Block a user