This commit is contained in:
2026-05-09 14:46:04 +09:00
parent b1b851dd8d
commit 79d99ab799

23
prac.py
View File

@@ -11,7 +11,7 @@ team_name = "HanyangFloorFunction"
# ==================== 설정 ==================== # ==================== 설정 ====================
ORDER_SIZE = 2 ORDER_SIZE = 2
MAX_POS = 20 MAX_POS = 20
ARB_THRESHOLD = 40 # 🔥 보수적으로 (중요) ARB_THRESHOLD = 40
# ==================== # ====================
class Dir(str, Enum): class Dir(str, Enum):
@@ -47,7 +47,7 @@ def main():
if bid is None or ask is None: if bid is None or ask is None:
return return
if ask - bid <= 2: # 🔥 스프레드 너무 좁으면 패스 if ask - bid <= 2:
return return
pos = positions.get(sym, 0) pos = positions.get(sym, 0)
@@ -113,16 +113,13 @@ def main():
pos = positions.get("XLF", 0) pos = positions.get("XLF", 0)
# 🔥 포지션 제한
if abs(pos) > 10: if abs(pos) > 10:
return return
# 🔥 케이스 1
profit1 = xlf_bid * 10 - basket_ask profit1 = xlf_bid * 10 - basket_ask
if profit1 > ARB_THRESHOLD: if profit1 > ARB_THRESHOLD:
exchange.send_add_message_ioc(next_id(), "XLF", Dir.SELL, xlf_bid, 10) exchange.send_add_message_ioc(next_id(), "XLF", Dir.SELL, xlf_bid, 10)
# 🔥 케이스 2
profit2 = basket_bid - xlf_ask * 10 profit2 = basket_bid - xlf_ask * 10
if profit2 > ARB_THRESHOLD: if profit2 > ARB_THRESHOLD:
exchange.send_add_message_ioc(next_id(), "XLF", Dir.BUY, xlf_ask, 10) exchange.send_add_message_ioc(next_id(), "XLF", Dir.BUY, xlf_ask, 10)
@@ -159,7 +156,6 @@ def main():
state.update_bid_ask_price(sym, bid, ask) state.update_bid_ask_price(sym, bid, ask)
# 🔥 모든 주문 취소 (핵심)
for oid in list(active_orders.keys()): for oid in list(active_orders.keys()):
exchange.send_cancel_message(oid) exchange.send_cancel_message(oid)
del active_orders[oid] del active_orders[oid]
@@ -212,11 +208,20 @@ class ExchangeConnection:
# ==================== # ====================
def parse_arguments(): def parse_arguments():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--test", default="prod-like")
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("--production", action="store_true")
group.add_argument("--test", type=str, default="prod-like")
args = parser.parse_args() args = parser.parse_args()
args.exchange_hostname = "test-exch-" + team_name if args.production:
args.port = 22000 args.exchange_hostname = "production"
args.port = 25000
else:
args.exchange_hostname = "test-exch-" + team_name
args.port = 22000
return args return args
if __name__ == "__main__": if __name__ == "__main__":