커뮤니티

문의드립니다

프로필 이미지
bigdeal
2016-02-04 16:39:30
1995
글번호 223810
답변완료
안녕하세요. 예스스팟 매뉴얼을 이용하여 공부하고 있는데 자바스크립트 언어가 첨이라 그런지 생소합니다. 예제를 좀 많이 만들어 주셨으면 많은 도움이 되었을텐데 초보자에게는 많이 공부해야할 것 같습니다. 다음과 같은 스크립트를 부탁드립니다. 챠트에서 발생되는 신호를 이용하는 스크립트입니다. 매수신호가 발생하게되면 1. 이전 챠트신호로 주문되었으나 미체결된 상태이면 취소하고 2. 신규 발생한 매수신호로 주문하되 주문가격은 챠트신호가격으로 주문한다. 3. 주문가격이 체결됨과 동시에 주문가격의 +15호가로 청산주문한다 4. 청산주문이 미체결된 상태에서 매수청산 신호발생하면 미체결된 청산주문은 취소하고 매수청산신호로 주문하되 주문가격은 매수청산신호 가격으로 주문한다. 매도신호가 발생하는 경우에도 매수신호의 경우와 같습니다. 수고하세요.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-02-17 18:35:48

안녕하세요 예스스탁입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 스크립트 객체화면 설정 차트객체 추가 --> 속성에서 객체명 Chart1, 아이디연결 종목객체 추가 --> 속성에서 객체명은 MarketData1, 차트와 동일종목으로 지정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호지정 var T; var BID,Bnum,BC,BP,BV; var SID,Snum,SC,SP,SV; function Main_OnStart() { T = 0; } //차트에서 신호발생 function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { T = 1; BC = Main.GetOrderCode(Signal.code); BP = Signal.price; BV = Signal.count; BID = Account1.OrderBuy(BC,BV,BP,0); } if (T == 1 && Signal.signalKind == 2) { //동일종목 미체결주문에 대해 모두 취소 var un = Account1.GetTheNumberOfUnfills(); for (var i = 0; i < un; i++) { Account1.SetUnfill(i); if (Account1.Unfill.count > 0 && Account1.Unfill.code == Main.GetOrderCode(Signal.code)) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //잔고셋팅해서 잔고가 1이상이면 Account1.SetBalance(Main.GetOrderCode(Signal.code)) if (Account1.Balance.count >= 1) { //잔고수량만큼만 신호가격으로 주문 Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Signal.price,0); } } if (Signal.signalKind == 3) { T = -1; SC = Main.GetOrderCode(Signal.code); SP = Signal.price; SV = Signal.count; SID = Account1.OrderSell(SC,SV,SP,0); } if (T == -1 && Signal.signalKind == 4) { //동일종목 미체결주문에 대해 모두 취소 var un = Account1.GetTheNumberOfUnfills(); for (var i = 0; i < un; i++) { Account1.SetUnfill(i); if (Account1.Unfill.count > 0 && Account1.Unfill.code == Main.GetOrderCode(Signal.code)) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //잔고셋팅해서 잔고가 1이상이면 Account1.SetBalance(Main.GetOrderCode(Signal.code)) if (Account1.Balance.count >= 1) { //잔고수량만큼만 신호가격으로 주문 Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,Signal.price,0); } } } //주문응답 function Main_OnOrderResponse(OrderResponse) { //매수진입주문에 대한 응답수신 --> 주문번호 저장 if (OrderResponse.orderID == BID) { Bnum = OrderResponse.orderNum; } //매도진입주문에 대한 응답수신 --> 주문번호 저장 if (OrderResponse.orderID == SID) { Snum = OrderResponse.orderNum; } } function Main_OnNotifyFill(NotifyFill) { //매수진입주문 체결수신 if (NotifyFill.orderNum == Bnum) { //체결수량만큼 매수주문가격+15틱으로 매도주문 Account1.OrderSell(NotifyFill.code,NotifyFill.fillCount, BP+MarketData1.GetTickSize()*15,0); } //매도진입주문 체결수신 if (NotifyFill.orderNum == Snum) { //체결수량만큼 매도주문가격+15틱으로 매도주문 Account1.OrderBuy(NotifyFill.code,NotifyFill.fillCount, BP-MarketData1.GetTickSize()*15,0); } } 즐거운 하루되세요 > bigdeal 님이 쓴 글입니다. > 제목 : 문의드립니다 > 안녕하세요. 예스스팟 매뉴얼을 이용하여 공부하고 있는데 자바스크립트 언어가 첨이라 그런지 생소합니다. 예제를 좀 많이 만들어 주셨으면 많은 도움이 되었을텐데 초보자에게는 많이 공부해야할 것 같습니다. 다음과 같은 스크립트를 부탁드립니다. 챠트에서 발생되는 신호를 이용하는 스크립트입니다. 매수신호가 발생하게되면 1. 이전 챠트신호로 주문되었으나 미체결된 상태이면 취소하고 2. 신규 발생한 매수신호로 주문하되 주문가격은 챠트신호가격으로 주문한다. 3. 주문가격이 체결됨과 동시에 주문가격의 +15호가로 청산주문한다 4. 청산주문이 미체결된 상태에서 매수청산 신호발생하면 미체결된 청산주문은 취소하고 매수청산신호로 주문하되 주문가격은 매수청산신호 가격으로 주문한다. 매도신호가 발생하는 경우에도 매수신호의 경우와 같습니다. 수고하세요.