From 8a195184e8508fc37aac1218b343060de31472f5 Mon Sep 17 00:00:00 2001 From: khwkim1111 Date: Sat, 9 May 2026 15:24:42 +0900 Subject: [PATCH] commit --- new_prac.py | 58 ++++++++++++++++++++++------------------------------- 1 file changed, 24 insertions(+), 34 deletions(-) diff --git a/new_prac.py b/new_prac.py index 33efad6..dd6aa10 100644 --- a/new_prac.py +++ b/new_prac.py @@ -5,10 +5,10 @@ from state import StateManager team_name = "HanyangFloorFunction" -ORDER_SIZE = 2 -MAX_POS = 20 -KILL_POS = 30 -REFRESH = 0.8 # πŸ”₯ μ£Όλ¬Έ 였래 μœ μ§€ +ORDER_SIZE = 1 +MAX_POS = 10 +KILL_POS = 15 +REFRESH = 1.0 # 맀우 느리게 class Dir(str, Enum): BUY = "BUY" @@ -20,7 +20,7 @@ class ExchangeConnection: s.connect((args.exchange_hostname, args.port)) self.reader = s.makefile("r", 1) self.writer = s - self._write({"type":"hello","team":team_name.upper()}) + self._send({"type":"hello","team":team_name.upper()}) def read(self): m = json.loads(self.reader.readline()) @@ -28,18 +28,18 @@ class ExchangeConnection: m["dir"] = Dir(m["dir"]) return m + def send(self, m): + self.writer.send((json.dumps(m)+"\n").encode()) + def add(self, oid,sym,d,px,sz,tif="DAY"): - self._write({"type":"add","order_id":oid,"symbol":sym,"dir":d,"price":px,"size":sz,"tif":tif}) + self.send({"type":"add","order_id":oid,"symbol":sym,"dir":d,"price":px,"size":sz,"tif":tif}) def cancel(self, oid): - self._write({"type":"cancel","order_id":oid}) + self.send({"type":"cancel","order_id":oid}) def ioc(self, oid,sym,d,px,sz): self.add(oid,sym,d,px,sz,"IOC") - def _write(self,m): - self.writer.send((json.dumps(m)+"\n").encode()) - def parse_arguments(): p=argparse.ArgumentParser() g=p.add_mutually_exclusive_group(required=True) @@ -68,40 +68,30 @@ def main(): active={} last_refresh=0 - def market_make(sym): + def safe_trade(sym): b=st.bid_prices.get(sym) a=st.ask_prices.get(sym) if b is None or a is None: return - spread=a-b + spread = a - b - # πŸ”₯ 핡심: 넓을 λ•Œλ§Œ 거래 - if spread < 3: + # πŸ”₯ 핡심: ν™•μ‹€ν•  λ•Œλ§Œ + if spread < 4: return - p=pos.get(sym,0) - if abs(p)>MAX_POS: + p = pos.get(sym,0) + + if abs(p) > MAX_POS: return - buy_px=b+1 - sell_px=a-1 + # πŸ”₯ μ ˆλŒ€ λ¬΄λ¦¬ν•˜μ§€ μ•ŠμŒ + buy_px = b + sell_px = a - if buy_px>=sell_px: - return - - buy_sz=ORDER_SIZE - sell_sz=ORDER_SIZE - - # ν¬μ§€μ…˜ 쀄이기 - if p>0: - sell_sz+=1 - elif p<0: - buy_sz+=1 - - o=nid(); ex.add(o,sym,Dir.BUY,buy_px,buy_sz); active[o]=sym - o=nid(); ex.add(o,sym,Dir.SELL,sell_px,sell_sz); active[o]=sym + o=nid(); ex.add(o,sym,Dir.BUY,buy_px,ORDER_SIZE); active[o]=sym + o=nid(); ex.add(o,sym,Dir.SELL,sell_px,ORDER_SIZE); active[o]=sym def risk(): for s,p in pos.items(): @@ -131,13 +121,13 @@ def main(): if now-last_refresh>REFRESH: last_refresh=now - # cancel μ€„μž„ + # μ΅œμ†Œ cancel for o in list(active.keys()): ex.cancel(o) active.pop(o,None) for sym in ["GS","MS","WFC"]: - market_make(sym) + safe_trade(sym) risk()