사용자 매뉴얼 / 1. 전략 정의
1. 전략 정의(관련 화면 및 개념 설명)
와이즈 트레이딩 룸으로 전략을 구현하려면 세트, 전략, 스크립트의 3가지 개념에 대한 이해가 필요합니다.
세트
- 사용자 전략의 실행단위. 자동매매를 실행하려면 반드시 하나 이상의 세트 생성 필요
- 조건식세트, 개별종목세트, 수동잔고세트의 3가지 유형 중 하나로 선택하여 정의
- 사용자 전략의 자금관리 단위. 세트 단위로 매매자금 할당
- 세트는 동시에 여러개 실행 가능(조건식 세트는 최대 10개, 개별종목세트, ETF세트는 제한없음)
전략
- 전략은 분할매매, 차트매매, ETF매매 전략의 3가지 유형 중 하나로 생성
- 차트전략은 사용자가 작성한 스크립트로 실행되는 전략
- 분할매매전략은 일반적은 분할매매로 실행되는 전략. 스크립트로 매수나 매도조건을 추가할 수 있음
스크립트
- 사용자가 직접 작성하는 매매 로직이나 알고리즘
- 와이즈 트레이딩 룸이 기본 제공하는 조회 및 실시간 데이터 이용
- 차트(일봉, 1분봉, N분봉, N2분봉, N틱봉) 및 각종 보조지표, 잔고, 종목정보 등의 데이터 사용 가능
- C#의 if문으로 매수조건 및 매도조건 작성. C#이 제공하는 각종 통계 및 데이터 처리 함수 사용 가능
- C# 함수외에 와이즈 트레이딩 룸이 제공하는 호가 계산 등의 추가적인 함수 사용 가능
1.1 세트 설정
세트는 전략의 실행단위, 자금의 운영단위입니다.
- 하나의 세트는 하나의 매매전략으로 설정되고, 세트에 속한 종목들은 동일한 전략이 적용됩니다.
- 세트 단위로 운영 자금을 설정하고 개별 종목당 매수한도 금액을 설정할 수 있습니다.
세트 생성 절차 및 방법
1) 시스템 접속
상단 타이틀바 메뉴의 시스템 접속 아이콘을 눌러 접속
2) 세트 추가
전략정의 화면 / 세트 탭 / 추가 버튼으로 세트 설정 입력 화면 열기
- 세트유형 : 매매 대상 종목 선정방식에 따라 정의
- 조건식세트 : 조건식으로 검색되는 종목을 대상으로 매매하는 세트
- 종목세트 : 사용자가 직접 등록한 종목을 매매하는 세트
- 수동잔고세트 : HTS에서 수동매수한 종목을 자동 매도할 목적으로 생성하는 세트
- 세트명 : 세트 명칭. 필수 입력
- 세트설명 : 세트에 대한 설명
- 세트투입금액 : 세트에 투입할 최대 매수 한도 금액
- 종목당 매수한도 금액 : 매매 종목별 최대 매수 금액
- 최대 매수종목수 : 세트 매매대상 종목 중 최대로 매수할 종목 수
- 일일 최대 매수종목수 : 당일 최대 매수 종목수
- 최대 탐색 종목수 : 조건식으로 검색되는 종목수에 상관없이 최대로 검색하여 탐색할 종목수
- 신규매수 시작시간, 신규매수 종료시간 : 신규 매수가 가능한 시간대
- 신규종목 매수 중지 : 더이상 신규 매수를 하지 않을 경우 설정
- 매도후 재매수 허용 : 보유 종목을 매도후에 매수조건이 만족하면 다시 매수하도록 설정. 기본은 매수후에는 매수조건에 부합하더라도 매수하지 않음
- 매도후 매수가능 금액으로 전환 : 보유 종목을 전량 또는 부분 매도후에 그 금액만큼 재매수할 수 있도록 설정. 기본설정은 당일에는 매도금액을 세트로 반환하지 않음
- 중복 탐색 허용 : 체크하면 세트간에 동일 종목을 중복하여 매수 탐색하고 특정 세트에 의해 매수되면 타 세트는 중복하여 매수하지 못함
- 매매전략 : 세트에 적용할 전략을 선택하여 설정. 미리 전략을 만들어야 함
알아두면 좋은 사항
- 세트 설정 중 HTS에서 조건식을 새로 작성한 경우, '조건식 새로 불러오기' 버튼을 누르면 선택할 조건식이 실시간 갱신됨
- 세트 설정 중 전략 생성 가능. 즉, 세트 설정 화면을 닫지 않고 전략 탭을 선택하여 전략을 만들고 선택할 수 있음
1.2 전략 설정
전략은 분할매매, 차트매매, ETF매매 전략 3가지 중 하나로 정의할 수 있습니다.
전략유형
- 분할매매전략 : 평가손익율 또는 등락율 기준으로 분할매수와 분할매도하는 전략. 스크립트 조건을 추가하면 프로그래밍 수준의 정교한 분할매매 전략 구현 가능
- 차트매매전략 : 사용자가 직접 매매 로직을 스크립트로 구현하는 전략
- ETF매매전략 : 시스템에 내장된 ETF 분할매매 전략. 일반 종목에도 적용 가능
기본전략 / 분할매매 전략 설정
전략 설정은 '조건', '조건만족시 주문', '조건미만족시 주문'의 3부분으로 구성되어 있습니다. '조건' 부문을 만족하면 '조건만족시 주문'의 부분에 설정한 대로 주문이 실행되고, '조건' 부문이 만족하지 않으면 '조건미만족시 주문'에 설정한 대로 주문이 나가는 구조입니다.
기본 설정법
- 편집모드(추가나 수정 모드 상태)에서 조건의 추가나 수정이 가능합니다.
- 조건 추가는 "Click here to add a new row" 부분에 마우스 클릭이나 키보드 입력으로 설정할 수 있습니다.
- 조건 수정은 기존 그리드 행이나 셀에 마우스 클릭이나 키보드 입력으로 수정합니다.
- 조건 삭제는 기존 그리드 행 선택 후 키보드의 DEL키로 삭제합니다.
- 조건의 기준은 손익률 또는 등락률로 설정할 수 있습니다.
- 기준값이 0.0%에서 최초 매수가 되고 손익률이나 등락률의 증감에 따라 분할매수나 분할매도가 진행됩니다.
- 추가조건 항목은 기준(손익률, 등락률) 조건 외에 사용자가 작성한 스크립트에서 매수나 매도신호를 추가적으로 적용하는 것으로, 스크립트에서는 매수나 매도신호가 나올 수 있도록 작성하면 됩니다. 예를 들어, 기준이 매수조건이면 스크립트에서도 매수신호가 나와야 '조건만족시 주문'이 매수 주문이 실행됩니다.
- '조건만족시 주문'이나 '조건미만족시 주문'의 주문항목은 매수, 매도, 없음 중 하나로 선택할 수 있습니다. 이때 비중값은 주문이 매수일 경우에는 종목별 매수한도 금액 대비, 매도일 경우에는 보유수량 대비 비중값입니다.
- 호가조정은 호가유형(지정가, 시장가)이 지정가일 경우, 현재가를 기준으로 계산됩니다. 예를 들어, 호가조정이 2로 설정되면, 현재가 대비 +2호가로 주문이 됩니다.
기본전략 / 차트매매 전략 설정
차트매매는 사용자가 작성한 스크립트에서 나오는 매수신호나 매도신호를 이용해서 매매하는 전략입니다. 스크립트로 로직을 작성할 수 있기 때문에 분할매매 전략 대비 더 다양한 전략 구현이 가능합니다.
스크립트 선택 외에 매수호가유형과 매도호가유형은 스크립트에서 신호와 함께 특별히 지정하지 않으면 적용되는 값입니다. 일반적으로는 스크립트에서 직접 호가유형과 호가조정을 사용합니다.
기본전략 / ETF매매 전략 설정
ETF 매매전략은 일반적으로 은행 등에서 판매하는 ETF 분할매수 상품과 같은 것으로 매수후 주가 하락시 더 많은 수량을 매수하여 매수단가를 지속적으로 낮추고 목표 수익률이 도달할 경우 매도하는 내장 전략입니다.
기준매수량이 한번에 매수하는 수량이고, 기본배수와 가중배수는 주가 하락시 더 많은 수량을 매수하도록 적용되는 설정값입니다. 기본배수는 대략 -5%내외에서 적용되고, 그 이상 하락시 가중배수가 적용됩니다.
청산전략 설정
청산전략은 '없음', '트레일링스탑', '샹들리에청산' 중 하나로 선택하여 설정할 수 있습니다.
청산전략 유형
- 없음 : 별도의 청산전략 사용하지 않음
- 트레일링스탑 : 수익률 극대화를 위해서 일정 손익률 도달시 감시를 시작해서 일정 손익률 하락시 매도하는 청산
- 샹들리에청산 : ATR 지표를 이용해서 일정 수준 이상의 가격 변동시 청산
세트단위 일괄 청산
개별 종목단위가 아닌 세트단위로 청산할 경우 설정합니다.
- 당일청산 : 당일 매수된 종목을 당일 설정한 시간에 일괄 매도(당일 매수종목이 아닌 경우 매도되지 않음)
- 익절률 기준 일괄청산 : 익절률 도달시 세트 종목 일괄 매도
- 손절률 기준 일괄청산 : 손절률 도달시 세트 종목 일괄 매도
- 매수일별 익절률 기준 일괄청산 : 동일 일자에 매수된 종목들만으로 익절률 계산하여 설정값 도달시 일괄 매도
- 매수일별 손절률 기준 일괄청산 : 동일 일자에 매수된 종목들만으로 손절률 계산하여 설정값 도달시 일괄 매도
- 익절금액 기준 일괄청산 : 종목수나 익절률 상관없이 익절금액(손익금액) 기준 도달시 일괄 매도
- 손절금액 기준 일괄청산 : 종목수나 손절률 상관없이 손절금액(손익금액) 기준 도달시 일괄 매도
수급전략 설정
수급전략은 외인이나 기관의 수급 패턴을 설정하고 이를 장중에 실시간 포착하여 매매할 수 있는 기능입니다. 일반적으로 외인이나 기관은 동일량을 일정 시간주기로 반복 주문하거나 개인이 주문하기 어려운 큰 금액을 한번에 매수나 매도하는 주문 특성이 있습니다.
포착된 수급내역은 탐색종목별로 기록되고 이 포착 데이터를 스크립트에서 사용하여 매수와 매도가 가능합니다.
보조지표 설정
사용자는 선호하는 지표의 생성값을 직접 설정할 수 있습니다. 설정값에 따라서 각종 지표가 생성되고 스크립트에서 이들 데이터를 사용하여 매매신호 생성이 가능합니다.
1.3 스크립트 작성
스크립트를 작성하는 기본 목적은 조건식으로 검색된 종목이나 사용자가 등록된 종목에 대해 실시간 차트 조건이나 매매 알고리즘을 반영하여 매매하기 위한것입니다. 따라서 조건식은 일봉 이상의 조건으로 매매 대상이 되는 종목을 필터링하여 검색하고, 스크립트로는 분봉 이하의 실시간 가격, 거래량, 보조지표 등의 조건으로 매매 신호를 생성하도록 하는것이 권장하는 작성법입니다.
스크립트는 매매신호와 사용자함수(선택작성)의 두개의 부분에 작성할 수 있습니다. 매매신호는 매수와 매도 등의 신호를 생성하는 로직을 작성하는 부분이고, 사용자함수는 매매신호 작성창에서 반복적으로 호출하여 사용되는 함수나 로직을 작성하는 부분입니다.
스크립트 작동 기본 이해
- 사용자가 작성한 스크립트는 세트 시작시 컴파일되어 별도의 코드로 실행됩니다. 따라서 실행중인 스크립트도 변경이 가능합니다.
- 실행중인 스크립트가 수정된 경우, 핫스왑 기능을 이용하여 세트의 재시작없이도 실시간 반영이 가능합니다.
- 스크립트는 탐색종목의 가격 변경시 마다 그리고 매수상태 또는 매도상태가 '탐색' 상태일 경우에만 실행됩니다.
- 스크립트에서는 사용자 조건에 의해 생성되는 매매신호(매수, 매도, 매수정정, 매도정정, 매수취소, 매도취소)가 발생하고, 이 신호를 와이즈 트레이딩 룸이 수신받아 주문을 실행하게 됩니다.
- 스크립트에는 매수, 매도, 매수취소, 매도취소, 매수정정, 매도정정 로직을 모두 작성할 수 있지만, 스크립트 실행으로 한시점에 하나의 신호만 생성됩니다. 즉 여러 신호가 발생가능할 경우, 스크립트의 마지막 코드 부분의 신호가 생성됩니다.
스크립트 작성 기본 형태
- C#의 if구문으로 매수조건, 매도조건 등을 만들어서 Post함수로 매매신호를 만드는것이 기본 스크립트 형태입니다.
- 매매신호를 생성하려면 와이즈 트레이딩 룸이 제공하는 Post 함수를 사용합니다.
- 스크립트에는 아무런 내용없이 공백으로 작성해도 됩니다. 대신 신호가 발생하지 않기 때문에 주문도 이루어지지 않습니다.
- 하나의 스크립트에 매수와 매도 등 모든 신호 발생로직을 작성할 수 있습니다.
- 차트, 보조지표, 평가손익율 등의 데이터는 와이즈 트레이딩 룸이 실시간값으로 제공하고, 사용자는 이들 데이터에 대한 이해를 통해 본인만의 매매 로직 작성이 가능합니다.
- 날짜 연산, 통계처리, 문자열 처리 등 일반적인 처리는 C#이 제공하는 함수와 데이터 등을 사용할 수 있습니다.
스크립트 데이터 사전
스크립트 작성시 사용할 수 있는 데이터는 사전으로 제공하고 있습니다.
매매신호 생성 함수 Post 구문
Post(신호, [비중], [호가], [비중계산], [주문가격], [주문수량], [분할], [유지], [재주문], [메시지]);
- 신호 : 매수, 매도, 매수정정, 매도정정, 매수취소, 매도취소 중 하나를 사용. 필수값.
- 비중 : double. 신호 실행시 비중값. 예를들어, 매수 신호와 함께 50을 사용하면 주문가능금액의 50% 매수. 기본값 100.
- 호가 : int. 현재 호가 기준 상대호가 조정값. 0을 사용하면 현재 호가, -1, +5 등 사용. 생략하면 전략설정에서 설정한 호가조정값 사용.
- 비중계산 : 비중 계산 방법. 생략하거나 0이면, 주문가능금액이나 수량 대비, 1이면 종목별매수금액이나, 전체 보유수량 대비로 계산. 기본값 0.
- 주문가격 : int. 사용자가 직접 주문가를 계산해서 매매신호를 생성할 경우 사용. 주문가격을 사용하면 현재 호가가 아닌 주문가격을 기준으로 호가 조정 적용.
- 주문수량 : int. 사용자가 직접 주문수량을 지정할 경우 사용. 주문수량을 사용하면 비중, 비중계산 옵션은 무시됨.
- 분할 : int. 주문을 여러개로 분할하여 주문하는 옵션. 매수 신호를 2분할로 생성하면, 호가 조정된 가격을 기준으로 0호가 1개, -1호가 1개. 총 2개의 매수주문 신호가 발생. 매도를 2개로 분할하면, 0호가 1개 +1호가 1개 총 2개의 주문이 생성됨.
- 유지: int. 주문을 접수하고 체결될때까지 대기하는 시간(초). 이 시간이 경과되면 미체결주문을 [재주문] 옵션에 따라서 처리됨. 기본값은 -1로, 체결시까지 대기.
- 재주문: int. [유지] 옵션과 같이 사용해서 미체결 주문을 처리하는 옵션. 값 1을 사용하면 미체결 주문을 매수주문은 +3호가, 매도는 -3호가로 조정해서 체결시킴. 값 0을 사용하면 미체결 주문을 취소하게 되고, 취소후에는 새로운 신호로 주문이 가능함.
- 메시지: string. 생성되는 주문에 사용자 메시지를 설정할 수 있도록 하는 옵션. 탐색화면의 이벤트내역에서 값을 확인할 수 있음.
Post(매수, 100, 100); // 매수가능금액 100%를 시장가(100)로 매수주문함.
Post(매도, 비중:50, 호가:-1, 유지:60); // 주문가능 수량의 50%를 현재가 기준 -1호가로 매도하고, 60초까지 체결을 대기함.
댓글
댓글 쓰기