커뮤니티

예스스팟 Q&A

signal 객체 관련 문의

안녕하세요.확장차트 및 signal 객체 관련해서 문의드립니다.signal 객체에서 확장차트에서 이미 나온 신호를 yesspot에서 확인하거나 일자를 소급해서 확인할 수 있나요?예를 들어서 설명을 드리자면, 저는검색식을 9시부터 1시간에 1번씩 돌려서 나온 종목들을 관심종목에 등록하고 yeslanguage 일봉 거래식에서 나온 신호를 yesspot으로 받아서 확장차트를 띄웁니다.매수 가격 등은 전일 데이터 등으로 만들어 지는 케이스도 있어서 장중에 매수가 되기도 합니다.이 때 A 종목이 9시에는 검색이 안돼서 관심종목에 등록이 안됐고, 9시 30분에 a 종목에 b1 신호가 나왔습니다.(이 때는 yestrader나 yesspot에서 감시를 하지 않았기 때문에 신호가 나온 걸 알 수 없습니다.)10시에 검색을 다시 했을 때 A 종목이 걸려서 관심종목을 등록하고 확장차트를 띄운 후에 b1신호가 나왔었다는 걸 알게 됩니다.그럼 signal 객체에서 b1이 나왔다는 사실이나 가격을 알 수 있나요? 또는 전일에 신호가 나왔었다면 봉을 소급해서 신호가 나왔다는 사실이나 신호 가격 등을 알 수 있나요?signal.price 등으로 이미 차트가 띄워진 상태에서 신호가 나오는 순간에 가격이 잡히는 것 같습니다.아니면 yeslanguage에서 과거 신호 관련된 걸 yesspot 쪽으로 던져줄 수 있는 방법이 있는지 문의드립니다.감사합니다.좋은 하루 보내세요.
프로필 이미지
깜피
2026-07-15
17
글번호 232844

거래량 최대 행사가에서 풋옵션 매수

데이트레이딩입니다.풋옵션 매수 수식을 AI와 작성해보았습니다.수식이 틀렸으면 얼른 폐기하시고 원래대로 답변 수식 작성바랍니다.1. 풋옵션 매수 1) 조건 - 시작시간 : 140000 - 행사가 선택 : 140000 기준으로 당일 거래량이 가장 많은 행사가와 옵션시세표상의 가장 싼 행사가가 같다면 그 행사가에서 매수주문을 실행합니다. 불일치할 경우 옵션시세표상의 가장 싼 행사가에서 매수주문 실행합니다. 2) 진입 - 해당 행사가에서 0.02 체결이 발생하면 매도1호가에 매수주문합니다. 수량은 4개입니다. 3) 익절 - 거래량이 가장 많은 행사가와 옵션시세표상의 가장 싼 행사가가 같아서 매수주문 실행한 경우 해당 행사가 옵션 가격이 4.90 되면 1개 청산 해당 행사가 옵션 가격이 5.90 되면 1개 청산 해당 행사가 옵션 가격이 6.90 되면 1개 청산 해당 행사가 옵션 가격이 7.90 되면 1개 청산 - 불일치하여 옵션시세표상의 가장 싼 행사가에서 매수주문 실행한 경우 해당 행사가 옵션 가격이 0.90 되면 1개 청산 해당 행사가 옵션 가격이 1.90 되면 1개 청산 해당 행사가 옵션 가격이 2.90 되면 1개 청산 해당 행사가 옵션 가격이 3.90 되면 1개 청산 4) end of day : 151800 (익절이 없을 경우 미결제 모두 청산)항상 고맙습니다.******************************************************************************************// ==========================================// [전역 변수 설정]// ==========================================var BuyPutCode = ""; // 최종 선택된 풋옵션 종목코드var IsSameStrike = false; // 일치(true) / 불일치(false) 여부var TargetPrices = []; // 익절 목표 가격들을 저장할 배열var Position = 0; // 포지션 상태 (0: 무포지션, 1: 매수완료)var EntryPrice = 0.02; // 진입 기준가 (체결가)var OrderVol = 4; // 진입 수량var CleanedCount = 0; // 익절 청산 완료 횟수 (최대 4회)var OrderID = ""; // 주문번호 저장용// ==========================================// 1. 시스템 시작 (초기화)// ==========================================function Main_OnStart(){ Main.MessageLog("스팟 풋옵션 전략 시작");}// ==========================================// 2. 실시간 시세 및 조건 체크 감시// ==========================================function Main_OnNotifyUpdateMarketData(sMarketCode){ // [단계 2-1] 풋옵션 행사가 찾기 및 일치/불일치 판단 (14:00:00 최초 1회 실행) if (sTimeChoose() >= "140000" && BuyPutCode == "") { FindTargetStrike(); // 풋옵션 행사가 판정 함수 호출 if (BuyPutCode != "") { // 장마감 시간 체크를 위한 타이머 가동 (1초 주기) Main.SetTimer(1, 1000); // 판정된 풋옵션 종목에 대한 실시간 시세 제공 요청 Main.ReqMarketData(BuyPutCode); } } // [단계 2-2] 진입 (해당 행사가에서 0.02 체결 발생 시 매도1호가 매수) if (Position == 0 && BuyPutCode != "" && sMarketCode == BuyPutCode) { var MarketData = Main.GetMarketData(BuyPutCode); if (MarketData != null && MarketData.current == EntryPrice) { // 매도1호가[Ask(1)]로 4계약 매수 주문 실행 OrderID = Account1.OrderBuy(BuyPutCode, OrderVol, MarketData.Ask(1), 0); // 0: 지정가 Main.MessageLog("★ 풋 진입완료 ★ 매도1호가 매수주문 발송 -> 가격: " + MarketData.Ask(1)); Position = 1; // 포지션 상태 보유로 변경 } } // [단계 2-3] 익절 (진입 완료 후 단계별 순차 청산) if (Position == 1 && BuyPutCode != "" && sMarketCode == BuyPutCode) { var MarketData = Main.GetMarketData(BuyPutCode); if (MarketData != null) { // 4개 계약에 대해 각 목표값 도달 여부를 순차적으로 감시 for (var i = CleanedCount; i < 4; i++) { if (MarketData.current >= TargetPrices[i]) { // 매수1호가[Bid(1)]로 1계약 청산(매도) 주문 실행 Account1.OrderSell(BuyPutCode, 1, MarketData.Bid(1), 0); Main.MessageLog("■ 풋 익절달성 ■ (" + (i+1) + "차 목표: " + TargetPrices[i] + ") 1개 청산"); CleanedCount++; // 청산 카운트 누적 } } } }}// ==========================================// 3. 장마감 청산 감시 (타이머 이벤트)// ==========================================function Main_OnTimer(nEventID){ // [단계 3-1] 15:18:00 도달 시 미결제 전량 매수1호가 지정가 청산 (EOD) var sTime = sTimeChoose(); if (sTime >= "151800" && Position == 1) { Main.KillTimer(1); // 가동 중인 타이머 해제 // 잔고 객체를 통해 실제 보유 수량이 있는지 재확인 후 매수1호가로 매도 지정가 청산 Account1.SetBalanceItem(BuyPutCode, 0); if (Account1.Balance.count > 0) { var MarketData = Main.GetMarketData(BuyPutCode); if (MarketData != null) { // 상대방 호가인 매수1호가[Bid(1)]를 지정가로 입력하여 매도 주문을 전송 (0: 지정가) Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, MarketData.Bid(1), 0); Main.MessageLog("▲ 풋 장마감 청산(EOD) ▲ 매수1호가 지정가 청산 집행: 수량 " + Account1.Balance.count + " / 가격: " + MarketData.Bid(1)); Position = 0; } } }}// ==========================================// [보조 함수 및 로직 정의]// ==========================================// 풋옵션 행사가 탐색 및 일치/불일치 판단 프로세스function FindTargetStrike(){ var MaxVol = -1; var MaxVolCode = ""; var MinPrice = 999999; var MinPriceCode = ""; // 풋옵션 전체 행사가를 순회하며 거래량 최대 종목과 가격이 가장 싼 종목을 추출 for (var i = 0; i < OptionAn.Length; i++) { // 당일 거래량 최대 행사가 탐색 (풋옵션 대상) if (OptionAn.PutVolume(i) > MaxVol) { MaxVol = OptionAn.PutVolume(i); MaxVolCode = OptionAn.PutCode(i); } // 시세표 상 가장 싼(최소 가격) 행사가 탐색 (풋옵션 대상 및 거래가 있는 종목) if (OptionAn.PutCurrent(i) > 0 && OptionAn.PutCurrent(i) < MinPrice) { MinPrice = OptionAn.PutCurrent(i); MinPriceCode = OptionAn.PutCode(i); } } // 거래량 최대 행사가와 가장 싼 행사가의 일치 여부 판정 if (MaxVolCode == MinPriceCode && MaxVolCode != "") { // 1) 일치할 경우 BuyPutCode = MaxVolCode; IsSameStrike = true; TargetPrices = [4.90, 5.90, 6.90, 7.90]; // 일치 시 청산 가격 설정 Main.MessageLog("▶ 풋 판정결과 [일치]: 거래량 최대 == 가장 싼 행사가 (" + BuyPutCode + ")"); } else { // 2) 불일치할 경우 BuyPutCode = MinPriceCode; IsSameStrike = false; TargetPrices = [0.90, 1.90, 2.90, 3.90]; // 불일치 시 청산 가격 설정 Main.MessageLog("▶ 풋 판정결과 [불일치]: 가장 싼 행사가 선택 (" + BuyPutCode + ")"); }}// PC 시스템 시간 획득 함수 (HHMMSS 형식)function sTimeChoose(){ var D = new Date(); var HH = D.getHours().toString(); var MM = D.getMinutes().toString(); var SS = D.getSeconds().toString(); if (HH.length == 1) HH = "0" + HH; if (MM.length == 1) MM = "0" + MM; if (SS.length == 1) SS = "0" + SS; return HH + MM + SS;}
프로필 이미지
좌오비우오비
2026-07-14
33
글번호 232841

거래량 최대 행사가에서 콜옵션 매수

데이트레이딩입니다.콜옵션 매수 수식을 AI와 작성해보았습니다.수식이 틀렸으면 얼른 폐기하시고 원래대로 답변 수식 작성바랍니다.1. 콜옵션 매수 내용 1) 조건 - 시작시간 : 140000 - 행사가 선택 : 140000 기준으로 당일 거래량이 가장 많은 행사가와 옵션시세표상의 가장 싼 행사가가 같다면 그 행사가에서 매수주문을 실행합니다. 불일치할 경우 옵션시세표상의 가장 싼 행사가에서 매수주문 실행합니다. 2) 진입 - 해당 행사가에서 0.02 체결이 발생하면 매도1호가에 매수주문합니다. 수량은 4개입니다. 3) 익절 - 거래량이 가장 많은 행사가와 옵션시세표상의 가장 싼 행사가가 같아서 매수주문 실행한 경우 해당 행사가 옵션 가격이 4.90 되면 1개 청산 해당 행사가 옵션 가격이 5.90 되면 1개 청산 해당 행사가 옵션 가격이 6.90 되면 1개 청산 해당 행사가 옵션 가격이 7.90 되면 1개 청산 - 불일치하여 옵션시세표상의 가장 싼 행사가에서 매수주문 실행한 경우 해당 행사가 옵션 가격이 0.90 되면 1개 청산 해당 행사가 옵션 가격이 1.90 되면 1개 청산 해당 행사가 옵션 가격이 2.90 되면 1개 청산 해당 행사가 옵션 가격이 3.90 되면 1개 청산 4) end of day : 151800 (익절이 없을 경우 미결제 모두 청산)항상 고맙습니다.********************************************************************************************// ==========================================// [전역 변수 설정]// ==========================================var BuyCallCode = ""; // 최종 선택된 콜옵션 종목코드var IsSameStrike = false; // 일치(true) / 불일치(false) 여부var TargetPrices = []; // 익절 목표 가격들을 저장할 배열var Position = 0; // 포지션 상태 (0: 무포지션, 1: 매수완료)var EntryPrice = 0.02; // 진입 기준가 (체결가)var OrderVol = 4; // 진입 수량var CleanedCount = 0; // 익절 청산 완료 횟수 (최대 4회)var OrderID = ""; // 주문번호 저장용// ==========================================// 1. 시스템 시작 (초기화)// ==========================================function Main_OnStart(){ Main.MessageLog("스팟 전략 시작");}// ==========================================// 2. 실시간 시세 및 조건 체크 감시// ==========================================function Main_OnNotifyUpdateMarketData(sMarketCode){ // [단계 2-1] 행사가 찾기 및 일치/불일치 판단 (14:00:00 최초 1회 실행) if (sTimeChoose() >= "140000" && BuyCallCode == "") { FindTargetStrike(); // 행사가 판정 함수 호출 if (BuyCallCode != "") { // 장마감 시간 체크를 위한 타이머 가동 (1초 주기) Main.SetTimer(1, 1000); // 판정된 콜옵션 종목에 대한 실시간 시세 제공 요청 Main.ReqMarketData(BuyCallCode); } } // [단계 2-2] 진입 (해당 행사가에서 0.02 체결 발생 시 매도1호가 매수) if (Position == 0 && BuyCallCode != "" && sMarketCode == BuyCallCode) { var MarketData = Main.GetMarketData(BuyCallCode); if (MarketData != null && MarketData.current == EntryPrice) { // 매도1호가[Ask(1)]로 4계약 매수 주문 실행 OrderID = Account1.OrderBuy(BuyCallCode, OrderVol, MarketData.Ask(1), 0); // 0: 지정가 Main.MessageLog("★ 진입완료 ★ 매도1호가 매수주문 발송 -> 가격: " + MarketData.Ask(1)); Position = 1; // 포지션 상태 보유로 변경 } } // [단계 2-3] 익절 (진입 완료 후 단계별 순차 청산) if (Position == 1 && BuyCallCode != "" && sMarketCode == BuyCallCode) { var MarketData = Main.GetMarketData(BuyCallCode); if (MarketData != null) { // 4개 계약에 대해 각 목표값 도달 여부를 순차적으로 감시 for (var i = CleanedCount; i < 4; i++) { if (MarketData.current >= TargetPrices[i]) { // 매수1호가[Bid(1)]로 1계약 청산(매도) 주문 실행 Account1.OrderSell(BuyCallCode, 1, MarketData.Bid(1), 0); Main.MessageLog("■ 익절달성 ■ (" + (i+1) + "차 목표: " + TargetPrices[i] + ") 1개 청산"); CleanedCount++; // 청산 카운트 누적 } } } }}// ==========================================// 3. 장마감 청산 감시 (타이머 이벤트)// ==========================================function Main_OnTimer(nEventID){ // [단계 3-1] 15:18:00 도달 시 미결제 전량 매수1호가 지정가 청산 (EOD) var sTime = sTimeChoose(); if (sTime >= "151800" && Position == 1) { Main.KillTimer(1); // 가동 중인 타이머 해제 // 잔고 객체를 통해 실제 보유 수량이 있는지 재확인 후 매수1호가로 매도 지정가 청산 Account1.SetBalanceItem(BuyCallCode, 0); if (Account1.Balance.count > 0) { var MarketData = Main.GetMarketData(BuyCallCode); if (MarketData != null) { // 상대방 호가인 매수1호가[Bid(1)]를 지정가로 입력하여 매도 주문을 전송 (0: 지정가) Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, MarketData.Bid(1), 0); Main.MessageLog("▲ 장마감 청산(EOD) ▲ 매수1호가 지정가 청산 집행: 수량 " + Account1.Balance.count + " / 가격: " + MarketData.Bid(1)); Position = 0; } } }}// ==========================================// [보조 함수 및 로직 정의]// ==========================================// 행사가 탐색 및 일치/불일치 판단 프로세스function FindTargetStrike(){ var MaxVol = -1; var MaxVolCode = ""; var MinPrice = 999999; var MinPriceCode = ""; // 콜옵션 전체 행사가를 순회하며 거래량 최대 종목과 가격이 가장 싼 종목을 추출 for (var i = 0; i < OptionAn.Length; i++) { // 당일 거래량 최대 행사가 탐색 if (OptionAn.CallVolume(i) > MaxVol) { MaxVol = OptionAn.CallVolume(i); MaxVolCode = OptionAn.CallCode(i); } // 시세표 상 가장 싼(최소 가격) 행사가 탐색 (거래가 있는 종목 대상) if (OptionAn.CallCurrent(i) > 0 && OptionAn.CallCurrent(i) < MinPrice) { MinPrice = OptionAn.CallCurrent(i); MinPriceCode = OptionAn.CallCode(i); } } // 거래량 최대 행사가와 가장 싼 행사가의 일치 여부 판정 if (MaxVolCode == MinPriceCode && MaxVolCode != "") { // 1) 일치할 경우 BuyCallCode = MaxVolCode; IsSameStrike = true; TargetPrices = [4.90, 5.90, 6.90, 7.90]; // 일치 시 청산 가격 설정 Main.MessageLog("▶ 판정결과 [일치]: 거래량 최대 == 가장 싼 행사가 (" + BuyCallCode + ")"); } else { // 2) 불일치할 경우 BuyCallCode = MinPriceCode; IsSameStrike = false; TargetPrices = [0.90, 1.90, 2.90, 3.90]; // 불일치 시 청산 가격 설정 Main.MessageLog("▶ 판정결과 [불일치]: 가장 싼 행사가 선택 (" + BuyCallCode + ")"); }}// PC 시스템 시간 획득 함수 (HHMMSS 형식)function sTimeChoose(){ var D = new Date(); var HH = D.getHours().toString(); var MM = D.getMinutes().toString(); var SS = D.getSeconds().toString(); if (HH.length == 1) HH = "0" + HH; if (MM.length == 1) MM = "0" + MM; if (SS.length == 1) SS = "0" + SS; return HH + MM + SS;}
프로필 이미지
좌오비우오비
2026-07-14
39
글번호 232840

시스템 시험 적용으로만, 매매신호는 나오는데, 예스스팟은 자동으로 되어 있구요.

매매신호는 나오는데, 예스스팟은 자동으로 되어 있구요.
프로필 이미지
solution
2026-07-14
16
글번호 232832

수식 문의드립니다

var timer5 = 5;//5초var 매수금 = 10000;var 손절 = 0.95;var 익절 = 1.05;var 최소수익 = 1.04, 이익보존 = 1.03;var OrderList = [];var MKList = [];var req;function Main_OnStart(){//1번 타이머, 5초Main.SetTimer(1, timer5*1000);// 오늘 매수한 종목 관리 배열 초기화MKList = [];//스팟 시작시 잔고평가금액V1 = Account1.GetBalanceETCinfo(100); Main.SetTimer(99, 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("AAA") } if (nEventID == 1){//계좌보유종수var num = Account1.GetTheNumberOfBalances(); //9시~15시 15분 사이if (HHMMSS >= 90000 && HHMMSS < 150000){//보유종목이 1개 이상if (num >= 1){//계좌평가금액이 스팟시작시 평가금액대비 5% 이상이면 전종목 전량매도if (Account1.GetBalanceETCinfo(100) >= V1*1.06){//1번 타이머 종료Main.KillTimer(1);//99번 타이머 종료Main.KillTimer(99);//계좌리스트의 순서대로for (var i = 0; i < num; i++){//잔고를 셋팅Account1.SetBalance(i);//수량이 있고 5%수익이거나 5% 손실이면 시장가 매도if (Account1.Balance.count > 0){Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);}}} else //아니면 개별종목 5%익절, -5%손절 체크{//계좌리스트의 순서대로for (var i = 0; i < num; i++){//잔고를 셋팅Account1.SetBalance(i);//수량이 있고 5%수익이거나 5% 손실이면 시장가 매도if (Account1.Balance.count > 0 &&(Account1.Balance.current >= Account1.Balance.avgUnitCost*익절 ||Account1.Balance.current <= Account1.Balance.avgUnitCost*손절)){Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);}}}}}//15시 15분이후이면//계좌잔고 전체 청산if (HHMMSS >= 150100){//1번 타이머 종료Main.KillTimer(1);//99번 타이머 종료Main.KillTimer(99); //계좌리스트의 순서대로 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } }}if (nEventID == 2){Main.KillTimer(2);Main.ReqMarketData(OrderList[req]);} if (nEventID == 99 && MKList.length > 0 && HHMMSS < 150000){for (var i = 0; i < MKList.length; i++){if (MKList[i].current > HH[i]){HH[i] = MKList[i].current;} //잔고를 셋팅Account1.SetBalance(MKList[i].code);if (HH[i] >= Account1.Balance.avgUnitCost*최소수익 &&MKList[i].current <= Account1.Balance.avgUnitCost*이익보존){ if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); }}}}}function Main_OnRcvItemList(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 && !IsStockInAccount(aItemList[a])) { 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);HH.push(MarketData.current); // 계좌에 같은 종목이 있는지 확인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 반환}위 로직은 당일 매수, 당일 청산인데 , 다음날까지 가져가고 싶습니다. 즉, 종가배팅으로도 쓰고 싶습니다. 수식 수정 부탁드립니다.추신 ; 또, 수동매수해서 수정된 로직에 의해서 매도 될수 있도록 부탁드립니다.
프로필 이미지
만경
2026-07-13
27
글번호 232808
답변완료

문자알림

시스템 메세지 써킷,사이드 ,공지 등 알림기능 구현가능한가요?불가능하다면 시스템 알림메세지 캐치는 가능한지?
프로필 이미지
피리
2026-07-10
40
글번호 232770
답변완료

실시간감시 형식의 프로그램 관련 문의

일목균형표 기반 신호식(선행스팬A/B의 평탄 구간 + 돌파 패턴)을 이미 만들어 사용 중입니다.이 신호식을 나스닥100/S&P500/금 선물, 분봉(1~120분)과 틱봉(30~1000틱, 10틱 단위) 총218개 타임프레임에 대해 한 번에 검색하고, "신호검색" 버튼을 누르면 각 타임프레임을 순회하며과거~현재 신호를 전부 찾아서 목록(표)으로 보여주는 화면을 예스트레이더 안에 직접 만들고싶습니다. 실시간 감시가 아니라, 필요할 때 버튼을 눌러 한 번 훑어보는 방식입니다.1. 예스스팟의 UI 구현 범위예스스팟(YesSpot)으로 **버튼, 표(목록), 텍스트 패널 같은 사용자 화면(UI)**을 직접 만들 수 있습니까? 아니면 차트 위에 지표/신호 표시만 가능하고 별도 UI 창은 못 만듭니까?UI를 만들 수 있다면, 참고할 수 있는 예제 코드나 화면 구성 매뉴얼이 있습니까?YesLanguage(지표/신호검색식 문법)와 예스스팟(자바스크립트)의 역할 차이를 명확히 알고 싶습니다 — 둘 중 어느 쪽으로 "버튼+목록" 화면을 만들어야 합니까?2. 과거 데이터 접근 (핵심 요구사항)예스스팟에서 한 종목의 특정 타임프레임(예: 60분봉) 과거 전체 데이터(고가/저가 이력)에 프로그래밍적으로 접근할 수 있습니까? (차트에 표시된 것과 동일한 데이터를 스크립트에서 읽어올 수 있는지)위가 가능하다면, 과거 몇 개 봉까지 접근 가능합니까? (예: 최소 52봉 전까지의 고가/저가를 참조해야 하는 로직입니다)스크립트 안에서 타임프레임을 프로그래밍적으로 바꿔가며(1분→2분→...→120분, 30틱→40틱→...→1000틱) 순차적으로 조회하는 것이 가능합니까? 아니면 타임프레임마다 별도 차트/스크립트 인스턴스가 필요합니까?3. 신호 계산 및 결과 표시사용자가 만든 복잡한 조건식(N봉 연속 동일 여부 판정, 과거 4~5봉 참조 등)을 예스스팟에서 자유롭게 구현할 수 있습니까?계산된 신호 결과(발생 시각, 타임프레임, 방향)를 화면에 표(리스트)로 누적해서 보여주는 것이 가능합니까?"신호검색 시작" 버튼을 눌렀을 때, 여러 타임프레임을 순회하며 계산하는 동안 화면이 멈추지 않고(비동기 처리) 진행 상황을 표시할 수 있습니까?4. 여러 종목 동시 처리나스닥100, S&P500, 금 선물 3종목을 하나의 예스스팟 스크립트에서 동시에 처리할 수 있습니까?5. 알림 (선택사항이지만 확인 필요)신호 검색이 끝났을 때, 또는 신호가 발견됐을 때 소리 알림이나 화면 팝업을 예스스팟에서 낼 수 있습니까?6. 개발 지원위 요구사항(과거 데이터 다중 타임프레임 접근 + 커스텀 UI 화면 + 신호 목록)을 구현한 참고 예제나 유사 사례가 있습니까?직접 구현이 어렵다면, 수식/화면 작성 지원 서비스를 통해 대행 제작이 가능합니까? 가능하다면 비용과 기간은 어느 정도입니까?YesSpot 개발 매뉴얼/API 문서를 받을 수 있습니까? (특히 UI 구성 API와 과거 데이터 조회 API 부분)
프로필 이미지
dbals
2026-07-09
32
글번호 232750
답변완료

해외선물 데이터 관련

# 예스스탁(YesTrader/YesSpot) 지원팀 문의 사항## 배경 설명 (문의 시 먼저 전달하면 좋은 내용)현재 나스닥100·S&P500·금 선물, 3개 종목을 대상으로 분봉(1~120분, 1분 단위)과 틱봉(30~1000틱, 10틱 단위) 총 218개 타임프레임을 동시에 감시하며, 일목균형표 기반 사용자 정의 신호식(선행스팬A/B의 평탄 구간 + 돌파 패턴)을 실시간으로 계산해 상향/하향 신호를 감지하고 알림을 받는 시스템을 별도 프로그램(웹 대시보드)으로 구현해 사용 중입니다. 이 기능을 예스트레이더/예스스팟 안에서 직접 구현할 수 있는지, 가능하다면 어떤 방식이 최선인지 확인하고자 합니다.---## 1. YesSpot 기본 구조 및 데이터 접근1. YesSpot(자바스크립트 기반 트레이딩 플랫폼)에서 **하나의 스크립트/전략 안에서 한 종목의 여러 타임프레임(예: 1분봉과 180틱봉)에 동시에 접근**할 수 있습니까?2. 위가 가능하다면, 분봉은 1~120분까지, 틱봉은 30~1000틱(10틱 단위)까지 **각각 몇 개까지 동시에 구독/참조**할 수 있습니까? 개수 제한이 있습니까?3. YesSpot에서 **여러 종목(최대 몇 개)을 하나의 스크립트에서 동시에 감시**할 수 있습니까? (예: 나스닥100, S&P500, 금 선물을 하나의 스크립트로 동시에)4. YesLanguage(지표/신호검색식 문법)에서도 동일한 멀티 타임프레임·멀티 종목 참조가 가능합니까? YesSpot과 YesLanguage 중 이 용도에 어느 쪽이 더 적합합니까?## 2. 실시간 데이터 정확도 (틱 누락 여부)5. YesSpot/YesLanguage가 받는 실시간 데이터는 **체결(틱) 단위로 하나도 누락 없이 이벤트 기반으로 전달**됩니까, 아니면 일정 주기로 스냅샷을 갱신하는 폴링 방식입니까?6. 폴링 방식이라면, **갱신 주기는 얼마입니까?** (예: 0.1초, 0.2초 등) 이 주기보다 짧은 간격으로 여러 번 체결이 발생하면 중간 체결이 누락됩니까?7. **같은 가격에 연속으로 여러 번 체결된 경우**, 이걸 별개의 체결(틱)로 인식합니까, 아니면 가격 변화가 없으면 하나로 처리합니까? (틱봉 정확도에 직접 영향을 주는 부분이라 중요합니다)8. 체결시간이 **초 단위입니까, 밀리초 단위까지 제공**됩니까?## 3. 사용자 정의 지표/신호 로직 구현9. YesLanguage 또는 YesSpot에서 **사용자가 만든 복잡한 조건식(예: 특정 값이 N봉 연속 동일한지 판정하는 로직)**을 자유롭게 구현할 수 있습니까? (아래 원본 수식을 그대로 첨부해서 "이걸 그대로 구현 가능한지" 물어보시는 게 가장 정확합니다)10. 과거 봉(offset) 참조가 몇 봉 전까지 가능합니까? (최소 4~5봉 전 데이터까지 참조해야 하는 로직입니다)11. `highest(H, N)`, `lowest(L, N)` 같은 N구간 최고/최저 함수를 지원합니까? (N=9, 26, 52 정도가 필요합니다)## 4. 알림/알람 기능12. 조건식(신호) 충족 시, **예스트레이더/예스스팟 자체에서 소리 알림 또는 화면 팝업 알림**을 지원합니까?13. 차트를 열어두지 않고 **백그라운드에서(최소화된 상태에서도)** 알림이 정상적으로 작동합니까?14. **외부 메신저(카카오톡, 텔레그램 등)나 다른 프로그램으로 신호를 전달**하는 공식 연동 방법이 있습니까? (Webhook, API, 파일 출력 등)15. 신호 발생 이력을 **자동으로 파일이나 로그로 저장**하는 기능이 있습니까?## 5. 시스템 부하16. 하나의 스크립트에서 200개 이상의 타임프레임(또는 여러 종목 X 여러 타임프레임)을 동시에 감시할 경우, **시스템 부하나 성능 제한**이 있습니까? 권장하는 최대 개수가 있습니까?17. 여러 개의 차트 창을 띄우는 방식과, 하나의 스크립트/전략 안에서 멀티 타임프레임을 처리하는 방식 중 **부하 측면에서 어느 쪽이 유리**합니까?## 6. 종목 지원 범위18. 해외선물(나스닥100, S&P500, 금 등)이 YesLanguage/YesSpot의 **사용자 정의 지표·신호검색·알림 기능 대상에 포함**됩니까? (일부 기능이 국내 주식에만 지원되고 해외선물은 제외되는 경우가 있어 확인이 필요합니다)## 7. 개발 지원19. YesSpot으로 이런 커스텀 로직을 구현하려면 **별도 비용(API 사용료, 라이선스 등)**이 발생합니까?20. 참고할 수 있는 **YesLanguage/YesSpot 매뉴얼, 예제 코드, 개발 가이드 문서**를 받을 수 있습니까?
프로필 이미지
dbals
2026-07-09
36
글번호 232748
답변완료

예스 스팟 제공 데이터(프로그램 매매, 체결강도, 외국인 선물 매매)

아래와 같은 내용도 예스스팟을 통해 구현할 수 있나요?1. 예스스팟에서 프로그램 매매 순매수/매도 금액 실시간으로 가져올 수 있나요?(실시간 아니면 분단위라도)2. 예스스팟 종목객체에서 체결강도 데이터 제공되나요? (상승형체결량/하락형체결량)3. 외국인 선물 매매동향을 참조데이터객체로 실시간 가져올 수 있나요?(실시간 아니면 분단위라도)혹시 위의 1~3이 예스랭귀지로도 가능할까요?감사합니다.
프로필 이미지
쭈니 서울
2026-07-08
42
글번호 232740
답변완료

특정화면 데이터를 예스스팟으로 활용하는 방법이 궁금합니다.

안녕하세요. 특정 종목의 프로그램매매 데이터를 실시간으로 가져와서 예스스팟에서 활용하고 싶은데 어떻게 진행해야 하는지 궁금합니다.현재 IM 증권 예스 트레이더를 사용중이고,4202 종목별 프로그램매매의 데이터를 실시간으로 가져오고 싶은데방법을 알 수 있을까요?먼가 DataManager을 이용하여 DDE객체로 연결? 해서 진행해야 할거 같은데, 모르겠습니다.
프로필 이미지
spinky
2026-07-08
38
글번호 232738