커뮤니티
예스스팟 Q&A
답변완료
객체사용
marketdata1과 chart1 객체를 사용하여 미니KP200선물연결 종목호가정보를 가져오려고 하는데 예스스팟 실행을 하면 최근메시지 항목에 "주식종목만 조회 가능합니다."라고 나옵니다.선물도 다 가능하다라고 매뉴얼에 나오는데 왜 그런가요?
2026-03-10
46
글번호 231029
tktmsl 님에 의해서 삭제되었습니다.
2026-03-10
25
글번호 231020
답변완료
저점 돌파 콜매수, 고점 돌파 풋매수
주간용이며, 데이트레이딩입니다.신호는 선물, 진입은 옵션입니다.요청수식1 . 장초반에 생긴 저점을 깨지 못하다가 오후에 저점에 근접할 때 Call 매수1. 전제조건 : K200선물 시가에서 10포인트 이상 하락2. 구간 저점 저장 : 084500 에서 100000 까지 K200선물 저점은 A 입니다. ( A는 084500 부터 100000 까지 시세를 모두 보고 판단 )3. 트리거 : stime>=130000 and stime<150000 A+2.5포인트 crossdown4. 진입 : 콜옵션 가격 0.20 포인트 이하에 최근접한 행사가에 매수주문 1개를 매도5호가에 냅니다. ( 단, 저점 A가 여전히 저점인 경우만 진입 )5. 청산 : 익절 2.50포인트, EndofDay 1515006. 진입횟수 : 1회요청수식2. 장초반에 생긴 고점을 깨지 못하다가 오후에 고점에 근접할 때 Put 매수1. 전제조건 : K200선물 시가에서 10포인트 이상 상승2. 구간 고점 저장 : 084500 에서 100000 까지 K200선물 고점은 B 입니다. ( B는 084500 부터 100000 까지 시세를 모두 보고 판단 )3. 트리거 : stime>=130000 and stime<150000 B-2.5포인트 crossup4. 진입 : 풋옵션 가격 0.20 포인트 이하에 최근접한 행사가에 매수주문 1개를 매도5호가에 냅니다. ( 단, 고점 B가 여전히 고점인 경우만 진입 )5. 청산 : 익절 2.50포인트, EndofDay 1515006. 진입횟수 : 1회수식 부탁 드립니다.항상 고맙습니다.
2026-03-09
109
글번호 230984
답변완료
관심종목 중에서 매수, 계좌보유종목수 제한 등에 대해 문의합니다.
전체 종목을 대상으로 써치하여 종목을 매수하는 프로그램입니다.1. 미리 관심종목 그룹에 등록해둔 특정관심종목 폴더에서 중에서 종목을 써치해서 매수하게 하고 싶습니다.2. 1차 매수(지정금액01) 후 당일 내에 매수금액에서 2%하락 시 2차매수(지정금액01)를 하고, 1.2차 평균매수가가 3%하락시 3차매수(지정금액02)를 하는 로직을 만들고 싶습니다.3. 1차 매수(지정금액01) 후 당일이 아닌 다음날에 평균매수가 대비 5%하락 시 2차매수(지정금액01)를 하고, 평균매수가 대비 다시 5%하락시 3차매수(지정금액02)를 하는 로직을 만들고 싶습니다.4. 해당 계좌의 보유 종목수를 제한하여 매수하고자 합니다.(계좌에 20종목만 보유, 1 종목 매도하면 1종목 매수)5. NXT에서도 자동매매가 가능하게 하고 싶습니다.부탁드립니다.=====================var M_Buy = 500000;//종목당 1회 매수금액var OPEN_T = 090000;var CLOSE_T = 150000;var SearchName = "224이평 돌파 및 지지"; //PowerSearch Namevar 당일매수제한종목수 = 10, BuyCount;var timer = 5; //매수 매도 초(시간) 간격var Earning_Rate = 1.3; //계좌평가금액이 스팟시작시 평가금액대비 30% 이상이면 전종목 전량매도var Trailing_Stop = 0.1; // 종목당 -10%이하 손실이면 전량 손절var Earning_Sale = 1.25; // 종목당 25%이상 수익이면 전량 익절var OrderList = [];var MKList = [];var req;function Main_OnStart(){ //1번 타이머, 5초 Main.SetTimer(1, timer*1000); // 오늘 매수한 종목 관리 배열 초기화 MKList = []; //스팟 시작시 잔고평가금액 V1 = Account1.GetBalanceETCinfo(100); BuyCount = 0;}function Main_OnTimer(nEventID){ var d = new Date(); YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= OPEN_T && HHMMSS < CLOSE_T && BuyCount < 당일매수제한종목수) { //종목검색 수행 Main.ReqPowerSearch(SearchName) Main.MessageList("ReqPowerSearch1"); } if (nEventID == 1) { //계좌보유종수 var num = Account1.GetTheNumberOfBalances(); //9시~15시 15분 사이 if (HHMMSS >= OPEN_T && HHMMSS < CLOSE_T) { //보유종목이 1개 이상 if (num >= 1) { //계좌평가금액이 스팟시작시 평가금액대비 30% 이상이면 전종목 전량매도 if (Account1.GetBalanceETCinfo(100) >= V1*Earning_Rate) { //1번 타이머 종료 Main.KillTimer(1); //계좌리스트의 순서대로 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); //수량이 있고 Earning_Rate(30%)수익이거나 손실이면 시장가 매도 if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } else //아니면 개별종목 25% Earning_Sale, -10% Trailing_Stop 체크 { //계좌리스트의 순서대로 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); //수량이 있고 "Earning_Sale" 25% 수익이거나 "Trailing_Stop" -10% 손실이면 시장가 전량매도 if (Account1.Balance.count > 0 && (Account1.Balance.current >= Account1.Balance.avgUnitCost*Earning_Sale || Account1.Balance.current <= Account1.Balance.avgUnitCost*Trailing_Stop)) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } } } } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); Main.MessageList("ReqMarketData:",OrderList[req]); }}function Main_OnRcvItemList(aItemList, nCount){ Main.KillTimer(1); Main.MessageList("aItemList:",aItemList); OrderList = []; if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList; } else { for (var a = 0; a < nCount; a++) { var Add = true; for (var b = 0; b < MKList.length; b++) { if (aItemList[a] == MKList[b].code) { Add = false; } } if (Add == true && !IsStockInAccount(aItemList[a])) { OrderList.push(aItemList[a]); } } } } Main.MessageList("OrderList:",OrderList); if (OrderList.length == 0) { Main.SetTimer(1, timer*1000); } else { req = 0; Main.ReqMarketData(OrderList[req]); Main.MessageList("ReqMarketData:",OrderList[req]); ; }}function Main_OnRcvMarketData(MarketData){ if (MarketData.code == OrderList[req]) { MKList.push(MarketData); // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { if (BuyCount < 당일매수제한종목수) { // 계좌에 잔고가 없는 경우에만 매수 Account1.OrderBuy(MarketData.code,1,MarketData.Ask(1),0); // 종목당 1주 지정가 매수주문 // Account1.OrderBuy(MarketData.code,1,0,1); // 종목당 1주 시장가 매수주문 // Account1.OrderBuy(MarketData.code,Math.floor(M_Buy/MarketData.Ask(1)),0,1); // 종목당 지정금액 시장가 매수주문 //Account1.OrderBuy(MarketData.code,Math.floor(M_Buy/MarketData.Ask(1)),MarketData.Ask(1),0); // 종목당 지정금액 지정가 매수주문 Main.MessageList(MarketData.code + "주식을 매수합니다."); BuyCount = BuyCount+1; } } else { Main.MessageList( MarketData.code + " 주식은 이미 계좌에 있으므로 매수하지 않습니다."); } req = req+1; if (req < OrderList.length && BuyCount < 당일매수제한종목수) { var aa = Main.ReqMarketData(OrderList[req]); Main.MessageList("ReqMarketData:",OrderList[req]); ; if (aa == -1) { Main.SetTimer(2, 15000); } } else { Main.SetTimer(1, timer*1000); Main.MessageList("당일종목수제한 도달 :",BuyCount,"/",당일매수제한종목수); } }}function IsStockInAccount(stockCode) { // 계좌에 해당 종목이 있는지 확인하는 함수 var numberOfBalances = Account1.GetTheNumberOfBalances(); for (var i = 0; i < numberOfBalances; i++) { Account1.SetBalance(i); if (stockCode == Account1.Balance.code) { return true; // 계좌에 같은 종목이 있으면 true 반환 } } return false; // 계좌에 같은 종목이 없으면 false 반환}
2026-03-08
64
글번호 230977
늘그렇게 님에 의해서 삭제되었습니다.
2026-03-08
6
글번호 230976
답변완료
나스닥 거래되는 시작시간과 마감시간을 알아내는 방법이 있는지요?
안녕하세요.Summer time이나 조기종료, 휴일처럼 시간이 바뀌게 되는것을API를 통해서 알아내는 방법이 있는지요?알려주세면 감사하겠습니다.
2026-03-07
52
글번호 230971
답변완료
동시호가 지정가 주문관련 문의드립니다.
function Main_OnStart(){ Main.SetTimer(1, 5000); //무슨 뜻인가요?}function Main_OnTimer(nEventID){ var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 153505 && HHMMSS <= 153605 ) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Option1.GetCurrent(Account1.Balance.code) > 0) { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,0,1); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1) } } else { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,0,1); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } } } } }}안녕하세요.옵션 매수잔고가 있으면 마감동시호가에 시장가 청산주문 발생하게 하는 로직입니다.(예스스탁에서 도움주셔서 잘 사용하고 있습니다.^^)최근에 변동성이 커지다보니 실시간 가격제한이 적용되는 종목인지 여부에 따라 시장가청산주문이 주문거부되는 경우가 발생합니다.(yt)그래서,동시호가 시장가 exitlong주문을 지정가 0.5pt가격에 주문을 내고 싶습니다.(옵션매도는 진입을 안하니 exitshort부분은 상관없습니다.)수고스러우시겠지만, 수정 부탁드립니다. 감사합니다.
2026-03-03
85
글번호 230868
답변완료
동시호가 주문 오류 문의
안녕하세요.오전 8시50분~9시 사이 동시호가 주문시, 아래와 같은 주문에서 "주문단가가 하한가보다 낮습니다"라는 오류메세지가 뜹니다.아마도 xx.Ask(5) 에서 호가 정보를 받아오지 못하는 것 같은데, 어떤 부분에 오류가 있는지 확인 부탁드립니다.<주식객체 수신>Main.ReqMarketData({code:StockList[rcv], exchangeKind:1});<오전 NXT거래(NXT 거래 종목) - 오류없이 주문 완료>A1.OrderBuy({exchangeKind :4, code:codex, count:buyN, orderPrice:Stock[codex].Ask(3), priceKind:0});<오전 동시호가 주문(NXT 미거래 종목) - 오류 발생>A1.OrderBuy({exchangeKind :2, code:codex, count:buyN, orderPrice:Stock[codex].Ask(5), priceKind:0});추가로 스팟전략 편집시 HTS에 접속하지 않고, Spot maker를 직접실행하여 편집할 수 있는 방법은 없는지요?
2026-03-03
263
글번호 230829
답변완료
안녕하세요. 문의 드립니다.
예스스팟 스크립트에서 KP200 선물 매수호가건수, 매도호가건수를 가져오려면 어떤 객체와 속성명을 써야 하나요? MarketData는 주식 전용이라 안 된다고 나옵니다
2026-02-27
1507
글번호 230809
답변완료
계좌객체 관련 몇가지 문의드립니다.
next증권해외선물, im국내선물 예스트레이더를 이용하고 있습니다.계좌객체를 A1이라고 했을때1. A1.Refresh();를 실행할수 있는 시간당 횟수 제한이 있는지 문의드립니다. (next증권 예스스팟에서 10초마다 refresh 실행하도록 잠깐 테스트 했는데 3번요청하면 응답이 1번만 오는것 같아 문의드립니다.)2. A1.GetTotalCount(0,0)와 같이 Get0000을 실행하면 업데이트 없이 local의 A1 객체에 저장된 값을 불러오는것인지 서버에서 최신정보를 불러오는것인지 궁금합니다.
2026-02-26
1110
글번호 230794