Search
📝

예제10. 동시호가청산

아래 예제는 지정한 시간 이후에 지정한 계좌의 잔고를 모두 청산하는 식입니다.
시간을 판단하기 위해 자바스크립트에서 기본으로 제공하는 Date객체를 이용합니다.
1.
전략내용
15시 40분에 잔고의 모든 종목 청산
2.
스크립트 객체화면 설정
계좌객체를 추가한 후 속서에서 객체명은 A1으로 지정하고 계좌번호로 지정합니다.
3.
전략작성
① 타이머 이벤트가 발생하면 먼저 Date객체를 변수 d에 할당하여 사용준비를 합니다.
② 시간을 판단해야 하므로 Date객체에서 시/분/초를 가져옵니다.
Date객체에서 시간을 반환하는 함수는 getHours()이며 분은 getMinutes(), 초는 getSeconds()입니다. 현재시간이 14시30분20초이면 getHours()는 14, getMinutes(),는 30, getSeconds()는 20을 반환합니다. 3가지 함수를 이용하여 시간을 일반적으로 많이 사용하는 HHMMDD형태로 만들기 위해 위해 아래와 같 이 계산식을 만들어 사용합니다.
getHours()*10000+ getMinutes(),*100+ getSeconds()
③ 현재 발생한 타이머의 아이디가 지정한 1번이고 시간이 15시40분이후 이면
④ 지정한 시간이 경과했으므로 타이머를 중지합니다.
⑤ for문을 실행하기 위해 A1계좌의 계좌의 종목수를 num에 저장합니다.
⑥ 해당 계좌의 종목 순번이 0부터 시작하므로 0부터 num미만까지 1씩 증가하면서 변수 i에 할당합니다.
⑦ i에 값이 할당될 때마다 i로 지정한 순번에 해당되는 종목으로 잔고객체를 셋팅합니다.
⑧ 셋팅된 잔고객체의 포지션이 매도이면
⑨ 해당 잔고객체의 종목코드와 잔고수량으로 지정하여 시장가 매수주문을 냅니다.
⑩ 셋팅된 잔고객체의 포지션이 매수이면
⑪ 해당 잔고객체의 종목코드와 잔고수량으로 지정하여 시장가 매도주문을 냅니다.
4.
스팟수식
function Main_OnStart() { Main.MessageLog("시작") Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMDD >= 154000) { Main.KillTimer(1); num = A1.GetTheNumberOfBalances(); for(var i = 0; i < num; i++) { A1.SetBalanceIndex(i); if (A1.Balance.position == 1) A1.OrderBuy(A1.Balance.code,A1.Balance.count,0,1); if (A1.Balance.position == 2) A1.OrderSell(A1.Balance.code,A1.Balance.count,0,1); } } }
JavaScript
복사