커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
4346
글번호 230811
지표
답변완료

지표문의

1.지표문의 INPUT: Lookback(500), // 최근 분석할 봉 수 RowSize(200), // 가격 구간 개수 (최대 500) BarWidth(2); VAR: priceMin(9999999), priceMax(0), priceStep(0), i(0), j(0), lower(0), upper(0), level(0), maxVol(0), rowCount(0); ARRAY: volArr[500](0) ; // 최대 500 구간 거래량 저장 // 1) 입력값 제한 rowCount = RowSize; IF rowCount > 500 THEN rowCount = 500; // 2) 최소/최대 가격 찾기 priceMin = 9999999; priceMax = 0; FOR i = 0 TO Lookback-1 BEGIN IF HIGH[i] > priceMax THEN priceMax = HIGH[i]; IF LOW[i] < priceMin THEN priceMin = LOW[i]; END; // 3) 구간 폭 계산 priceStep = (priceMax - priceMin) / rowCount; IF priceStep <= 0 THEN priceStep = 1; // 4) 구간별 거래량 초기화 FOR j = 0 TO rowCount-1 BEGIN volArr[j] = 0; END; // 5) 각 봉의 거래량을 해당 가격구간에 누적 FOR i = 0 TO Lookback-1 BEGIN FOR j = 0 TO rowCount-1 BEGIN lower = priceMin + priceStep * j; upper = priceMin + priceStep * (j + 1); IF (HIGH[i] >= lower) AND (LOW[i] <= upper) THEN volArr[j] = volArr[j] + VOLUME[i]; END; END; // 6) POC(최대 거래량) 찾기 maxVol = 0; FOR j = 0 TO rowCount-1 BEGIN IF volArr[j] > maxVol THEN maxVol = volArr[j]; END; // 7) 히스토그램 출력 (현재봉만) FOR j = 0 TO rowCount-1 BEGIN level = priceMin + priceStep * j + priceStep / 2; IF CURRENTBAR = 0 THEN PLOT(j, volArr[j], "V"+NUMTOSTR(j,0)); END; // 8) POC 출력 FOR j = 0 TO rowCount-1 BEGIN IF volArr[j] = maxVol THEN BEGIN level = priceMin + priceStep * j + priceStep / 2; IF CURRENTBAR = 0 THEN PLOT(rowCount+1, level, "POC"); END; END; CURRENTBAR 를 값을 대입할수있는 변수로 수정 좀해주세요 검증이 안됨 2.그럼 수고하세요
프로필 이미지
성공예견
2025-09-15
403
글번호 194014
지표
답변완료

종목검색입니다

금일 저가가 20캔들 천정 포함 8캔들 최저가 인 종목 검색 감사합니다
프로필 이미지
para
2025-09-15
206
글번호 194009
종목검색
답변완료

추가 문의

> 수고 많으십니다. var1 = IFf(C>O,1,-1); 위 var1은 '현재가가 시가 위면 1, 아래면 -1'을 표시한 것인데 여기에 '시가가 전일 종가보다 높고'라는 조건을 추가하여, 즉 '시가가 전일 종가보다 높고, 현재가가 시가보다 위이면1, 아래면 -1'을 표시하는 식 부탁드립니다.
프로필 이미지
가람봉
2025-09-15
249
글번호 193999
지표
답변완료

수식 문의

안녕하세요? input: n1(10), n2(20), n3(50); n(10)봉 전의 봉과 n2(20)봉 전의 봉과 n3(50)봉 전의 봉을 표시하고 싶습니다. 1) 지표식: 10봉 전과 20봉 전, 50봉 전에는 1 값을 갖고, 나머지 봉들에서는 0 값을 갖는 지표. 2) 강조식?: 10봉 전의 봉과 20봉 전의 봉, 50봉 전의 봉에 뭔가 표시를 하는 식. 그런데, 강조식의 똥그래미가 너무 작은 거 같은데, 좀 더 크게 하는 방법이 있으면 알려주시기 바랍니다. 뭔가 크기를 조절할 수 있는 똥그래미를 봉의 위나 아래에 그릴 수 있으면 좋겠습니다. 강조식이 아니어도 좋습니다. 3) 배경색 바꾸기: 이건 지표식인가요? 10봉 전의 봉부터 20봉 전의 봉까지를 예컨대 노란 배경색으로 칠하고, 20봉전 ~ 50봉 전까지는 다른 배경색으로 칠하기 감사합니다.
프로필 이미지
에구머니
2025-09-15
292
글번호 193995
지표
답변완료

수식문의입니다

input : R기간(14),과매도율(25),과매수율(75)); var : A(0),BD(False),BU(False),FU(False),FD(False); A=RSI(R기간); BD=CrossDown(A,과매도율); BU=CrossUp(A,과매도율; FU=CrossUp(A,과매수율); FD=CrossDown(A,과매수율); 수식1) RSI선이 기준선(과매도율)선을 하향이탈하거나, 상향돌파할때의 종가를 표시하는 라인 수식2) RSI선이 기준선(과매수율)선을 상향돌파하거나, 하향이탈할때의 종가를 표시하는 라인 if BD == true Then BBD = C; 상기처럼 한개씩은 수식이 가능한데 BD이거나 BU이거나 할때의 수식은 잘 안되네요. 부탁드립니다
프로필 이미지
해피오
2025-09-15
248
글번호 193994
지표
답변완료

수식 문의

안녕하세요. 키움증권의 수식인 Valuewhen 을 돌파하는 종목을 검색하고자 하는데 예스랭귀지의 Valuewhen 을 돌파하는 종목 검색의 로직이 궁금합니다. 다음 두 가지 예를 들어 주시면 고맙겠습니다. (1) 박스라인 돌파 A=Lowest(L(1),기간); B=Highest(H(1), 기간); Valuewhen(1,BarsSince(L<A(1))==(기간-P),B) [기간: 20 / P: 3] (2) 최저 거래량 라인 돌파 A1 = V<lowest(V(1), Period); Valuewhen(1, A1, C) [period: 120]
프로필 이미지
saeroi
2025-09-14
262
글번호 193993
종목검색
답변완료

부탁합니다.

아래 지표로 시스템식을 부탁합니다. 기본사항 : 투자금액을 100% 로 잡았을때 30%를 3회까지 분할매수 ( 예: 1천만원일때 1회 3백만원씩 신호나올때마다 3회까지 매수 ) 매수 1. 밴드의 중심선이 상승일때 and 2. 저점이 밴드 하단밖에 있을때 양봉이면 매수 청산 1. 시가가 밴드안에서 시작해서 양봉으로 상단밴드밖에서 종가일때 or 2. 익절 1% ~ (변수로 부탁합니다) or 3. 종가기준 3% 손절 ( 변수로 부탁합니다.) or 4. 매수후 중심선이 하락으로 바뀌면 본절청산 input : HalfLength(60); input : PriceType(5);#1: Close, 2:Open, 3:High, 4:Low, 5:Median, 6:Typical, 7:Weighted, 8:Average input : AtrPeriod(60); input : AtrMultiplier(4); input : TMAangle(2); input : crossUpInput(false); input : crossDownInput(false); input : comingBackInput(false); input : onArrowDownInput(false); input : onArrowUpInput(false); input : colorDOWN(red); input : colorUP(green); input : colorBands(Gray); input : cautionInput(true); Array : TX1[100](0),TX2[100](0),TX3[100](0); var : cnt(0),price(0),colorBuffer(Nan); var : asum(0),ATR(0),i(0),j(0); var : sum(0),sumw(0),k(0),tmac(0),tmau(0),tmad(0); var : pastTmac(nan),pastTmau(nan),pastTmad(Nan); var : tmau_temp(nan),tmac_temp(Nan),tmad_temp(nan); var : point(0),reboundD(0),reboundU(0),caution(0),last(False); For cnt = 0 to 99 { Text_Delete(TX1[cnt]); Text_Delete(TX2[cnt]); Text_Delete(TX3[cnt]); } if PriceType == 1 Then Price = close; Else if PriceType == 2 Then Price = open; Else if PriceType == 3 Then Price = high; Else if PriceType == 4 Then Price = low; Else if PriceType == 5 Then Price = (high + low) / 2; Else if PriceType == 6 Then Price = (high + low + close) / 3; Else if PriceType == 7 Then Price = (high + low + close + close) / 4; Else Price = (high + low + close + open)/ 4; //MAIN for i = HalfLength downto 0 { //ATR asum = 0.0; for j = 0 to AtrPeriod - 1 { asum = asum + max(high[i + j + 10], close[i + j + 11]) - min(low[i + j + 10], close[i + j + 11]); } atr = asum/AtrPeriod; //BANDS sum = (HalfLength + 1) * Price[i]; sumw = (HalfLength + 1); k = HalfLength; for j = 1 to HalfLength { sum = sum + k * Price[i + j]; sumw = sumw + k; if (j <= i) Then { sum = sum + k * Price[i - j]; sumw = sumw + k; } k = k -1; } tmac = sum/sumw; tmau = tmac+AtrMultiplier*atr; tmad = tmac-AtrMultiplier*atr; //CHANGE TREND COLOR if pastTmac != 0.0 Then { if tmac > pastTmac Then colorBuffer = colorUP; if tmac < pastTmac then colorBuffer = colorDOWN; } //SIGNALS reboundD = 0.0; reboundU = 0.0; caution = 0.0; if pastTmac != 0.0 Then { if (high[i + 1] > pastTmau and close[i + 1] > open[i + 1] and close[i] < open[i]) Then { reboundD = high[i] + AtrMultiplier * atr / 2; if (tmac - pastTmac > TMAangle * point) Then { caution = reboundD + 10 * point; } } if (low[i + 1] < pastTmad and close[i + 1] < open[i + 1] and close[i] > open[i]) Then { reboundU = low[i] - AtrMultiplier * atr / 2; if (pastTmac - tmac > TMAangle * point) then { caution = reboundU - 10 * point; } } } //LAST REAL if i == HalfLength Then { last = true; tmau_temp = tmau; tmac_temp = tmac; tmad_temp = tmad; } //DRAW HANDICAPPED BANDS if i < HalfLength Then { TX1[i] = Text_New(NextBarSdate[i],NextBarStime[i],Tmau,"-"); Text_SetColor(TX1[i],colorBands); Text_SetStyle(TX1[i],2,2); TX2[i] = Text_New(NextBarSdate[i],NextBarStime[i],Tmac,"-"); Text_SetColor(TX2[i],colorBuffer); Text_SetStyle(TX2[i],2,2); TX3[i] = Text_New(NextBarSdate[i],NextBarStime[i],Tmad,"-"); Text_SetColor(TX3[i],colorBands); Text_SetStyle(TX3[i],2,2); } } //DRAW REAL BANDS plot1(iff(last , tmau_temp , tmau), "TMA Up", colorBands); plot2(iff(last , tmac_temp , tmac), "TMA Mid", colorBuffer); plot3(iff(last , tmad_temp , tmad), "TMA Down", colorBands); FixPlotShift(1,-HalfLength); FixPlotShift(2,-HalfLength); FixPlotShift(3,-HalfLength);
프로필 이미지
as8282
2025-09-14
424
글번호 193992
시스템
답변완료

수식변환 수정 요청

보완사항이 있어서 다시 글을 올립니다. 전화까지 주셨는데 이렇게 다시 글을 쓰게 되었네요.ㅠ 지난 질문에서 전일고가 라인 돌파와 함께, 현재가가 전일 변동폭(50%+금일시가) 라인 돌파, 현재가가 볼린저(60,2) 상단 돌파 하는 검색식을 만들고자 합니다. 단 현재가가 전일 고가 캔들의 저가 라인 위에 있어야만 한다고 했었습니다. 전일고가 라인 돌파와 함께라는 전제를 보완(조건 추가)하고 싶습니다. 주가가 전일 고가 캔들의 저가 라인 위에 있으면서(전제 조건) ->(1) 전일 고가 라인 돌파와 함께 변동폭 라인 돌파 또는 볼린저(602.2) 돌파 또는 ->(2) 전일 고가 라인 아래에 있을 때(저가라인과 고가라인 중간에 위치) 변동폭 돌파 또는 볼린저(60.2) 돌파 또는 ->(3) 전일 고가 라인 위에 있을 때 변동폭 돌파 또는 볼린저(60.2) 돌파 로 수정 보완 부탁 드립니다. (1), (3)은 같은 유형의 조건이지만 분리해주시면 고맙겠습니다. 테스트를 통해 조건을 조정 해보고 싶습니다. 주석 처리 꼭 부탁드립니다. 기타 거래대금 10억 이상, 거래량 20만주 이상, RSI(11) 50 이상 또는 돌파, 전일 종가 대비 시가 등락율(갭상승) 3% 이하, 위 모든 조건들이 당일 시가 대비 당일 종가 등락율 7% 범위 안에 만족 시 검색 되도록 하는 것은 동일 합니다. 부탁드립니다. ================================================================================= > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식변환 요청 > 안녕하세요 예스스탁입니다. var : DHlow(0),DHlow1(0); if sDate != sDate[1] then DHlow1 = DHlow[1]; if h == DayHigh Then DHlow = l; var1 = dayopen + (DayHigh(1)-DayLow(1))*0.5; var2 = BollBandUp(60,2); var3 = (highest(H,26)+lowest(L,26))/2; var4 = RSI(11); Condition1 = CrossUp(C,DayHigh(1)); Condition2 = DHlow > 0 and C > DHlow; Condition3 = CrossUp(c,var1); Condition4 = CrossUp(C,var2); Condition5 = CrossUp(C,var3); Condition6 = money >= 1000000000; Condition7 = Volume >= 200000; Condition8 = var4 >= 55 or CrossUp(var4,55); Condition9 = DayOpen <= DayClose(1)*1.03; Condition10 = c <= DayOpen*1.05 and C >= DayOpen*0.95; if Condition1 == true and Condition2 == true and Condition3 == true and Condition4 == true and Condition5 == true and Condition6 == true and Condition7 == true and Condition8 == true and Condition9 == true and Condition10 == true Then Find(1); 즐거운 하루되세요 ================================================================================= > saeroi 님이 쓴 글입니다. > 제목 : 수식변환 요청 > 현재가 전일 고가 발생 시의 저가(즉, 전일 고가 캔들의 저가)라인과 전일 고가라인 사이에서 전일고가 라인 돌파와 함께, 현재가가 전일 변동폭(50%+금일시가) 라인 돌파, 현재가가 볼린저(60,2) 상단 돌파 하는 검색식을 만들고자 합니다. 단 현재가가 전일 고가 캔들의 저가 라인 위에 있어야만 합니다. 전일고가 라인 돌파 가=highestSince(1, date!=date(1), H); Valuewhen(1, date!=date(1), 가(1)); 현재가가 전일고가캔들이 저가 라인 위 위치 가=highestSince(1, date!=date(1), H); 나=Valuewhen(1, 가==H, L); Valuewhen(1, date!=date(1), 나(1)); 변동폭 라인 돌파 가=dayhigh(1)-daylow(1); 나=dayopen()+A*0.5; 볼린저 (60,2) 상단 돌파 현재가가 일목균형표 기준선 돌파(3분 기준) 거래대금 10억 이상(3분 기준) 거래량 20만주 이상(3분 기준) RSI(11) 55 이상 또는 돌파 전일 종가 대비 시가 등락율(갭상승) 3% 이하 상승만 허용 위 모든 조건들이 당일 시가 대비 당일 종가 등락율 5% 범위 안에 만족 시 검색 3분봉 단타용으로 검색 활용하고자 하니 이를 감안하여 수식 만들어 주시면 고맙겠습니다.
프로필 이미지
saeroi
2025-09-14
389
글번호 193991
검색
답변완료

종목검색식 부탁드립니다

1. 아래지표를 참고하여, (수식2) "과매수" 를, 일봉기준으로 "5일중 2일이상"을 "과매수"하는 종목의 종목검색식 부탁드려요. ("몇일중 몇일이상" 은 변수로 처리해주세요) ----아래------- (수식1) 매수 i_wvf = ((high - lowest(C, 22)) / lowest(C, 22)) * 100; i_sDev = 2.0 * stdev(i_wvf, 20); i_midLine = avg(i_wvf, 20); i_upperBand = i_midLine + i_sDev; i_rangeHigh = (highest(i_wvf, 50)) * ph; i_wvf; (수식2) 과매수 i_wvf = ((high - lowest(C, 22)) / lowest(C, 22)) * 100; i_sDev = 2.0 * stdev(i_wvf, 20); i_midLine = avg(i_wvf, 20); i_upperBand = i_midLine + i_sDev; i_rangeHigh = (highest(i_wvf, 50)) * ph; if(i_wvf >= i_upperBand or i_wvf >= i_rangeHigh, i_wvf, 0); (수식3) 과매수이탈 i_wvf = ((H - lowest(C, 22)) / lowest(C, 22)) * 100; i_sDev = 2.0 * stdev(i_wvf, 20); i_midLine = avg(i_wvf, 20); i_upperBand = i_midLine + i_sDev; i_rangeHigh = (highest(i_wvf, 50)) * ph; ob = (i_wvf >= i_upperBand) or (i_wvf >= i_rangeHigh); if(ob,1,0); //os : OverBuy // 과매수 4회이상 연속후 이탈) if( ((ob(1)>0 and ob(2)>0 and ob(3)>0 and ob(4)>0) and ob == 0), i_wvf, 0); -지표조건설정 PH : 0.55
프로필 이미지
일지매7
2025-09-14
236
글번호 193989
종목검색