커뮤니티

예스스팟과 파워종목검색 관련 문의

프로필 이미지
시골아빠
2026-03-26 09:59:28
399
글번호 231273
답변완료

안녕하세요?

최근 예스스팟을 알게되어 도전하고 있습니다.

유튜브를 보고 편집기에 코딩하여 적용을 하였는데

몇일째 매매가 이루어 지지 않아 조건에 맞는 종목이 없어 그런가 하다가,

파워종목검색에서 예스스팟과 같은 조건식을 10분마다 조회을 해보니 종목이 검색 되고 있었습니다.

그래서 같은 검색조건식의 종목이 파워종목검색에서는 나오고 예스스팟 자동매매는 이루어지지 않는

이유를 알고 싶어 문의드립니다.

아래 스팟 코딩 한번 점검 부탁드리고 자동매매 실행전 준비해야 하는 설정을 놓친 것은 아닌지 설명 부탁드립니다.

참고로 예스스팟 자동매매에서는 에러 메세지 없이 잘 작동하는 것으로 같습니다.

감사합니다.


var timer5 = 5; //5초

var 매수금 = 100000;

var OrderList = [];

var MKList = [];

var req;


function Main_OnStart()

{

// 타이머 간격 설정

Main.SetTimer(1, timer5*1000);

}


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 >= 90000 && HHMMSS < 151500)

{

//종목검색 수행

Main.ReqPowerSearch("전고점돌파"); //파워종목검색명

Main.MessageList("전고점돌파 종목 검색");


}


if (nEventID == 2)

{

Main.ReqMarketData(Orderlist[req]);

}

}


function Main_OnRevItemList(aItemList, nCount)

{

Main.KillTimer(1);


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)

{

OrderList.push(aItemList[a]);

}

}


}

}


if (OderList.length ==0)

{

Main.SetTimer(1, timer5*1000);

}

else

{

req = 0;

Main.ReqMarketData(OredrList[req]);

}

}


function Main_OnRcvMarketData(MarketData)

{

if (MarketData.code == OrderList[req])

{

MKList.push(MarketData);


Account1.OrderBuy(MarketData.code,1,0,1); // 1주 시장가 주문

Main.MessageList(MarketData.code + " 주식을 매수합니다.");


req = req+1;

if (req < OrderList.length)

{

var aa = Main.ReMarketData(OrderList[req]);

if (aa == -1)

{

Main.SetTimer(2, 15000);

}

}

else

{

Main.SetTimer(1, timer5*1000);

}

}

}



답변 3
프로필 이미지

예스스탁 예스스탁 답변

2026-04-10 16:53:05

안녕하세요 예스스탁입니다. 1 function Main_OnRevItemList(aItemList, nCount) Main.ReMarketData(OrderList[req]); OrderList 수식에 이벤트와 함수가, 철자가 잘못된 부분이 있고 변수도 선언한 이름과 다른 경우가 있습니다. function Main_OnRcvItemList(aItemList, nCount, aValues) Main.ReMarketData(OrderList[req]); OrderList 2 수정한 식입니다. var timer5 = 5; //5초 var 매수금 = 100000; var OrderList = []; var MKList = []; var req; function Main_OnStart() { // 타이머 간격 설정 Main.SetTimer(1, timer5*1000); } 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 >= 90000 && HHMMSS < 171500) { //종목검색 수행 Main.ReqPowerSearch("전고점돌파"); //파워종목검색명 Main.MessageList("전고점돌파 종목 검색"); } if (nEventID == 2) { Main.ReqMarketData(Orderlist[req]); } } function Main_OnRcvItemList(aItemList, nCount, aValues) { Main.KillTimer(1); 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) { OrderList.push(aItemList[a]); } } } } if (OrderList.length ==0) { Main.SetTimer(1, timer5*1000); } else { req = 0; Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == OrderList[req]) { MKList.push(MarketData); Account1.OrderBuy(MarketData.code,1,0,1); // 1주 시장가 주문 Main.MessageList(MarketData.code + " 주식을 매수합니다."); req = req+1; if (req < OrderList.length) { var aa = Main.ReqMarketData(OrderList[req]); if (aa == -1) { Main.SetTimer(2, 15000); } } else { Main.SetTimer(1, timer5*1000); } } } 즐거운 하루되세요
프로필 이미지

시골아빠

2026-04-14 11:24:27

답변 감사드립니다.
잘 작동 하는데 추가 요청 드리겠습니다.
주문시 주문가격을 전일 고가로 주문을 하고 싶어
Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1);
이부문을
Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),MarketData.High[1],0);
이렇게 수정해서 실행 해보니 typeError가 나옵니다.
어떻게 수정 할지 도와주세요
감사합니다.
프로필 이미지

예스스탁 예스스탁 답변

2026-04-14 14:27:38

안녕하세요 예스스탁입니다. 스팟은 예스랭귀지와 같이 [1]로 이전의 값을 가져올 수 없습니다. 종목객체에서MarketData.GetPrevHigh(1) 함수를 이용하셔야 하는데 종목객체 요청시 일봉 데이터도 같이 요청해야 값이 반환됩니다. var timer5 = 5; //5초 var 매수금 = 100000; var OrderList = []; var MKList = []; var req; function Main_OnStart() { // 타이머 간격 설정 Main.SetTimer(1, timer5*1000); } 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 >= 90000 && HHMMSS < 171500) { //종목검색 수행 Main.ReqPowerSearch("전고점돌파"); //파워종목검색명 Main.MessageList("전고점돌파 종목 검색"); } if (nEventID == 2) { Main.ReqMarketData(Orderlist[req],5); } } function Main_OnRcvItemList(aItemList, nCount, aValues) { Main.KillTimer(1); 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) { OrderList.push(aItemList[a]); } } } } if (OrderList.length ==0) { Main.SetTimer(1, timer5*1000); } else { req = 0; Main.ReqMarketData(OrderList[req],5); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == OrderList[req]) { MKList.push(MarketData); //Account1.OrderBuy(MarketData.code,1,0,1); // 1주 시장가 주문 Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.GetPrevHigh(1)),0,1); Main.MessageList(MarketData.code + " 주식을 매수합니다."); req = req+1; if (req < OrderList.length) { var aa = Main.ReqMarketData(OrderList[req],5); if (aa == -1) { Main.SetTimer(2, 15000); } } else { Main.SetTimer(1, timer5*1000); } } } 즐거운 하루되세요