커뮤니티

예스랭귀지 Q&A

글쓰기

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

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

질문 부탁드립니다

수고하십니다 몇 가지 여쭤보겠습니다 질문1) aa[cnt]<h*1.15 and aa[cnt]>l*0.85 조건에 해당되는 aa[ ] 배열값을 ab[ ] 배열에 순서대로 넣으려고 하는데요 값이 제대로 안들어가는거 같네요 예를들어 aa[3], aa[5] 가 조건에 해당되면 ab[0] 에 aa[3] 값이, ab[1] 에 aa[5] 값이 들어가게 하려고 합니다 혹시 첫번째 for 문에서 aa[cnt] 에 사용됐던 cnt 변수가 이후에 중복 사용되면서 발생하는 문제일까요? cnt 대신 다른 변수를 사용했는데도 배열에 값이 안들어가긴 합니다 For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; } aa[0] = value1; For cnt=0 to 15 { ab[cnt]=0; } For cnt=0 to 5 { if aa[cnt]<h*1.15 and aa[cnt]>l*0.85 Then { For cns= 0 to 15 { ab[cns]=aa[cnt];} } } 질문2) 질문2번 3번 수식은 가장 아래에 첨부했습니다 (작성한 식이 x가 0~3일때 각 경우의 갯수를 구하고 그 중에서 최대값을 구하는 식이 맞죠?) 수식에서 aa[x] 값 (value4) 을 배열 ac[] 에 넣으려고 합니다 아래와 같이 작성하면 될까요?? value4 에 aa[x] 값을 저장한다음에 배열에 넣기 때문에 For cnt = 49 DownTo 1 { ac[cnt] = ac[cnt-1]; } ac[0]=value4; 를 가장 아래에 다시 작성하는게 맞을까요? 그리고 aa[cnt]=aa[cnt-1]; 할때 cnt 를 썼기 때문에 밑에서 x 를 사용한것 처럼 cnt와는 다른 변수를 사용해야되는게 맞나요?? 밑에서도 aa[] 에 cnt 를 쓰면 충돌을 하게 되나요? 질문3) 혹시 아래와 같이 작성해도 같은 의미가 되나요? For cnt = 49 DownTo 1 { For x = 0 to 3 { For y = 1 to (id[0]-id[1]) { if h[y]>aa[x] and l[y]<aa[x] then value2 = value2+1; } if Value3 == 0 or (Value3 > 0 and Value2 > Value3) Then { Value3 = Value2; Value4 = aa[x]; } } ac[cnt] = ac[cnt-1]; } ac[0]=value4; 감사합니다 아래는 수식입니다 For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; ac[cnt] = ac[cnt-1]; } aa[0] = value1; ac[0]=value4; Value2 = 0; Value3 = 0; Value4 = 0; For x = 0 to 3 { For y = 1 to (id[0]-id[1]) { if h[y]>aa[x] and l[y]<aa[x] then value2 = value2+1; } if Value3 == 0 or (Value3 > 0 and Value2 > Value3) Then { Value3 = Value2; Value4 = aa[x]; } }
프로필 이미지
yamu
2025-06-09
299
글번호 191465
지표

yamu 님에 의해서 삭제되었습니다.

프로필 이미지
yamu
2025-06-05
1
글번호 191464
지표
답변완료

조건검색식 문의드립니다.

input : 기간(200),a(70),b(11); var : hull(0); hull = WMa(WMa(c,기간/2)*2 - WMa(c, 기간), floor(sqrt(기간))); if CrossUp(C,EnvelopeDown(a,b)) Then var1 = O; if sDate != sDate[1] Then var2 = 0; if CrossDown(hull,var1) Then var2 = var2+1; if var2 >= 1 and c > var1 and C <= var1*1.15 Then Find(1); 위 수식은 일전에 만들어준 수식인데, 위 수식에서 b=ValueWhen(1,(crossup(c,envelopedown(a,b))),L); 위 지표라인으로 해당 부분을 변경(대체) 해주시면 감사드리겠습니다(___)
프로필 이미지
살빼고싶다
2025-06-05
305
글번호 191456
검색
답변완료

부탁드립니다

수고하십니다 아래수식을 예스로 부탁드립니다 // INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{ int length = input(50) float factor = input.float(1.0, "Factor", step = 0.1) // Color color col_up = input(color.lime, "", inline = "col") color col_dn = input(color.rgb(221, 26, 26), "", inline = "col") color col_ul = input(color.aqua, "", inline = "col") // } // CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{ trend(length)=> var direction = 0 var count_up = 0. var count_dn = 0. float volatility = ta.sma(high-low, 70) * factor float upper = ta.highest(ta.sma(close, 25) + volatility, int(length/2)) float lower = ta.lowest(ta.sma(close, length) - volatility, int(length/2)) bool sig_up = ta.crossover(hlc3, upper) and barstate.isconfirmed bool sig_dn = ta.crossunder(hlc3, lower) and barstate.isconfirmed switch sig_up => direction := 1 sig_dn => direction := -1 upper := direction == 1 ? float(na) : upper lower := direction == -1 ? float(na) : lower // Trends Duration if direction == 1 count_up += 0.5 count_dn := 0 if direction == -1 count_dn += 0.5 count_up := 0 count_up := count_up > 70 ? 70 : count_up count_dn := count_dn > 70 ? 70 : count_dn [upper, lower, direction, count_up, count_dn] [upper, lower, direction, count_up, count_dn] = trend(length) float upper_band = lower + ta.atr(100)*5 float lower_band = upper - ta.atr(100)*5 color upper_col = color.new(col_dn, int(count_dn)) color lower_col = color.new(col_up, int(count_up)) color upper_band_col = color.new(col_ul, 70 - int(count_up)) color lower_band_col = color.new(col_ul, 70 - int(count_dn)) // } // PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{ plot(upper_band, "Upper Wave", style = plot.style_linebr, color = bar_index % 2 == 0 ? na : upper_band_col, linewidth = 1) plot(lower_band, "Lower Wave", style = plot.style_linebr, color = bar_index % 2 == 0 ? na : lower_band_col, linewidth = 1) plot(upper, "Upper Band", style = plot.style_linebr, color = upper_col, linewidth = 2) plot(lower, "Lower Band", style = plot.style_linebr, color = lower_col, linewidth = 2) plot(upper, "Upper Band Shadow", style = plot.style_linebr, color = color.new(col_dn, int(count_dn*2)), linewidth = 6) plot(lower, "Lower Band Shadow", style = plot.style_linebr, color = color.new(col_up, int(count_up*2)), linewidth = 6) plotshape(direction != direction[1] and direction == 1 ? lower : na, "Trend Up", shape.circle, location.absolute, size = size.tiny, color = col_up) plotshape(direction != direction[1] and direction == 1 ? lower : na, "Trend Up", shape.circle, location.absolute, size = size.small, color = color.new(col_up, 70)) plotshape(direction != direction[1] and direction == -1 ? upper : na, "Trend Down", shape.circle, location.absolute, size = size.tiny, color = col_dn) plotshape(direction != direction[1] and direction == -1 ? upper : na, "Trend Down", shape.circle, location.absolute, size = size.small, color = color.new(col_dn, 70)) // Trend Duration (70 max) // if barstate.islast // if direction == 1 // label.delete(label.new(bar_index, lower, str.tostring(count_up), color = color(na), style = label.style_label_left, textcolor = chart.fg_color)[1]) // if direction == -1 // label.delete(label.new(bar_index, upper, str.tostring(count_dn), color = color(na), style = label.style_label_left, textcolor = chart.fg_color)[1]) // }
프로필 이미지
파생돌이
2025-06-05
334
글번호 191449
지표
답변완료

조건검색식 문의드립니다.

첫번째 수식 문의 이동 = ma(C, 20); 이동1 = ma(C, 200); 조건 = CrossUp(이동, 이동1); 라인 = Valuewhen(1, 조건, (H + L) / 1.95); 신호 = 라인 != Ref(라인, 1); 2번째 수식 문의 신=H-L; 호=MAX(C,O)-L; 조건=신/호>2 && H/C(1)>1.05; 기준선=valuewhen(1,조건,H); 신호=crossup(C, 기준선); 당일 장중에 30분봉 상에서, 위 신호가 뜬 종목에 대해서 다 검출할 수 있도록 해주시면 감사드리겠습니다. 종가 기준으로 신호가 뜬 자리가 아닌, 당일 장중에라도 위 신호가 발생 된 종목을 검출하고 싶습니다. 검색식은 첫번째 문의 1개 두번째 문의 1개 각각 부탁드리겠습니다! 감사드립니다(__)
프로필 이미지
살빼고싶다
2025-06-05
274
글번호 191442
검색
답변완료

문의드립니다

야간선물용으로 지표를 만들때 (야간시간: 18시 ~ 다음날 6시) StartTime(180000),EndTime(055000); 이렇게 표시하면 될까요? 아니면 endtime을 빼고 startime만 넣어도 자정넘어 다음날까지 지표출력이 될까요?
프로필 이미지
러블리
2025-06-05
251
글번호 191441
지표
답변완료

수식 문의드립니다.

안녕하세요. 기존 사용하는 수식에 덧붙여서 사용할 수 있는 수식 부탁드립니다. 매수진입/매도진입 이후에 3분이 지나도록 손실구간에 있을 경우에는 자동 청산되도록 하는 수식을 부탁드리겠습니다. 항상 감사드립니다.
프로필 이미지
트레이더365
2025-06-05
240
글번호 191439
시스템

우유 님에 의해서 삭제되었습니다.

프로필 이미지
우유
2025-06-05
50
글번호 191438
시스템
답변완료

수식수정요청

늘 도움 감사합니다 아래의 수식을 기반으로 3연속 이상 의 봉을 기반으로 박스를 그리고 싶은데 오류가 나오네요 살펴서 수정 부탁드립니다. Inputs: N(3), // 연속 봉 개수 기준 BullishColor(Red), // 양봉 선 색상 BearishColor(Blue), // 음봉 선 색상 LineWidth(1); // 선 굵기 Vars: bullishCount(0), bearishCount(0), drewBullBox(False), drewBearBox(False), startBar(0), firstDate(0), firstTime(0), lastDate(0), lastTime(0), lineTop(0), lineBottom(0), lineTopID(0), lineBottomID(0); // 연속 양봉 카운트 및 첫 봉 기록 If Close > Open Then Begin bullishCount = bullishCount + 1; bearishCount = 0; If bullishCount = 1 Then Begin startBar = CurrentBar; firstDate = Date; firstTime = Time; End; lastDate = Date; lastTime = Time; End // 연속 음봉 카운트 및 첫 봉 기록 Else If Close < Open Then Begin bearishCount = bearishCount + 1; bullishCount = 0; If bearishCount = 1 Then Begin startBar = CurrentBar; firstDate = Date; firstTime = Time; End; lastDate = Date; lastTime = Time; End Else Begin bullishCount = 0; bearishCount = 0; End; // 연속 3봉 이상 양봉 구간일 때 선 그리기 If bullishCount >= N Then Begin lineTop = High; // 마지막 봉 고가 lineBottom = Low[startBar]; // 첫 봉 저가 // 이전에 그렸던 선 있으면 삭제 If drewBullBox Then Begin TL_Delete(lineTopID); TL_Delete(lineBottomID); End; // 상단 선: 첫봉 시간 ~ 현재 시간, 가격 = 마지막 봉 고가 lineTopID = TL_New(firstDate, firstTime, lineTop, lastDate, lastTime, lineTop); TL_SetColor(lineTopID, BullishColor); TL_SetSize(lineTopID, LineWidth); TL_SetStyle(lineTopID, Tool_Solid); // 하단 선: 첫봉 시간 ~ 현재 시간, 가격 = 첫 봉 저가 lineBottomID = TL_New(firstDate, firstTime, lineBottom, lastDate, lastTime, lineBottom); TL_SetColor(lineBottomID, BullishColor); TL_SetSize(lineBottomID, LineWidth); TL_SetStyle(lineBottomID, Tool_Solid); drewBullBox = True; drewBearBox = False; End Else If bullishCount = 0 And drewBullBox Then Begin // 연속 양봉 끊어졌을 때 선 삭제 TL_Delete(lineTopID); TL_Delete(lineBottomID); drewBullBox = False; End; // 연속 3봉 이상 음봉 구간일 때 선 그리기 If bearishCount >= N Then Begin lineTop = High[startBar]; // 첫 봉 고가 lineBottom = Low; // 마지막 봉 저가 If drewBearBox Then Begin TL_Delete(lineTopID); TL_Delete(lineBottomID); End; // 상단 선: 첫 봉 고가 lineTopID = TL_New(firstDate, firstTime, lineTop, lastDate, lastTime, lineTop); TL_SetColor(lineTopID, BearishColor); TL_SetSize(lineTopID, LineWidth); TL_SetStyle(lineTopID, Tool_Solid); // 하단 선: 마지막 봉 저가 lineBottomID = TL_New(firstDate, firstTime, lineBottom, lastDate, lastTime, lineBottom); TL_SetColor(lineBottomID, BearishColor); TL_SetSize(lineBottomID, LineWidth); TL_SetStyle(lineBottomID, Tool_Solid); drewBearBox = True; drewBullBox = False; End Else If bearishCount = 0 And drewBearBox Then Begin // 연속 음봉 끊어졌을 때 선 삭제 TL_Delete(lineTopID); TL_Delete(lineBottomID); drewBearBox = False; End;
프로필 이미지
알리섬
2025-06-05
313
글번호 191434
지표