커뮤니티
예스스팟 Q&A
강심장 님에 의해서 삭제되었습니다.
2026-02-15
41
글번호 230573
열심히하는 님에 의해서 삭제되었습니다.
2026-02-13
59
글번호 230549
답변완료
진입이 안됩니다. 설정확인부탁
예스스팟을 위와같이 설정햇는데 진입신호에 진입이 안되는데 설정확인 부탁드립니다.
2026-02-12
82
글번호 230537
관리자에 의해 예스랭귀지 QnA로 이동되었습니다.
2026-02-12
11
글번호 230530
답변완료
파워종목검색 오류
아무리 코드를 짜도 저장된 파워종목검색을 찾지 못하는지 파일 이름도 맞게 되었고 파워종목검색에서 저장 하였는데 해당 검색식을 찾지 못하네요 혹시 예스랭규ㅣ지로 만든 검색식을 파워종목에서 불러와서 저장해서 안될까요?코드가 잘못되엇는지 봐주세요/* [예스스팟 통합: 터틀 전략 - 검색식 tur 전용] */// =========================================================// 1. 설정 변수// =========================================================var SearchName = "tur"; // 파워종목검색 이름var RiskPercent = 0.01; // 자산의 1% 리스크var EntryPeriod = 55; // 55일 신고가var ExitPeriod = 20; // 20일 신저가var ATRLen = 20; var LongFilter = 200; var MaxUnits = 4; var SearchTimerID = 1; // 검색 타이머var CalcTimerID = 2; // 매매 감시 타이머var ItemState = {}; var ChartList = []; var IsSearching = false; // 현재 검색 중인지 확인function Main_OnStart() { Main.MessageLog("=========================================="); Main.MessageLog("▶ [1단계] 시스템 가동 시작 (검색식: " + SearchName + ")"); // 계좌 잔고 확인 var money = Account1.GetBalanceETCinfo(0); Main.MessageLog("▶ 현재 계좌 잔고: " + money.toLocaleString() + "원"); // 시작 2초 후 첫 검색 실행 Main.SetTimer(SearchTimerID, 2000); // 5초마다 매매 로직 감시 Main.SetTimer(CalcTimerID, 5000);}// [2] 타이머 이벤트function Main_OnTimer(nEventID) { if (nEventID == SearchTimerID) { // 응답을 받을 때까지 10초마다 계속 요청 (응답 없으면 무한 재시도) Main.MessageLog("▶ [2단계] 서버에 '" + SearchName + "' 검색 요청 전송"); Main.ReqPowerSearch(SearchName); IsSearching = true; // 검색 주기를 10초로 짧게 설정 (응답 받으면 OnRcvSearchResult에서 60초로 늘림) Main.KillTimer(SearchTimerID); Main.SetTimer(SearchTimerID, 10000); } if (nEventID == CalcTimerID) { if (ChartList.length > 0) { for (var i = 0; i < ChartList.length; i++) { RunTurtleLogic(ChartList[i]); } } }}// [3] 검색 결과 수신 (서버 대답)function Main_OnRcvSearchResult(nCount) { IsSearching = false; // 응답을 받았으므로 다음 검색 주기를 정상(60초)으로 변경 Main.KillTimer(SearchTimerID); Main.SetTimer(SearchTimerID, 60000); Main.MessageLog("▶ [3단계] 서버 응답 도착! 발견 종목: " + nCount + "개"); if (nCount > 0) { for (var i = 0; i < nCount; i++) { var sCode = Main.GetSearchResult(i); // 이미 감시 중인 종목인지 확인 var isExist = false; for (var j = 0; j < ChartList.length; j++) { if (ChartList[j].GetCode() == sCode) isExist = true; } if (!isExist) { Main.MessageLog(" >> 신규 종목 [" + sCode + "] 차트 생성 요청"); var chartSet = new ReqChartItem(sCode, 1, CHART_PERIOD_DAILY, 500, CHART_REQCOUNT_BAR, false, false); Main.ReqChartEx(chartSet); } } } else { Main.MessageLog(" ?? 현재 조건에 맞는 종목이 0개입니다."); }}// [4] 차트 객체 생성 완료function Main_OnRcvChartEx(oChart) { var sCode = oChart.GetCode(); ChartList.push(oChart); if (!ItemState[sCode]) { ItemState[sCode] = { unitCount: 0, lastPrice: 0 }; } Main.MessageLog("▶ [4단계] 종목 [" + sCode + "] 감시 시작");}// [5] 터틀 매매 로직function RunTurtleLogic(sChartEx) { var sCode = sChartEx.GetCode(); if (sChartEx.GetBarCount() < LongFilter) return; var curMoney = Account1.GetBalanceETCinfo(0); var vN = Cal_ATR(sChartEx, ATRLen); var vHighEntry = Cal_Highest(sChartEx, 1, EntryPeriod); var vLowExit = Cal_Lowest(sChartEx, 1, ExitPeriod); var vMaLong = Cal_SMA(sChartEx, LongFilter); var curClose = sChartEx.GetClose(0); var curHigh = sChartEx.GetHigh(0); // 1유닛 수량 var vPosSize = 0; if (vN > 0) { vPosSize = Math.floor((curMoney * RiskPercent) / (vN * 2)); } Account1.SetBalanceItem(sCode, 0); var currentQty = Account1.Balance.count; // 매수 및 피라미딩 if (currentQty == 0 && vPosSize > 0) { if (curHigh > vHighEntry && curClose > vMaLong) { Account1.OrderBuy(sCode, vPosSize, 0, 1); ItemState[sCode].unitCount = 1; ItemState[sCode].lastPrice = curClose; Main.MessageLog("[" + sCode + "] Unit 1 진입 시도"); } } else if (currentQty > 0 && ItemState[sCode].unitCount < MaxUnits) { var nextEntry = ItemState[sCode].lastPrice + (vN * 0.5); if (curHigh >= nextEntry) { Account1.OrderBuy(sCode, vPosSize, 0, 1); ItemState[sCode].unitCount++; ItemState[sCode].lastPrice = curClose; Main.MessageLog("[" + sCode + "] Unit " + ItemState[sCode].unitCount + " 추가매수"); } } // 청산 if (currentQty > 0) { var stopPrice = ItemState[sCode].lastPrice - (vN * 2); if (curClose <= stopPrice || curClose < vLowExit || curClose < vMaLong) { Account1.OrderSell(sCode, currentQty, 0, 1); ItemState[sCode] = { unitCount: 0, lastPrice: 0 }; Main.MessageLog("[" + sCode + "] 전량 청산 로직 가동"); } }}// 보조 지표 함수function Cal_SMA(c, p) { var s=0; for(var i=0; i<p; i++) s+=c.GetClose(i); return s/p; }function Cal_Highest(c, s, p) { var m=0; for(var i=s; i<s+p; i++) m=Math.max(m, c.GetHigh(i)); return m; }function Cal_Lowest(c, s, p) { var m=9e9; for(var i=s; i<s+p; i++) m=Math.min(m, c.GetLow(i)); return m; }function Cal_ATR(c, p) { var st=0; for(var i=0; i<p; i++) { var t = Math.max(c.GetHigh(i)-c.GetLow(i), Math.abs(c.GetHigh(i)-c.GetClose(i+1)), Math.abs(c.GetLow(i)-c.GetClose(i+1))); st += t; } return st/p;}
2026-02-09
102
글번호 230466
답변완료
[선물] 청산 확인 후 진입
YesSpot을 이용하여 선물 자동매매를 구현하고 있습니다.선물 매매 시 Buy/Sell 시그널 발생하기 바로 직전에 ExitShort/ExitLong 시그널이 발생하면 청산 주문을 내는데, 청산주문 후에 따르는 OnOrderResponse/OnNotifyFill이 발생하기 전에 빠르게 Buy/Sell 시그널이 발생하여 청산주문과 같은 포지션으로 진입주문을 내게되는데 이전 청산주문의 OnNotifyFill을 확인하고 진입주문할 수 있는 방법이 있을까요? 어떤 방법으로 청산 완료를 확인하고 재진입할 수 있는지 조언 부탁드립니다. 감사합니다.
2026-02-08
102
글번호 230432
답변완료
LS증권 yestrader는 모의투자 계정으로
안녕하세요.LS증권 Yestrader는 모의투자 계정으로도로그인이 가능한가요?
2026-02-07
96
글번호 230422
답변완료
옵션미체결 주문의 가격정정 방법
아래 게시글에 적어 놓았던 내용인데,, 좀 자세히 적어 놓아야 하겟네요..위 내용은 예를들어 호가창에 수동으로 진입시 아무 위치(0.76)에나 마우스로 매수진입을 하면, 내가 진입기준에 맞춰 정해진 위치로 자동 이동하는 로직을 만들려고 하고 있습니다. 캡쳐 사진에서 보듯이 1번 : 수식에 의해 정해진 기준값을 잡은 위치는 0.87 가격(ex. 5이평선, 20이평선, 볼밴하단, 시가, 저가, 피봇,..등등등)입니다. (지금 현제가는 0.87보다 위쪽에 형성되어 있읍니다), 그리고 아무 위치(현재는 0.76)에나 마우스로 1 계약 매수 진입을 하면, 내가 기준에 맟춰 매수 진입 위치로 정해준 지정가 0.87로 자동 이동하게 만드는게 목적임. 마우스로 호가주문창의 0.76에 1계약 매수를 하면, 예스스팟의 2번 에서 보듯이 주문번호 #1823이 뜨고 0.76 가격의 위치를 잡았다고 표시가 됨. 이제 이 0.76의 가격이 0.87 자리로 이동을 해야 하는데, 여러가지 방법을 사용해 보았읍니다. 현제 캡쳐 사진에서 보는1. [취소 -> 재주문]의 로직은 MyOrderID = Account1.OrderReplacePrice(MyOrderNum, usePrice); 를 사용한 결과이고.. ==> 테스트 결과 위치를 잡고 ,어느 자리로 이동시켜야 한다는 것 까지는 잡아내는데, 가격의 위치 이동은 시키지 못함. 2.가격 위치 정정은 MyOrderID = Account1.OrderReplace(MyOrderNum, usePrice,qty); ==> 이 명령어로 사용해 보았는데,, 역시 주문번호 생성되고, 현제 위치도 잡아내고, 이동시킬 가격대도 잡았는데,, 실제로 이동은 되지 않았음. (그림1참조)3. ordercancel 도 실제로 일어나지 않고 있음. ** 에러메세지.사유코드는 모두 0 으로 반환됨.(그림2 참조)
2026-02-07
122
글번호 230419
답변완료
옵션 미체결 주문의 가격 정정이 안됩니다.
- 옵션 미체결 주문의 가격 정정이 안 됩니다- OrderReplacePrice() 함수 반환값이 0입니다- OrderCancel() 함수도 0을 반환합니다- 어떻게 해야 하나요?
2026-02-06
103
글번호 230402
강심장 님에 의해서 삭제되었습니다.
2026-02-06
1
글번호 230393