x22
This commit is contained in:
32
bot_x2.py
32
bot_x2.py
@@ -271,20 +271,22 @@ team_name = "HanyangFloorFunction"
|
||||
class OrderRateLimiter:
|
||||
def __init__(self, max_per_second=500):
|
||||
self.max_per_second = max_per_second
|
||||
self.timestamps = deque(maxlen=max_per_second + 100)
|
||||
self.tokens = max_per_second
|
||||
self.last_refill = time.time()
|
||||
|
||||
def can_send(self):
|
||||
def attempt_send(self):
|
||||
now = time.time()
|
||||
self.timestamps.append(now)
|
||||
recent = [t for t in self.timestamps if now - t < 1.0]
|
||||
if len(recent) >= self.max_per_second:
|
||||
return False
|
||||
elapsed = now - self.last_refill
|
||||
if elapsed >= 1.0:
|
||||
self.tokens = self.max_per_second
|
||||
self.last_refill = now
|
||||
if self.tokens > 0:
|
||||
self.tokens -= 1
|
||||
return True
|
||||
return False
|
||||
|
||||
def reset_if_needed(self):
|
||||
now = time.time()
|
||||
while self.timestamps and now - self.timestamps[0] >= 1.0:
|
||||
self.timestamps.popleft()
|
||||
pass
|
||||
|
||||
|
||||
def main():
|
||||
@@ -434,8 +436,7 @@ def main():
|
||||
return
|
||||
if any(cross_ema.last_signal.get(s) is not None for s in symbols_for_ema):
|
||||
return
|
||||
rate_limiter.reset_if_needed()
|
||||
if not rate_limiter.can_send():
|
||||
if not rate_limiter.attempt_send():
|
||||
return
|
||||
|
||||
bond_ask = state.ask_prices["BOND"]
|
||||
@@ -511,8 +512,7 @@ def main():
|
||||
return
|
||||
if any(cross_ema.last_signal.get(s) is not None for s in symbols_for_ema):
|
||||
return
|
||||
rate_limiter.reset_if_needed()
|
||||
if not rate_limiter.can_send():
|
||||
if not rate_limiter.attempt_send():
|
||||
return
|
||||
|
||||
vale_bid = state.bid_prices["VALE"]
|
||||
@@ -585,8 +585,7 @@ def main():
|
||||
return
|
||||
if any(mean_rev.position.get(s) is not None for s in symbols_for_mr):
|
||||
return
|
||||
rate_limiter.reset_if_needed()
|
||||
if not rate_limiter.can_send():
|
||||
if not rate_limiter.attempt_send():
|
||||
return
|
||||
|
||||
for symbol in symbols_for_ema:
|
||||
@@ -633,8 +632,7 @@ def main():
|
||||
return
|
||||
if xlf_state != "IDLE" or vale_state != "IDLE":
|
||||
return
|
||||
rate_limiter.reset_if_needed()
|
||||
if not rate_limiter.can_send():
|
||||
if not rate_limiter.attempt_send():
|
||||
return
|
||||
|
||||
for symbol in symbols_for_mr:
|
||||
|
||||
Reference in New Issue
Block a user