예제1에서는 객체설정과 스팟전략 작성흐름과 작성법을 설명하기 위해
간단한 내용을 구현해 보도록 하겠습니다.
1.
전략내용
선물차트에서 매수신호 발생시 ATM 등가격 콜옵션 매수
2.
스크립트 객체화면 설정
선물차트에서 매수신호가 발생시 ATM 등가격 콜옵션에 주문을 하기 위해서는 첫째, 차트에서 신호발생 등의 정보를 가져오는 차트객체가 필요하고, 둘째, 현재 ATM 등가격 콜옵션 종목코드 등의 옵션정보를 확인하기 위해서는 옵션객체가 필요하며,셋째, 주문을 위해서는 계좌객체가 필요하게 됩니다.전략을 구현하기 위해서 먼저 필요한 차트/옵션/계좌 객체를 스크립트 객체화면에서 추가하고 스크립트 편집창에서 전략을 작성해야 합니다.
a.
차트객체 추가
i.
차트에서 주는 정보를 얻기 위해서 스크립트 객체화면에서 차트객체를 추가합니다 차트객체는 복수로 추가해서 사용 가능합니다. 예제에서는 하나의 차트객체만 필요하므로하나만 추가합니다.
스크립트 객체화면에 차트객체를 추가한 후 속성에서 차트객체와 연동이 되는 차트를 지정을 해야 사용할 수 있습니다. 차트객체와 차트의 연결은 [차트아이디]를 통해서 이루어지게 되므로 차트객체와 차트에 같은 이름으로 [차트아이디]를 꼭 부여해 주어야 합니다.
ii.
차트객체에 아이디 부여
스크립트 객체화면에서 차트객체의 이름을 선택하면
속성화면에서 해당 차트객체의 객체명과 차트아이디를 설정할 수 있습니다.
차트객체명은 기본으로 제공되는 이름을 사용해도 되고 임의로 지정해도 됩니다.
예제에서는 C1로 객체명을 지정하고
연동되는 차트아이디는 system1이라는 명칭으로 부여합니다.
차트객체명이 C1으로 변경되고 차트아이디는 system1로 지정되어사용자가 준비한 차트 중 system1이라는 아이디를 가지는 차트에서 정보를 수신하게 됩니다.
iii.
차트에 차트아이디 부여
차트 아이디 부여는 차트 오른쪽 하단의
버튼을 클릭하면 지정할 수 있습니다.
차트객체에서 지정한 이름과 동일한 이름으로 지정해야 하며
알파벳 대소문자를 구별하므로 대소문자에 사용에 유의해야 합니다.

차트에 아이디 부여가 완료되면 차트 오른쪽 상단에 해당 차트의 아이디가 보여지게 됩니다.
차트에서 신호를 정보를 받아야 하므로 차트에 시스템식을 적용해 주면 됩니다.
예제에서는 시스템식 중 [이동평균(단순) Golden_Dead]를 적용했습니다.
위와 같이 설정되면 스팟전략에서 차트객체(C1)는 system1이라는 아이디를 가지는 차트에서 정보를 받게 되고 스팟전략에서 사용할 준비가 모두 마친 상태가 됩니다.
b.
옵션객체 추가
실시간으로 ATM 등가격 콜옵션 정보를 확인하기 위해 옵션객체를 추가합니다.
옵션객체를 선택 후 속성에서 객체명은 Option으로 지정하고
상품은 코스피200지수옵션을 지정합니다.
c.
계좌객체 추가
i.
주문을 위해 계좌정보가 필요하므로 계좌객체를 추가합니다.
스크립트 객체화면에서 계좌객체명을 클릭하면
속성화면에서 해당 계좌객체의 객체명과 계좌번호를 지정할 수 있습니다.
객체명은 기본으로 지정된 이름을 사용해도 되고 임의로 지정해도 됩니다.
예제에서는 객체명은 A1로 지정하고
계좌란을 클릭하여 주문낼 선옵 계좌번호를 지정하면 됩니다.
계좌객체가 A1이라는 객체명으로 변경되고 지정한 계좌번호의 정보를 가지는 객체가 됩니다.
3.
전략작성전략
전략구현에 필요한 객체가 준비가 되었으므로
선물차트에서 매수신호 발생시 ATM 등가격 콜에 매수주문하는 전략을 작성해 보겠습니다.
예스스팟 전략의 기본적인 구조는 이벤트 발생(특정사건 발생)하면
그 때 처리해야 할 내용을 기술하는 것입니다.
예제1에서는 이벤트는 선물차트에서 신호 발생하는 것이며
신호가 매수신호임을 확인하는 것은 조건문, 옵션종목으로 주문을 내는 것이 실행문이 됩니다.
a.
이벤트 설정
먼저 차트에서 완성신호가 발생하면 완성신호의 정보를 수신 받는 이벤트를 설정합니다.
이벤트는 아래와 같이 스크립트에 기술하고 중괄호 안에 처리해야 할 내용을 기술합니다.
차트에서 완성신호가 발생되면 호출되는 이벤트는
차트객체에 제공되는 OnRiseSignal이며 아래와 같이 작성해 사용합니다.
위와 같이 작성하면 차트객체(C1)에서 완성신호이벤트(OnRiseSignal)가 발생하면
완성신호객체(Signal)에 그 정보를 넘겨주게 됩니다.
완성신호 객체인 Signal은 아래와 같은 프로퍼티를 가집니다.
프로퍼티나 메소드는 이미 시스템에서 정의된 기능을 불러와 사용하는 개념으로 스크립트에서 사용할 때에는 점 연산자의 왼쪽에는 객체가, 오른쪽에는 프로퍼티나 메소드를 지정하여 사용합니다.
예를 들어, 완성신호객체(Signal)의 이름을 알고자 하면 Signal.name,
완성신호객체의 종목코드를 알고자 하면 Signal.code와 같이 표현해서
전략에서 해당 정보를 이용하면 됩니다.
※ 스크립트 객체화면이나 객체정보 화면에서 이벤트, 함수, 프로퍼티명을 클릭하면
스크립트 편집창에 자동으로 입력되므로 직접 철자를 모두 기술 할 필요는 없습니다.
b.
조건문 작성
완성신호 이벤트가 설정이 되었으므로
완성신호가 buy신호인지 확인하는 내용을 기술해 보도록 하겠습니다.
완성신호 객체에서 신호의 종류를 알 수 있는 프로퍼티는 signalKind입니다.
완성신호가 Buy이면 1, Exitlong이면 2, Sell이면 3, ExitShort이면 4를 리턴합니다.
차트에서 발생한 완성신호가 Buy이면 signalKind는 1을 가지게 되므로
아래와 같이 if문으로 완성신호의 종류가 매수임을 나타내는 if 조건문을 작성해 주시면 됩니다.
※ 자바스크립트에서 if문은 if (조건) { 실행문 } 과 같은 구조이며
알파벳 대소문자를 구별하므로 특별히 대소문자 사용에 유의하시기 바랍니다.
c.
실행문 작성
차트에서 발생된 신호가 Buy라는 것이 확인되면 주문을 발생하면 되므로
if문의 실행문으로 매수주문함수가 들어가면 됩니다.
간단히 시장가로 ATM 등가격 콜옵션을 1계약 주문한다고 하면 아래와 같이 지정해 주면 됩니다.
종목코드 : Option.GetATMCallRecent(0), 옵션객체의 ATM 등가격 콜옵션의 종목코드
주문수량 : 1
주문가격 : 0(시장가는 가격을 지정하지 않으므로 0으로 지정합니다.)
가격구분 : 1, 시장가
4.
스팟수식
//C1차트에서 신호발생
function C1_OnRiseSignal(Signal)
{
//신호가 Buy이면
if (Signal.signalKind == 1)
{
//ATM콜종목을 시장가로 1계약 매수
A1.OrderBuy(Option.GetATMCallRecent(0), 1, 0, 1);
}
}
JavaScript
복사