This commit is contained in:
2026-05-09 15:57:25 +09:00
parent 13159014fe
commit 1b35f00923

View File

@@ -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)