커뮤니티

문의드립니다

프로필 이미지
여름가을
2025-04-28 08:41:32.0
167
글번호 226288
답변완료
삼성전자 sk하이닉스 LG에너지솔루션 삼성바이오로직스 현대차 예를 들어 5종목을 가지고 아래와 같이 매매하고싶습니다 1 당일 거래대금 누적지표를 만들고 9시 5분에 5종목의 거래대금을 비교하여 상위3개 종목을 고른다 2 상위3개 종목중 종가가 전일종가대비 등락률이 가장 큰 종목을 1회 매수진입 3 손절가 -3% 청산 TS 5%수익이상일때 1% 하락시 청산 감사합니다
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-04-30 16:45:24.0

안녕하세요 예스스탁입니다. 아래 가이드 내용을 참고하시기 바랍니다. 수식내 영문 업데이트가 게시판 금칙어로 Up*date와 같이 중간에 *이 삽입되어 있습니다. 삭제하고 적용해 보시기 바랍니다. 스크립트 객체설정 계좌객체 추가 --> 객체명 Account1, 계좌번호 지정 //대상종목 var List = ["005930","000660","373220","207940","005380"]; var 기준시간 = 90500; var req,MK = [],BuyCode,BID,BNUM,EH; function Main_OnStart() { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS < 기준시간) { req = 0; if (List.length > 0) { Main.ReqMarketData(List[req]); Main.MessageList("종목객체요청:",List[req]); } } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == List[req]) { Main.MessageList("종목객체생성:",MarketData.code); MK.push(MarketData); req = req+1; if (req < List.length) { Main.ReqMarketData(List[req]); Main.MessageList("종목객체요청:",List[req]); } else { Main.MessageList("종목객체생성완료"); Main.SetTimer(1, 1000); } } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); var sortList = []; if (nEventID == 1 && HHMMSS >= 기준시간) { //9시5분 Main.KillTimer(1); // 각종목의 당일거래대금,종목코드,등락률을 저장 for (var i = 0; i < List.length; i++) { sortList[i] = new Array(MK[i].moneyTotal,MK[i].code,(MK[i].current-MK[i].prevClose)/MK[i].prevClose*100); } //거래대금 기준 내림차순 정렬; sortList.sort(CompareForSort); //0~2만 남기고 나머지 배열 삭제 sortList.splice(3); //거래대금을 앞으로 이동 for (var i = 0; i < sortList.length; i++) { sortList[i][0] = sortList[i][2]; } //거래대금 기준 내림차순 정렬 sortList.sort(CompareForSort); BuyCode = sortList[0][1]; Main.MessageList("기준시간도달",HHMMSS,"매수종목",BuyCode); //등락률 가장 높은 종목을 매수 for (var i = 0; i < MK.length; i++) { if (MK[i].code == BuyCode) { BID = Account1.OrderBuy(MK[i].code, 1, MK[i].Ask(3),0); EH = 0; } } } } function CompareForSort(a, b) { //내림차순 return( a[0] < b[0] ? 1 : a[0] > b[0] ? -1 : 0 ); //오름차순 //return( a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0 ); } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) { BNUM = OrderResponse.orderNum; Main.MessageList("Main_OnOrderResponse",BNUM); } } function Main_OnNotifyFill(NotifyFill) { if (EH == 0 && NotifyFill.orderNum == BNUM) { EH = NotifyFill.fillPrice; Main.MessageList("EH 초기값",EH); } } function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*삭제 { //BuyCode종목 체결시세 수신 if (lUp*dateID == 20001 && sItemCode == BuyCode && EH > 0)//*삭제 { for (var i = 0; i < MK.length; i++) { if (MK[i].code == BuyCode) { Account1.SetBalance(MK[i].code ,0); if (MK[i].current > EH) { EH = MK[i].current; Main.MessageList("EH 갱신",EH); } //진입 후 최고가가 평단가대비 +5%이상이고 현재가가 최고가대비 -1% 이하이면 청산 if (Account1.Balance.count > 0 && EH >= Account1.Balance.avgUnitCost*1.05 && MK[i].current <= HH*0.99) { //매수3호가로 전량 청산 Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MK[i].Bid(3),0); EH = 0; } //진입 후 평단가대비 -3%이상 하락하면 청산 if (Account1.Balance.count > 0 && MK[i].current <= Account1.Balance.avgUnitCost*0.97) { //매수3호가로 전량 청산 Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MK[i].Bid(3),0); EH = 0; } } } } } 즐거운 하루되세요 > 여름가을 님이 쓴 글입니다. > 제목 : 문의드립니다 > 삼성전자 sk하이닉스 LG에너지솔루션 삼성바이오로직스 현대차 예를 들어 5종목을 가지고 아래와 같이 매매하고싶습니다 1 당일 거래대금 누적지표를 만들고 9시 5분에 5종목의 거래대금을 비교하여 상위3개 종목을 고른다 2 상위3개 종목중 종가가 전일종가대비 등락률이 가장 큰 종목을 1회 매수진입 3 손절가 -3% 청산 TS 5%수익이상일때 1% 하락시 청산 감사합니다