커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6803
글번호 230811
답변완료
지표 도움을 요청합니다.
안녕하세요?아래 거래량 수식에 이동평균선 5, 10, 20선을 넣을 수 있도록 부탁드려봅니다.감사합니다.====================================input : R(0),G(0),B(0);var : SC(0),SCV(0),sum(0),hh(0),ll(0),SCV1(0);SC = (C-O)/(H-L);SCV = SC*v; if Bdate != Bdate[1] Then{ sum = SCV; HH = sum; LL = sum; SCV1 = SCV;}else{ sum = sum + SCV; if hh > sum Then hh = sum; if ll < sum Then ll = sum;} if CurrentDate == sDate Then{ plot1(sum,"vs"); Plot2(HH,"최고"); Plot3(HH-(HH-LL)*0.25,"25%"); Plot4(HH-(HH-LL)*0.618,"61.8%"); Plot5(HH-(HH-LL)*0.5,"50.0%"); Plot6(HH-(HH-LL)*0.382,"38.2%"); Plot7(HH-(HH-LL)*0.75,"75%"); Plot8(LL,"최저"); Plot10(sum+150,"sum+250"); Plot11(sum-150,"sum-250"); Plot12(HH-(HH-LL)*0.125,"12.5%"); Plot13(HH-(HH-LL)*0.875,"87.5%"); plot14(SCV1+100,"첫봉종가+100"); plot15(sum+05,"vs2",Rgb(R,G,B)); Plot16(HH-(HH-LL)*0.253,"26%"); Plot17(HH-(HH-LL)*0.753,"76%"); plot9(SCV1,"첫봉종가"); plot18(SCV1+100,"첫봉종가+100"); plot19(SCV1-100,"첫봉종가-100"); Plot20(HH-(HH-LL)*0.48,"49.5%"); Plot21(HH-(HH-LL)*0.51,"50.5%"); Plot22(HH-(HH-LL)*0.503,"50.3%"); Plot23(HH-(HH-LL)*0.497,"49.7%"); Plot24(HH+80,"최고+50"); Plot25(LL-80,"최저-50"); plot26(sum+200,"vs+200"); plot27(sum-200,"vs-200"); PlotBaseLine2(40,"기준라인+40"); PlotBaseLine3(-40,"기준라인-40");} PlotBaseLine1(0,"기준라인 0"); PlotBaseLine4(500,"기준라인+500"); PlotBaseLine5(-500,"기준라인-500");
2026-07-29
74
글번호 233015
답변완료
수식을 수정부탁드립니다.
// 요청: 최초 제공하신 수식을 현재 수정된 재진입 판단 로직으로 변환// 전략식(modified): 최초 수식 구조 유지 + 엄밀한 재진입 판단(시도가격/완료체결가 보정 포함)Input : StartDate(20260728); // 매매 시작일 (YYYYMMDD)Var : Use200MAFilter(1); // 200일 MA 필터 사용 여부: 1=적용, 0=미적용Var : MAFilterLen(200); // 필터용 이동평균 기간Var : ShortLen(6), LongLen(20), StopLossTicks(0), ProfitTargetTicks(0);Var : TotalTaxPercent(0.315); // 세금/수수료 합계(%)var : maShort(0), maLong(0), maFilter(0);var : requiredPct(0);// 추가 변수: 완료체결가 및 시도가격 추적Var : LastLongCompletedFillPrice(0), LastShortCompletedFillPrice(0);Var : LastLongAttemptPrice(0), LastShortAttemptPrice(0);Var : LastReservedPrice(0), LastReservedType("");Var : prevTotalTrades(0), prevMarketPos(0);// 이동평균 계산maShort = MA(C, ShortLen);maLong = MA(C, LongLen);maFilter = MA(C, MAFilterLen); // 필터용 이동평균// 필요한 최소 세후 수익률requiredPct = TotalTaxPercent + 0.5; // 백분율 기준// 이전 봉 상태prevTotalTrades = TotalTrades[1];prevMarketPos = MarketPosition[1];// 완료거래 감지 및 체결가 보정If TotalTrades > prevTotalTrades Then{ Var : estimatedFill(0); estimatedFill = EntryPrice(1); If LastReservedType == "ATSTOP" Then { If prevMarketPos <= 0 And MarketPosition == 1 Then estimatedFill = max(LastReservedPrice, NextBarOpen); Else If prevMarketPos >= 0 And MarketPosition == -1 Then estimatedFill = min(LastReservedPrice, NextBarOpen); } Else If LastReservedType == "ATLIMIT" Then { If prevMarketPos <= 0 And MarketPosition == 1 Then estimatedFill = min(LastReservedPrice, NextBarOpen); Else If prevMarketPos >= 0 And MarketPosition == -1 Then estimatedFill = max(LastReservedPrice, NextBarOpen); } If prevMarketPos <= 0 And MarketPosition == 1 Then LastLongCompletedFillPrice = estimatedFill; Else If prevMarketPos >= 0 And MarketPosition == -1 Then LastShortCompletedFillPrice = estimatedFill; Else { If MarketPosition == 1 Then LastLongCompletedFillPrice = EntryPrice(1); Else If MarketPosition == -1 Then LastShortCompletedFillPrice = EntryPrice(1); } // 완료 시도 초기화 If prevMarketPos <= 0 And MarketPosition == 1 Then LastLongAttemptPrice = 0; If prevMarketPos >= 0 And MarketPosition == -1 Then LastShortAttemptPrice = 0; LastReservedPrice = 0; LastReservedType = "";}// 매수진입 (원본 로직 유지: Bdate 조건 및 MA필터) - 재진입 판단만 강화If Bdate >= StartDate And CrossUp(maShort, maLong) Then{ If (Use200MAFilter == 0 Or C > maFilter) Then { Var : comparePrice(0); comparePrice = 0; If LastLongAttemptPrice > 0 Then comparePrice = LastLongAttemptPrice; Else If LastLongCompletedFillPrice > 0 Then comparePrice = LastLongCompletedFillPrice; If MarketPosition == 0 Or (MarketPosition == 1 And (comparePrice == 0 Or C < comparePrice)) Then { Buy("매수", onclose, Def); // 시도가격 기록(피라미딩 비교용) LastLongAttemptPrice = C; } }}// 롱포지션 청산 (원본 로직 유지, requiredPct 적용)If Bdate >= StartDate And MarketPosition == 1 And CrossDown(maShort, maLong) And C >= AvgEntryPrice*(1+(requiredPct)/100) Then ExitLong("매수청산", onclose, Def);// 매도진입 (원본 로직 유지) - 재진입 판단 강화If Bdate >= StartDate And CrossDown(maShort, maLong) Then{ If (Use200MAFilter == 0 Or C < maFilter) Then { Var : comparePriceS(0); comparePriceS = 0; If LastShortAttemptPrice > 0 Then comparePriceS = LastShortAttemptPrice; Else If LastShortCompletedFillPrice > 0 Then comparePriceS = LastShortCompletedFillPrice; If MarketPosition == 0 Or (MarketPosition == -1 And (comparePriceS == 0 Or C > comparePriceS)) Then { Sell("매도", onclose, Def); LastShortAttemptPrice = C; } }}// 숏포지션 청산If Bdate >= StartDate And MarketPosition == -1 And CrossUp(maShort, maLong) And C <= AvgEntryPrice*(1-(requiredPct)/100) Then ExitShort("매도청산", onclose, Def);// 포지션 완전청산 시 시도기록 초기화If MarketPosition == 0 And prevMarketPos != 0 Then{ LastLongAttemptPrice = 0; LastShortAttemptPrice = 0;}위 수식에서 당일 매수/재진입/청산이 이루어지고 다음날에는 청산신호 전까지만 이루어지고 청산이 되면 이후 매수신호가 나오지 않도록 부탁드립니다. 예스나와 한참을 해도 수정이 되지 않아 부탁드립니다.
2026-07-29
113
글번호 233014
답변완료
알림창에 대해서 문의드립니다.
안녕하세요그래프 창을 띄워놓고 있으면은 우측 하단부분에 "파생시장 상하한가 예고" 라는 작은 알림창이 계속 뜹니다.뜨지않게 하는 방법은 없는지요?
2026-07-29
40
글번호 233013
답변완료
선물에서 난 신호로 옵션에 적용
선물에서 난 신호를 지정한 옵션 가격에 매매하려면 어떻게 해야하나요?
2026-07-29
55
글번호 233010
답변완료
정규장 기준 1분봉차트 첫봉 시작시간이 09:02 인데 왜그런가요 변경가능한가요
2분봉은 09:02 3분봉은 09:03 인데 1분봉만 09:02 로 되어 키움차트에서 만든 신호수식을 예스 언어로 변경하여 예스랭귀지 편집기 저장후 적용시키면 신호발생시간이 다릅니다 해결할수 있나요? 키움차트에서 만든 신호수식이 원본과 일치하여 예스차트에서도 같은시간에 발생하도록 원합니다 시간이 일치하지 않으면 자동매매 시스템 가동시 신호가 어긋나고 달라집니다 이를 해결할수 있을까요 ? 수식코드를 변경해야하는건가요? 1분봉 시간셋팅이 회사 자체적으로 임의로 그렇게 해놓은건가요?? 키움에서 만들어 비교 검증하던 신호를 원본과 일치하도록 예스언어로 변환 시켜서 가동시켰을때 키움차트에서 신호 발생하던 시간과 예스차트에서도 정확히 일치시키고 싶습니다 그리고 자동매매또한 정확히 일치시키도록 원합니다 최적화 해결방안을 제시해 주시면 감사하겠습니다 진입 분할 매수 비중조절 슬리피지 분할익절 트레일링 등의 조건은 상황에따라 달라질수도 있고 오차가 있을수 있는점을 항상 변수로 두고 오차를 최소화하는 추적검증을 오랜시간 지켜봐야 하겠지만진입 신호발생 시간은 정확히 일치시키고 싶고 생각을 계산으로 표현한 수식이 신호 발생 시점 과 일치되도록 최적화 할수있기를 원합니다 도움 부탁드립니다
2026-07-29
72
글번호 233008
답변완료
문의 드립니다.
안녕하세요.무더운 날씨에도 수고 많으십니다.아레의 신호 수식에 대한 종목 검색식을 부탁 드립니다. A=BBandsC(10,2);AUP=BBandsUp(10,2);B=ADX(7);BS=EAVG(ADX(7),10);B1=(highest(H,18) - C) / (highest(H, 18) - lowest(L, 18)) * (-100);B2=(highest(H,9) - C) / (highest(H, 9) - lowest(L, 9)) * (-100);BB=(C-avg(C,10)) / Stdev(c,10);CROSSUP(B,BS) AND C>A AND O<C AND (B1>-50 OR B2>-50) AND BB>0감사합니다.
2026-07-28
69
글번호 233007
답변완료
파락볼릭 관련 매매 문의
수고하십니다1. 매수 조건MACD 오실레이터가 0보다 큰 상태에서파라볼릭이 상향돌파 할때2. 청산 조건파라볼릭이 하향돌파 할때위 조건을 기반으로 주식 매매를 하려고 하니 조건문 작성 부탁 드립니다감사합니다
2026-07-28
51
글번호 233006
답변완료
매수매도건수비율차이 표시 지표
안녕하세요.. 매수매도건수비율차이를 보조지표란에 나타낼 수 있도록 프로그래밍 부탁드립니다.1. 첨부화일 1에 있는 것처럼 예스트레이더 화면 3101번에서 매도건수와 매수건수를 추출하여 비율을 계산합니다.2. 첨부화일 2에 있는 것처럼 비율차이구간을 40% 이상, 25~39%, 15~24%구간, 1~14%구간으로 나누어 각 구간별로 크기와 색깔이 다른 표식바를 설정합니다... 화일은 견본 예시이니 가능한 한 이대로 해 주시면 좋을 것 같고 이대로 하기 어려우면 구간별로 색깔과 크기를 다르게 하여 구분할 수만 있게 해 주시면 됩니다.3. 첨부화일 3은 보조지표란에 나타내고 싶은 모양입니다... kospi200 선물의 경우 주간장과 야간장이 있던데 가능하면 주간장 뿐만 아니라 야간장에서도 사용할 수 있도록 부탁드립니다.... 감사합니다.
2026-07-28
79
글번호 233002
답변완료
지표질문입니다
1.20캔들 천정에서 천정 포함 1번째 양봉 저가 ,2번째 양봉 저가 ,3번째 양봉 저가 가운데 가장 낮은 가격을 그린다2.20캔들 바닥에서 바닥 포함 1번째 음봉 고가 ,2번째 음봉 고가 ,3번째 음봉 고가 가운데 가장 높은 가격을 그린다감사합니다ㅡㅡㅡ아래에 만들어주신 수식은 현재 시점에서 수식을 만들어주셨습니다제가 원하는 수식은 현재 시점 기준이 아니라20캔들 천정 기준 좌측 캔들 카운팅입니다20캔들 바닥 기준 좌측 캔들 카운팅입니다감사합니다ㅡㅡㅡㅡ안녕하세요예스스탁입니다.var : a1(Nan),a2(nan),b1(Nan),b2(Nan);if H == highest(H,20) Then{a1 = 0;a2 = 0;}if C > O Then{a1 = a1+1;if a1 <= 3 and (a2 == 0 or (a2 > 0 and l < a2)) Thena2 = l;if a1 == 3 Thenvar1 = a2;}if L == lowest(L,20) Then{b1 = 0;b2 = 0;}if C < O Then{b1 = b1+1;if b1 <= 3 and (b2 == 0 or (b2 > 0 and h > b2)) Thenb2 = h;if b1 == 3 Thenvar2 = b2;}if var1 > 0 ThenPlot1(var1);ElseNoPlot(1);if var2 > 0 ThenPlot2(var2);ElseNoPlot(2);즐거운 하루되세요
2026-07-27
64
글번호 233000