commit
This commit is contained in:
@@ -46,7 +46,7 @@ def main():
|
|||||||
# pick? Also, you will need to send more orders over time.
|
# pick? Also, you will need to send more orders over time.
|
||||||
# --- 설정 ---
|
# --- 설정 ---
|
||||||
BOND_FAIR_VALUE = 1000 # BOND fair value (고정)
|
BOND_FAIR_VALUE = 1000 # BOND fair value (고정)
|
||||||
BOND_ORDER_SIZE = 50 # BOND 주문당 수량 (한도 초과 방지)
|
BOND_ORDER_SIZE = 50 # BOND 주문당 수량
|
||||||
XLF_CONVERSION_FEE = 100 # XLF 변환 비용
|
XLF_CONVERSION_FEE = 100 # XLF 변환 비용
|
||||||
VALE_CONVERSION_FEE = 10 # VALE 변환 비용
|
VALE_CONVERSION_FEE = 10 # VALE 변환 비용
|
||||||
VALE_ARB_SIZE = 10 # VALE 차익거래 단위
|
VALE_ARB_SIZE = 10 # VALE 차익거래 단위
|
||||||
@@ -74,7 +74,6 @@ def main():
|
|||||||
active_orders = {} # BOND 전용 {order_id: {"dir": ..., "price": ...}}
|
active_orders = {} # BOND 전용 {order_id: {"dir": ..., "price": ...}}
|
||||||
|
|
||||||
last_refresh = time.time()
|
last_refresh = time.time()
|
||||||
vale_last_print = time.time()
|
|
||||||
|
|
||||||
def next_id():
|
def next_id():
|
||||||
return om.next_order()
|
return om.next_order()
|
||||||
@@ -161,6 +160,8 @@ def main():
|
|||||||
profit1 = xlf_bid * 10 - basket_ask - XLF_CONVERSION_FEE
|
profit1 = xlf_bid * 10 - basket_ask - XLF_CONVERSION_FEE
|
||||||
if profit1 > 0 and om.check_pos_limit("XLF"):
|
if profit1 > 0 and om.check_pos_limit("XLF"):
|
||||||
print(f" XLF 차익(바스켓→XLF) 시작, 예상수익:{profit1}")
|
print(f" XLF 차익(바스켓→XLF) 시작, 예상수익:{profit1}")
|
||||||
|
# BOND 주문 먼저 취소 (XLF용 BOND 매수가 기존 매도에 상쇄되지 않도록)
|
||||||
|
cancel_all_bond_orders()
|
||||||
xlf_state = "BUYING_BASKET"
|
xlf_state = "BUYING_BASKET"
|
||||||
xlf_direction = "BASKET_TO_XLF"
|
xlf_direction = "BASKET_TO_XLF"
|
||||||
xlf_arb_size = 10
|
xlf_arb_size = 10
|
||||||
@@ -175,6 +176,7 @@ def main():
|
|||||||
profit2 = basket_bid - xlf_ask * 10 - XLF_CONVERSION_FEE
|
profit2 = basket_bid - xlf_ask * 10 - XLF_CONVERSION_FEE
|
||||||
if profit2 > 0 and om.check_pos_limit("XLF"):
|
if profit2 > 0 and om.check_pos_limit("XLF"):
|
||||||
print(f" XLF 차익(XLF→바스켓) 시작, 예상수익:{profit2}")
|
print(f" XLF 차익(XLF→바스켓) 시작, 예상수익:{profit2}")
|
||||||
|
cancel_all_bond_orders()
|
||||||
xlf_state = "BUYING_XLF"
|
xlf_state = "BUYING_XLF"
|
||||||
xlf_direction = "XLF_TO_BASKET"
|
xlf_direction = "XLF_TO_BASKET"
|
||||||
xlf_arb_size = 10
|
xlf_arb_size = 10
|
||||||
@@ -318,6 +320,7 @@ def main():
|
|||||||
xlf_state = "IDLE"
|
xlf_state = "IDLE"
|
||||||
xlf_pending.clear()
|
xlf_pending.clear()
|
||||||
xlf_direction = None
|
xlf_direction = None
|
||||||
|
place_bond_orders()
|
||||||
if oid in vale_pending:
|
if oid in vale_pending:
|
||||||
print(" VALE 주문 reject → IDLE 복귀")
|
print(" VALE 주문 reject → IDLE 복귀")
|
||||||
vale_state = "IDLE"
|
vale_state = "IDLE"
|
||||||
@@ -325,7 +328,7 @@ def main():
|
|||||||
vale_direction = None
|
vale_direction = None
|
||||||
|
|
||||||
elif message["type"] == "ack":
|
elif message["type"] == "ack":
|
||||||
# XLF 변환 ack 처리 - om.positions 직접 수정
|
# XLF 변환 ack 처리
|
||||||
if xlf_state == "CONVERTING":
|
if xlf_state == "CONVERTING":
|
||||||
print(" XLF 변환 완료 → 매도 시작")
|
print(" XLF 변환 완료 → 매도 시작")
|
||||||
if xlf_direction == "BASKET_TO_XLF":
|
if xlf_direction == "BASKET_TO_XLF":
|
||||||
@@ -356,7 +359,7 @@ def main():
|
|||||||
)
|
)
|
||||||
xlf_pending[oid] = qty
|
xlf_pending[oid] = qty
|
||||||
|
|
||||||
# VALE 변환 ack 처리 - om.positions 직접 수정
|
# VALE 변환 ack 처리
|
||||||
elif vale_state == "CONVERTING":
|
elif vale_state == "CONVERTING":
|
||||||
print(" VALE 변환 완료 → 매도 시작")
|
print(" VALE 변환 완료 → 매도 시작")
|
||||||
if vale_direction == "VALBZ_TO_VALE":
|
if vale_direction == "VALBZ_TO_VALE":
|
||||||
@@ -406,6 +409,8 @@ def main():
|
|||||||
print(" XLF 차익거래 완료 → IDLE 복귀")
|
print(" XLF 차익거래 완료 → IDLE 복귀")
|
||||||
xlf_state = "IDLE"
|
xlf_state = "IDLE"
|
||||||
xlf_direction = None
|
xlf_direction = None
|
||||||
|
# XLF 완료 후 BOND 주문 재배치
|
||||||
|
place_bond_orders()
|
||||||
|
|
||||||
# VALE state machine 체결 처리
|
# VALE state machine 체결 처리
|
||||||
handle_vale_fill(oid, sym, dir_, qty)
|
handle_vale_fill(oid, sym, dir_, qty)
|
||||||
|
|||||||
Reference in New Issue
Block a user