Search
📝

예제2. 복수 종목데이터 이용

2개의 종목객체를 이용한 전략으로 종목객체 사용법과 외부변수 사용법에 대한 예제입니다.
1.
전략내용
종합주가지수의 시초가가 전일 종가대비 상승하고 당일 처음 시초가 대비 0.05% 하락하면 삼성전자를 매도2호가에 10주 매수
2.
스크립트 객체화면 설정 종합주가지수의 가격을 이용해서 삼성전자에 주문을 해야 하므로 종합주가지수의 종목객체, 삼성전자 종목객체가 필요하며주문을 위해서는 계좌객체가 필요합니다. 외부변수를 사용하여 등락률을 지정할 수 있게 지정합니다. 여기서는 초기값을 0.05로 입력합니다.
a.
첫번째 종목객체 추가
종합주가지수의 정보를 얻기 위해 첫번째 종목객체 추가합니다. 스크립트 객체화면에 종목객체를 추가한 후 속성에서 객체명와 종목등 세부 설정을 지정해 주면 됩니다.
객체명은 기본으로 제공되는 이름을 사용해도 되고 임의로 지정해도 됩니다. 예제에서는 KP로 지정하고 종목은 지수인 KP종합로 지정하고 시세거래소는 KRX로 지정합니다. 종목은 종목명란을 선택하면 나타나는 종목선택화면에서 선택하면 됩니다. 지수이므로 시세거래소는 KRX로 지정하고 일간데이터나 수급데이터는 불필요하므로 사용안함으로 설정합니다.
b.
두번째 종목객체 추가
종목객체를 추가하는 방법은 첫번째와 같습니다. 객체명은 SSE, 종목은 삼성전자로 설정하고 시세 거래소는 KRX로 지정합니다. 일간데이터나 수급데이터는 불필요하므로 사용안함으로 설정합니다.
c.
계좌객체 추가
주문을 위해 계좌정보가 필요하므로 계좌객체를 추가합니다.
스크립트 객체화면에서 계좌객체명을 클릭하면 속성화면에서 해당 계좌객체의 객체명과 계좌번호를 지정할 수 있습니다. 객체명은 기본으로 지정된 이름을 사용해도 되고 임의로 지정해도 됩니다. 예제에서는 객체명은 A1로 지정하고 계좌란을 클릭하여 주문 낼 좌번호를 지정하면 됩니다. 계좌객체가 A1이라는 객체명으로 변경되고 지정한 계좌번호의 정보를 가지는 객체가 됩니다.
d.
외부변수 추가
외부변수를 사용하게 되면 스팟전략을 [예스스팟 모니터]에 적용할 때 외부변수의 기본값을 변경해서 적용할 수 있습니다. 외부변수는 스크립트 객체화면에서 추가해서 사용할 수 있습니다.
외부변수는 추가 후 속성화면에서 변수명, 초기값, 데이터형을 지정해 주시면 됩니다. 변수명은 기본으로 지정된 이름을 사용해도 되며 사용자가 임의로 지정해도 됩니다. 예제에서는 Rate로 지정하고 0.05를 초기값으로 지정하고 데이터형은 숫자로 설정합니다.
외부변수를 사용하면 [예스스팟]화면에서 전략을 실행할  때 설정 화면에서 값을 변경해서 적용할 수 있습니다.
3.
전략작성전략 전략 작성에 필요한 객체가 모두 준비 되었으므로 종합주가지수의 시초가가 전일 종가대비 상승하고 시초가 대비 0.05% 하락하면 삼성전자를 10주 매수 하는 전략을 작성해 보도록 하겠습니다.
예제2에서는 종합주가지수의 시세 변화를 감시하는 것이 이벤트가 되고 시초가 대비 0.05%하락하는 것이 조건문이 되며 삼성전자를 10주 매수하는 것이 실행문이 됩니다.
a.
이벤트 설정
이벤트는 아래와 같이 스크립트에 기술하고 중괄호 안에 처리해야 할 내용을 기술합니다.
시세나 호가가 업데이트되면 호출되는 이벤트는 Main객체에 제공되는 OnUpdateMarket입니다.
설정한 종목객체 중에 시세나 호가가 변경되는 이벤트(OnUpdateMarket)가 발생하면 해당 이벤트는 발생하게 되고 업데이트된 종목의 종목코드는 sItemCode로 리턴해 주고, 업데이트의 종류는 lUpdateID가 리턴합니다.
b.
조건문 작성
시세나 호가 변경에 대한 이벤트가 설정이 되었으므로 조건문을 지정해 보도록 하겠습니다.
종목 업데이트 이벤트가 발생할 때 업데이트된 종목이 KP종합이고 시세 업데이트인지 확인하고 현재가가 시초가 대비 0.05%이상 하락하고 오늘 갭상승 했는지 확인을 하는 조건을 지정하면 됩니다.
전역변수인 cnt는 스팟 실행시에는 0값을 가지게 되고 이후 조건이 한번 충족되면 1이 되어 당일 더이상 조건이 만족하지 않게 만듭니다.
c.
실행문 작성
이벤트와 조건문이 설정이 되었으므로 실행문으로 매수주문을 지정하면 됩니다.
주문종목코드 : SSE.code, 종목객체(삼성전자)의 종목코드
주문수량 : 10
주문가격 : 현재 삼성전자의 매도2호가
가격구분 : 0(지정가)
4.
스팟수식
var cnt; //스팟 시작 function Main_OnStart() { //cnt는 초기값 0으로 지정 cnt = 0; } //종목 업데이드 발생 function Main_OnUpdateMarket(sItemCode, lUpdateID) { if (cnt == 0 //cnt는 0이고 && sItemCode == KP.code //업데이트 종목이 KP종합고 && lUpdateID == 20001 //업데이트는 시세 업데이트이고 && KP.current <= KP.open * (1-Rate/100) //KP종합 현재가가 시가대비 -0.05% 이하이고 && KP.open > KP.KP.prevClose) //KP종합 시초가는 전일종가보다 큼 { cnt = 1; A1.OrderBuy(SSE.code, 10, SSE.Ask(2), 0); } }
JavaScript
복사