Search
📝

예제2. 수식안에서 종목객체 생성

1.
전략내용
전략내용은 예제1과 같습니다. 예제1은 스크립트 객체화면에서 종목객체를 설정하는데 예제2는 수식안에서 종목객체를 생성해서 이용합니다.
2.
스크립트 객체화면 설정
스크립트 객체화면 설정은 예제1과 같습니다. 수식안에서 종목객체를 생성하므로 예제1에서 MK로 지정한 종목개체 지정만 제외합니다.
3.
종목객체 생성 함수
종목객체를 생성하는 함수는 메인객체의 ReqMarketData함수입니다. 매개변수는 총 4개(거래소코드, 시장구분, 종목코드, 일간데이타갯수)를 지정하며 일간데이타갯수는 불필요할 경우 생략이 가능합니다.
ReqMarketData함수가 동작해서 종목객체 생성이 완료되면 
이벤트가 발생되면 해당 이벤트가 발생시에 종목객체를 변수에 저장해서 사용하면 됩니다. 종목객체는 생성이 완료되면 자동으로 실시간 업데이트를 하게 됩니다.
4.
스팟수식
var BID,BNum,MK; function Main_OnStart() { //"Start"메세지 출력 Main.MessageList("Start"); //차트객체에서 종목코드 불러오기 //코인의 경우에는 거래소,시장, 종목코드를 구분해야 하므로 //차트에서 종목코드를 불러오면 거래소코드,시장구분,종목코드가 배열로 넘어오게 됨 ChartCode = C1.GetCode(1); Main.MessageList("Chart 종목정보",ChartCode.exchange,ChartCode.market,ChartCode.code); //종목개체 요청 Main.ReqMarketData(ChartCode.exchange,ChartCode.market,ChartCode.code); } //요청한 종목객체 수신완료 function Main_OnRcvMarketData(MarketData) { //종목객체를 MK에 저장 //종목객체는 만들어지면 자동으로 업데이트가 됨 MK = MarketData; } //차트에서 신호 발생 function C1_OnRiseSignal(Signal) { //Buy신호가 발생 if (Signal.signalKind == 1) { //현재가로 백만원 매수주문(주문아이디를 BID변수에 저장) //주문함수는 동작하면 고유의 주문아이디가 발생합니다. 주문아이디를 저장해서 주문응답시에 주문번호를 저장할 때 사용합니다. BID = ACC.OrderBuy(MK.market, MK.code, 1000000/MK.current, MK.current, 0,0); //1번 타이머 셋팅(300초, 1000이 1초) Main.SetTimer(1, 3000000); } //ExitLong신호 발생 if (Signal.signalKind == 2) { //매수주문 주문번호로 미체결객체 셋팅 ACC.SetUnfill(BNum); //미체결 수량이 있으면 주문 취소 if (ACC.Unfill.count > 0) { ACC.OrderCancel(BNum); } //잔고 셋팅 ACC.SetBalance(MK.code, 0); //계좌잔고에 해당종목 보유수량이 있으면 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { //전량 현재가로 청산 ACC.OrderSell(MK.market, MK.code, Account1.Balance.count,MK.current, 0) } } } //주문응답 function Main_OnOrderResponse(OrderResponse) { //수신받은 주문응답이 매수주문시 지정한 아이디와 같으면(매수주문에 대한 주문응답이면) if (OrderResponse.orderID == BID) { //Bnum에 주문번호 저장 BNum = OrderResponse.orderNum; } } //타이머 동작 function Main_OnTimer(nEventID) { //1번 타이머 동작 if (nEventID == 1) { //타이머 종료 Main.KillTimer(1); //매수주문 주문번호로 미체결객체 셋팅 ACC.SetUnfill(BNum); //미체결 수량이 있으면 주문 취소 if (ACC.Unfill.count > 0) { ACC.OrderCancel(BNum); } } }
JavaScript
복사