의사결정 (Decisions)¶
매 실행의 최종 결과는 buy(), sell(), hold(), exit(), release() 중 하나입니다.
buy¶
qty: 주문 수량 (0이면 시스템 측 기본 처리)tag: 태그 문자열price: 지정가 (None이면 시장가)
sell¶
hold¶
exit¶
현재 종목을 정리하고 전략에서 해제합니다.
- 미체결 매수 주문을 취소하고, 보유 포지션을 시장가 매도합니다
- 포지션이 0이 되면 전략에서 완전히 해제됩니다
- 해제 대기 중에는 신규 buy/sell이 차단됩니다
- 시장가 전용입니다. 지정가 정리가 필요하면
sell(price=...) + release()조합을 사용하세요
release¶
현재 종목을 현 상태 그대로 전략에서 해제합니다.
- 보유 포지션과 미체결 주문이 미귀속(manual)으로 이관됩니다
- 즉시 해제되며, 이후 DSL 평가 대상에서 제외됩니다
- 이관된 미체결 주문은 미귀속에서 체결/취소까지 추적됩니다
조건식 컨텍스트 (condition)¶
조건식 전략에서 매칭 상태를 참조할 수 있습니다.
| 변수 | 타입 | 설명 |
|---|---|---|
condition.matched |
bool |
현재 종목이 조건식에 매칭 중인지 |
condition.bars_since_match |
int |
최초 매칭 후 경과 봉 수 (매칭 아니면 -1) |
고정 종목 전략에서는 항상 matched=True, bars_since_match=-1입니다.
if not condition.matched:
exit(tag="condition_departed")
if condition.bars_since_match > 20:
release(tag="timeout")
마지막 호출 우선 규칙¶
같은 실행에서 여러 번 호출하면 마지막 호출만 채택됩니다.
권장 패턴:
if not condition.matched:
exit(tag="departed")
elif buy_cond:
buy(tag="buy signal")
elif sell_cond:
sell(tag="sell signal")
else:
hold(tag="no signal")
tag 활용¶
tag는 매매 사유를 기록하는 문자열입니다. 로그/분석에서 어떤 조건으로 매매했는지 추적할 때 유용합니다.
qty 제한¶
런타임에서는 비정상 수량을 보정합니다.
- 음수 -> 0
- 최대치 초과 -> 상한 보정