콘텐츠로 이동

의사결정 (Decisions)

매 실행의 최종 결과는 buy(), sell(), hold(), exit(), release() 중 하나입니다.

buy

buy(qty=0, tag="", price=None)
  • qty: 주문 수량 (0이면 시스템 측 기본 처리)
  • tag: 태그 문자열
  • price: 지정가 (None이면 시장가)

sell

sell(qty=0, tag="")

hold

hold(tag="")

exit

exit(tag="")

현재 종목을 정리하고 전략에서 해제합니다.

  • 미체결 매수 주문을 취소하고, 보유 포지션을 시장가 매도합니다
  • 포지션이 0이 되면 전략에서 완전히 해제됩니다
  • 해제 대기 중에는 신규 buy/sell이 차단됩니다
  • 시장가 전용입니다. 지정가 정리가 필요하면 sell(price=...) + release() 조합을 사용하세요

release

release(tag="")

현재 종목을 현 상태 그대로 전략에서 해제합니다.

  • 보유 포지션과 미체결 주문이 미귀속(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")

마지막 호출 우선 규칙

같은 실행에서 여러 번 호출하면 마지막 호출만 채택됩니다.

buy(tag="first")
sell(tag="second")
# 최종: SELL

권장 패턴:

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
  • 최대치 초과 -> 상한 보정

관련 문서