커뮤니티

문의드립니다.

프로필 이미지
여세우
2018-06-25 13:09:25
1968
글번호 224481
답변완료
수고하십니다. (1) 파워종목검색에서 검색이 되면, 검색된 종목 모두 100만원씩 3시25분에 시장가 매수하고, 매수가 되면 바로 지정가 AA% 익절 매도주문을 내고, 당일 매도가 되지 않으면 다음날 장시작 전 8시에 지정가 AA% 익절, BB% 손절 주문을 넣는 식 부탁드립니다. (2)주식 현물 계좌잔고에서 매도"가능수량"을 확인할 수 있는 방법 부탁드립니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-07-10 16:14:59

안녕하세요 예스스탁입니다. 1 예스스팟은 예약주문 형태가 가능하지 않습니다. 그러므로 손절은 미리 주문 내는 형태는 가능하지 않습니다. 매수 후 평단가-AA%로 지정가 주문을 내면 주문가격이 낮아 지정가로 주문내면 바로 매도처리됩니다. 목표수익과 같은 경우에는 매도호가 쪽으로 매도주문을 내는 부분이므로 가능합니다. 아래식은 가이드이므로 별도로 테스트된 내용이 아닙니다. 참고하셔서 수정보완해 사용하시기 바랍니다. var req,BID,Bnum,step; var OBJ,SList = [],BXList = []; var AA = 10;//익절 % function Main_OnStart() { Main.SetTimer(1, 5000); step = 0; } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS1 = HHMMSS; HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //8시 if (step == 0 && nEventID == 1 && HHMMSS >= 80000 && HHMMSS1 < 80000) { step = 1; //보유 종목수 var num = Account1.GetTheNumberOfBalances(); BXLIST = []; if (num >= 1) { //보유종목 종목코드를 배열변수 BXList에 저장 for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.count > 0) { BXList.push(Account1.Balance.code); } } //저장된 종목을 순서대로 종목객체 생성시작 if (BXList.length >= 1) { req = 0; Main.MessageList(HHMMSS,step," | 매도처리시작 : ",EXLIST.length); Main.ReqMarketData(BXList[req],0,0); } } //보유종목 없으면 step은 2 if (num == 0) { step = 2; } } //종목객체 생성 제한에 걸리면 지정한 시간(초) 이후에 다시 요청 if (step == 1 && nEventID == 2) { Main.KillTimer(2); S = Main.ReqMarketData(BXList[req],0,0); } //15시 25분 if (nEventID == 1 && step == 2 && HHMMSS >= 152500) { //step은 3으로 step = 3; //타이머는 더이상 불필요하므로 종료 Main.KillTimer(1); //종목검색 요청 Main.ReqPowerSearch("사용자검색조건명"); } //종목객체 생성 제한에 걸리면 지정한 시간(초) 이후에 다시 요청 if (step == 2 && nEventID == 2) { Main.KillTimer(2); S = Main.ReqMarketData(List[req],0,0); } } function Main_OnRcvItemList(aItemList, nCount) { //종목검색 완료 if (step == 3 && nCount > 0) { //step은 4로 step = 4; //SList에 종목리스트 저장 SList = aItemList; //1개 종목이상이면 요청시작 if (SList.length > 0) { req = 0; Main.ReqMarketData(SList[req],0,0); } } } function Main_OnRcvMarketData(MarketData) { OBJ = MarketData; //매도종목에 대해 종목객체가 생성되면 if (step == 1 && OBJ.code == BXList[req]) { //잔고 셋팅 Account1.SetBalance(BXList[req], 0); //수량이 잇으면 if (Account1.Balance.count > 0) { //평단가 +AA% 가격 계산 var XP = Account1.Balance.avgUnitCost*(1+AA/100); var XT = OBJ.GetTickSize(XP); var PP = Math.floor(XP/XT)*XT; //잔고수량 전량 지정가로 매도주문 Account1.OrderSell(BXList[req],Account1.Balance.count,PP,0); //종목객체는 삭제 Main.RemoveMarketData(OBJ); //카운트 1 증가 req = req+1; //매도종목에 대해 모두 요청하지 않았으면 if (req < BXList.length) { //다음종목 종목객체 요청 S = Main.ReqMarketData(BXList[req],0,0); //종목객체 요청에 제한 시간에 걸리면) if (S == -1) { //20초 타이머 동작(타이머 아이디 2번) Main.SetTimer(2, 20000); } } //모두 주무냈으면 step은 2로 if (req == BXList.length) { Main.MessageList("매도주문완료"); step = 2; } } } //매수종목의 종목객체가 수신되면 if (step == 4 && OBJ.code == SList[req]) { //백만원치 시장가로 주문(수량산정시 가격이 필요하므로 백만원을 매도1호가를 나누어 산정 ) BID = Account1.OrderBuy(OBJ.code, Math.floor(1000000/OBJ.Ask(1)),0,1); } } //주문응답 function Main_OnOrderResponse(OrderResponse) { //주문응답 수신되면 if (OrderResponse.orderID == BID) { //주문번호 저장 Bnum = OrderResponse.orderNum; } } //체결응답 function Main_OnNotifyFill(NotifyFill) { //매수주문에 대한 체결응답을 받고 if (NotifyFill.orderNum == Bnum) { //주문번호로 미체결이 셋팅 Account1.SetUnfill(Bnum); //해당 주문번호로 미체결이 없으면(전량체결) if (Account1.Unfill.count == 0) { //잔고셋팅 Account1.SetBalance(SList[req], 0); //잔고수량이 있으면 if (Account1.Balance.count > 0) { //목표수익가격 계산 var XP = Account1.Balance.avgUnitCost*(1+AA/100); var XT = OBJ.GetTickSize(XP); var PP = Math.floor(XP/XT)*XT; //매도주문 Account1.OrderSell(List[req],Account1.Balance.count,PP,0); //종목객체는 삭제 Main.RemoveMarketData(OBJ); //카운트 1증가 req = req+1; //매수할 다음종목의 종목객체 요청 if (req < SList.length) { S = Main.ReqMarketData(List[req],0,0); if (S == -1) { Main.SetTimer(2, 20000); } } //모두 요청되엇으면 주문종료 if (req == SList.length) { step = 4; Main.MessageList("주문완료"); } } } } } 2 매도가능수량으로 제공되는 값은 없습니다. 각 잔고 셋팅하시면 보유수량만 리턴됩니다. 즐거운 하루되세요 > 여세우 님이 쓴 글입니다. > 제목 : 문의드립니다. > 수고하십니다. (1) 파워종목검색에서 검색이 되면, 검색된 종목 모두 100만원씩 3시25분에 시장가 매수하고, 매수가 되면 바로 지정가 AA% 익절 매도주문을 내고, 당일 매도가 되지 않으면 다음날 장시작 전 8시에 지정가 AA% 익절, BB% 손절 주문을 넣는 식 부탁드립니다. (2)주식 현물 계좌잔고에서 매도"가능수량"을 확인할 수 있는 방법 부탁드립니다.