From 1b35f0092312b9ef6610687edb8efe63f0351b58 Mon Sep 17 00:00:00 2001 From: khwkim1111 Date: Sat, 9 May 2026 15:57:25 +0900 Subject: [PATCH] commit --- bot bond sell.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/bot bond sell.py b/bot bond sell.py index c4264c9..20d16ea 100644 --- a/bot bond sell.py +++ b/bot bond sell.py @@ -46,7 +46,7 @@ def main(): # pick? Also, you will need to send more orders over time. # --- 설정 --- BOND_FAIR_VALUE = 1000 # BOND fair value (고정) - BOND_ORDER_SIZE = 50 # BOND 주문당 수량 (한도 초과 방지) + BOND_ORDER_SIZE = 50 # BOND 주문당 수량 XLF_CONVERSION_FEE = 100 # XLF 변환 비용 VALE_CONVERSION_FEE = 10 # VALE 변환 비용 VALE_ARB_SIZE = 10 # VALE 차익거래 단위 @@ -74,7 +74,6 @@ def main(): active_orders = {} # BOND 전용 {order_id: {"dir": ..., "price": ...}} last_refresh = time.time() - vale_last_print = time.time() def next_id(): return om.next_order() @@ -161,6 +160,8 @@ def main(): profit1 = xlf_bid * 10 - basket_ask - XLF_CONVERSION_FEE if profit1 > 0 and om.check_pos_limit("XLF"): print(f" XLF 차익(바스켓→XLF) 시작, 예상수익:{profit1}") + # BOND 주문 먼저 취소 (XLF용 BOND 매수가 기존 매도에 상쇄되지 않도록) + cancel_all_bond_orders() xlf_state = "BUYING_BASKET" xlf_direction = "BASKET_TO_XLF" xlf_arb_size = 10 @@ -175,6 +176,7 @@ def main(): profit2 = basket_bid - xlf_ask * 10 - XLF_CONVERSION_FEE if profit2 > 0 and om.check_pos_limit("XLF"): print(f" XLF 차익(XLF→바스켓) 시작, 예상수익:{profit2}") + cancel_all_bond_orders() xlf_state = "BUYING_XLF" xlf_direction = "XLF_TO_BASKET" xlf_arb_size = 10 @@ -318,6 +320,7 @@ def main(): xlf_state = "IDLE" xlf_pending.clear() xlf_direction = None + place_bond_orders() if oid in vale_pending: print(" VALE 주문 reject → IDLE 복귀") vale_state = "IDLE" @@ -325,7 +328,7 @@ def main(): vale_direction = None elif message["type"] == "ack": - # XLF 변환 ack 처리 - om.positions 직접 수정 + # XLF 변환 ack 처리 if xlf_state == "CONVERTING": print(" XLF 변환 완료 → 매도 시작") if xlf_direction == "BASKET_TO_XLF": @@ -356,7 +359,7 @@ def main(): ) xlf_pending[oid] = qty - # VALE 변환 ack 처리 - om.positions 직접 수정 + # VALE 변환 ack 처리 elif vale_state == "CONVERTING": print(" VALE 변환 완료 → 매도 시작") if vale_direction == "VALBZ_TO_VALE": @@ -406,6 +409,8 @@ def main(): print(" XLF 차익거래 완료 → IDLE 복귀") xlf_state = "IDLE" xlf_direction = None + # XLF 완료 후 BOND 주문 재배치 + place_bond_orders() # VALE state machine 체결 처리 handle_vale_fill(oid, sym, dir_, qty)