커뮤니티

예스스팟 스튜디오

프로필 이미지
제너리
2025-07-30 09:55:41
163
글번호 192865
답변완료

첨부 이미지

처음 실행하다 보니 오류가 뜨네요. 도움 주시면 감사하겠습니다. 에러는 줄번호15, 17에서 SyntaxError이라고 뜹니다. var timer5 = 2; // 2초 var 매수금 = 100000; var 손절 = 0.95; var 익절 = 1.05; var OrderList = []; var MKList = []; var req; ? // 종목 제한 수 (변수로 설정) var 종목제한수 = 10; ? function Main_OnStart() { // 1번 타이머, 1초 Main.SetTimer(1, timer5 * 1000); ? // 오늘 매수한 종목 관리 배열 초기화 MKList = []; } ? 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 > 090000 && HHMMSS < 100000) { // 종목검색 수행 Main.ReqPowerSearch("변동성 돌파전략"); } ? if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } } ? function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); ? OrderList = []; ? if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList.slice(0, 종목제한수); // 한정된 수만 가져오기 } 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]); // 제한 수를 넘는 경우 break if (OrderList.length >= 종목제한수) { break; } } } } ? 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); ? // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { // 계좌에 없는 경우에만 매수 Account1.OrderBuy(MarketData.code, 1, 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), MarketData.Ask(1), 0); ? // 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다. Main.MessageList(MarketData.code + " 주식을 매수합니다."); } else { 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); } } } ? 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 반환 }
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2025-07-30 10:48:36

안녕하세요 예스스탁입니다. 수식에 중간중간 불필요한 문자 ? 이 들어가 있습니다. var timer5 = 2; // 2초 var 매수금 = 100000; var 손절 = 0.95; var 익절 = 1.05; var OrderList = []; var MKList = []; var req; // 종목 제한 수 (변수로 설정) var 종목제한수 = 10; function Main_OnStart() { // 1번 타이머, 1초 Main.SetTimer(1, timer5 * 1000); // 오늘 매수한 종목 관리 배열 초기화 MKList = []; } 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 > 090000 && HHMMSS < 100000) { // 종목검색 수행 Main.ReqPowerSearch("변동성 돌파전략"); } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); OrderList = []; if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList.slice(0, 종목제한수); // 한정된 수만 가져오기 } 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]); // 제한 수를 넘는 경우 break if (OrderList.length >= 종목제한수) { break; } } } } 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); // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { // 계좌에 없는 경우에만 매수 Account1.OrderBuy(MarketData.code, 1, 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), MarketData.Ask(1), 0); // 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다. Main.MessageList(MarketData.code + " 주식을 매수합니다."); } else { 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); } } } 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 반환 } 즐거운 하루되세요 > 제너리 님이 쓴 글입니다. > 제목 : 예스스팟 스튜디오 > 처음 실행하다 보니 오류가 뜨네요. 도움 주시면 감사하겠습니다. 에러는 줄번호15, 17에서 SyntaxError이라고 뜹니다. var timer5 = 2; // 2초 var 매수금 = 100000; var 손절 = 0.95; var 익절 = 1.05; var OrderList = []; var MKList = []; var req; ? // 종목 제한 수 (변수로 설정) var 종목제한수 = 10; ? function Main_OnStart() { // 1번 타이머, 1초 Main.SetTimer(1, timer5 * 1000); ? // 오늘 매수한 종목 관리 배열 초기화 MKList = []; } ? 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 > 090000 && HHMMSS < 100000) { // 종목검색 수행 Main.ReqPowerSearch("변동성 돌파전략"); } ? if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } } ? function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); ? OrderList = []; ? if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList.slice(0, 종목제한수); // 한정된 수만 가져오기 } 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]); // 제한 수를 넘는 경우 break if (OrderList.length >= 종목제한수) { break; } } } } ? 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); ? // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { // 계좌에 없는 경우에만 매수 Account1.OrderBuy(MarketData.code, 1, 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), MarketData.Ask(1), 0); ? // 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다. Main.MessageList(MarketData.code + " 주식을 매수합니다."); } else { 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); } } } ? 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 반환 }
프로필 이미지

제너리

2025-07-30 11:17:37

처음이라...혹시 수정 부탁 드려도 될까요? 답변 주셔서 감사합니다.
프로필 이미지

제너리

2025-07-30 11:32:19

한참보고서야 수정된거 확인 했습니다. 감사합니다.^^