커뮤니티

예스랭귀지 Q&A

글쓰기

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

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

예스트레이딩 수식으로 부탁드립니다.

예스 종목 검색식으로 변환 부탁드립니다. (1) A=H-L; B=Max(C, O)-L; 조건=A/B>2 && H/C(1)>(1+15/100); 기준가=Valuewhen(1, 조건, H); CrossUp(C, 기준가) (2) A=H-L; B=Max(C, O)-L; 조건=A/B>2 && H/C(1)>(1+15/100); 기준가=Valuewhen(1, 조건, H); Dv=Valuewhen(1, 조건, V); CrossUp(C, 기준가) && V>Dv (3) A=H-L; B=Max(C, O)-L; 조건=A/B>2 && H/C(1)>(1+15/100); 기준가=Valuewhen(1, 조건, H); Dv=Valuewhen(1, 조건, V); 봉갯수=BarsSince(조건): CrossUp(C, 기준가) && 봉갯수<10 (4) S=sum(V); A=H-L; B=Max(C, O)-L; 조건=A/B>2 && H/C(1)>(1+15/100); 기준가=Valuewhen(1, 조건, H); 누적Dv=S-Valuewhen(1, 조건, S(1))-V; C>기준가 && CrossUp(V, 누적Dv)
프로필 이미지
비밀통로
2025-03-04
459
글번호 188776
종목검색
답변완료

종목검색식 부탁드립니다.

아래 3가지 수식을 예스 종목검색식으로 부탁드립니다. 1) 상한선=BBandsUp(Period, D1); C>O && V(1)*배수<V && C(1)*상승률>C && CrossUp(C, 상한선) && Highest(H(1), 기간)<C && V>Highest(V(1), 기간) (지표변수) Period: 120 / D1: 1 / 배수: 2 / 상승률: 1.3 / 기간: 60 2) 기준=C>O && V>V(1)*비율; Vv=Valuewhen(1, 기준, V/2); 캔들기준=if(BarsSince(기준)<봉수, Vv, 0); Vm=if(C<O && C<C(1), V, 0); S=sum(Vm); Vm10=S-Valuewhen(1, 기준, S(1)); Conl=if(BarsSince(기준)<봉수, Vm10, 0); CrossUp(Conl, 캔들기준) (지표변수) 비율: 30 / 봉수: 15 3) C(P)>O(P) && C>O && V(P)*2<V && CrossUp(C, C(P)) (지표변수) P: 10
프로필 이미지
비밀통로
2025-03-04
477
글번호 188775
종목검색
답변완료

오류 부분을 수정해 주세요.

// ATR 계산을 위한 변수 선언 var: TR(0), EMA_ATR(0), alpha(0); // EMA 계산을 위한 초기화 alpha = 2 / (ATRPeriod + 1); TR = MaxList(High - Low, Abs(High - Close[1]), Abs(Low - Close[1])); // EMA로 ATR 계산 if CurrentBar = 0 then EMA_ATR = TR; // 첫 번째 바에서는 TR을 초기값으로 사용 else EMA_ATR = alpha * TR + (1 - alpha) * EMA_ATR[1]; // AdjustedT1을 EMA_ATR로 설정 AdjustedT1 = EMA_ATR * VolatilityMultiplier; 위 수식에서 if CurrentBar = 0 then EMA_ATR = TR; 부분이 오류가 발생 합니다. 바르게 수정 부탁합니다.
프로필 이미지
너무조아
2025-03-04
359
글번호 188774
시스템
답변완료

문의드립니다

input : tenkan_len(9),tenkan_mult(2),kijun_len(26),kijun_mult(4),spanB_len(52),spanB_mult(6),offset(26); var : ATR1(0),up1(0),dn1(0),upper1(0),lower1(0),os1(0),spt1(0),max1(0),min1(0),tenkan(0); var : ATR2(0),up2(0),dn2(0),upper2(0),lower2(0),os2(0),spt2(0),max2(0),min2(0),kijun(0); var : senkouA(0); var : ATR3(0),up3(0),dn3(0),upper3(0),lower3(0),os3(0),spt3(0),max3(0),min3(0),senkouB(0); var : tenkan_css(0),kijun_css(0),cloud_a(0),cloud_b(0),chikou_css(0),tx(0); ATR1 = ATR(tenkan_len)*tenkan_mult; up1 = (h+L)/2 + ATR1; dn1 = (h+L)/2 - ATR1; upper1 = iff(C[1] < upper1[1],min(up1,upper1[1]),up1); lower1 = iff(C[1] > lower1[1],max(dn1,lower1[1]),dn1); os1 = iff(c > upper1 , 1 ,IFf(c < lower1, 0 , os1[1])); spt1 = iff(os1 == 1 , lower1 , upper1); max1 = iff(CrossUp(c,spt1) or CrossDown(c,spt1) , max(c,max1[1]) , IFf(os1 == 1 , max(c,max1[1]) , spt1)); min1 = iff(CrossUp(c,spt1) or CrossDown(c,spt1) , min(c,min1[1]) , iff(os1 == 0 , min(c,min1[1]) , spt1)); tenkan = avg(max1,min1); ATR2 = ATR(kijun_len)*kijun_mult; up2 = (h+L)/2 + ATR2; dn2 = (h+L)/2 - ATR2; upper2 = iff(C[1] < upper2[1],min(up2,upper2[1]),up2); lower2 = iff(C[1] > lower2[1],max(dn2,lower2[1]),dn2); os2 = iff(c > upper2 , 1 ,IFf(c < lower2, 0 , os2[1])); spt2 = iff(os2 == 1 , lower2 , upper2); max2 = iff(CrossUp(c,spt2) or CrossDown(c,spt2) , max(c,max2[1]) , IFf(os2 == 1 , max(c,max2[1]) , spt2)); min2 = iff(CrossUp(c,spt2) or CrossDown(c,spt2) , min(c,min2[1]) , iff(os2 == 0 , min(c,min2[1]) , spt2)); kijun = avg(max2,min2); senkouA = avg(kijun,tenkan); ATR3 = ATR(spanB_len)*spanB_mult; up3 = (h+L)/2 + ATR3; dn3 = (h+L)/2 - ATR3; upper3 = iff(C[1] < upper3[1],min(up3,upper3[1]),up3); lower3 = iff(C[1] > lower3[1],max(dn3,lower3[1]),dn3); os3 = iff(c > upper3 , 1 ,IFf(c < lower3, 0 , os3[1])); spt3 = iff(os3 == 1 , lower3 , upper3); max3 = iff(CrossUp(c,spt3) or CrossDown(c,spt3) , max(c,max3[1]) , IFf(os3 == 1 , max(c,max3[1]) , spt3)); min3 = iff(CrossUp(c,spt3) or CrossDown(c,spt3) , min(c,min3[1]) , iff(os3 == 0 , min(c,min3[1]) , spt3)); senkouB = avg(max3,min3); tenkan_css = Red; kijun_css = Blue; cloud_a = teal; cloud_b = red; chikou_css = Green; plot1(tenkan,"Tenkan-Sen",tenkan_css); plot2(kijun,"Kijun-Sen",kijun_css); if CrossUp(tenkan,kijun) Then { tx = Text_New(sDate,sTime,kijun,"매수"); Text_SetStyle(tx,2,1); } if CrossDown(tenkan,kijun) Then { tx = Text_New(sDate,sTime,kijun,"매도"); Text_SetStyle(tx,2,0); } 위 지표에서 Kijun-Sen가 Tenkan-Sen를 골든크로스한 첫봉 일 때 검색돼게 부탁드리겠습니다
프로필 이미지
cjfdk
2025-03-04
442
글번호 188765
종목검색
답변완료

질문 드리겠습니다

답변 감사드립니다 지난 질문이어서 몇가지 부탁드립니다 질문1) 간단한 주석을 부탁드립니다 아래 식에서요,, 하루에 신호가 한번만 나오게 하는 식인데요 if Bdate != Bdate[1] Then DD = DD+1; 이부분은 거래일이 변경될때마다 dd 에 1씩 더하고, if H>l*1.1 Then { d1 = dd; d2 = d1[1]; if d1 >= d2+1 Then dd의 현재값과 이전값을 비교했을때, d1 >= d2+1 이면 왜 하루에 신호가 한번만 나오게 되는건지 그리고 if d2 == 0 or (d2 > 0 and d1 >= d2+3) Then 로 했을때는 3거래일 이상 떨어졌을때만 신호가 나타나게 되는건지 간략한 설명을 해주시면 감사하겠습니다 #수식 if Bdate != Bdate[1] Then DD = DD+1; if H>l*1.1 Then { d1 = dd; d2 = d1[1]; if d1 >= d2+1 Then { var1 = Index; Var2 = var1[1]; Var3= Var2[1]; sum1=0; sumi1=0; tl=TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,999999); TL_SetSize(tl,0); TL_SetColor(tl,Black); 질문2) min , max 관련된 질문입니다 아래식에서 aa 배열 값들의 최고값, 최저값을 구할때요 aa[0]에서 aa[10] 까지의 최고값 (최저값)을 구하려면 max(aa[0],aa[1]...aa[10]) 이런식으로 나열 작성을 해야하는데, 만약 aa[0] 에서 aa[30] 까지의 최고값을 구할때처럼 식이 길어지면 for문으로 축약해서 작성한뒤 결과값을 변수에 저장하는것을 도와주셨으면 합니다 수식은 아래와 같습니다 var : cnt(0), sum1(0), sumi1(0),tt(0),hh(0),ll(0),tl(0); var: sum2(0),sumi2(0),sumaa(0); var : t(0),StartBarIndex(0),dd(0),d1(0),d2(0); Array : ii[50](0),aa[50](0),bb[50](0),ttl[10](0); if Bdate != Bdate[1] Then DD = DD+1; if H>l*1.08 Then { d1 = dd; d2 = d1[1]; if d2 == 0 or (d2 > 0 and d1 >= d2+3) Then { var1 = Index; Var2 = var1[1]; Var3= Var2[1]; tl=TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,999999); TL_SetSize(tl,0); TL_SetColor(tl,DarkGray); For cnt = 1 to (var1-Var2) { sum1=sum1+h[cnt]; sumi1=sumi1+1; } value1=sum1/sumi1; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; } aa[0] = value1; } } 질문3) 혹시 차트창에서 동일종목 차트 두개를 열고 각각 다른 지표를 적용 할 수 있는 방법이 있을까요? 감사합니다
프로필 이미지
yamu
2025-03-05
380
글번호 188763
지표
답변완료

안녕하세요.

수고하십니다. 지표 챠트에 시가를 표시하고 싶습니다. 선물가격 콜350 가격과 프리미엄 풋350 가격과 프리미엄 을 고정
프로필 이미지
구름달
2025-03-04
384
글번호 188751
지표

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

프로필 이미지
심홍
2025-03-04
294
글번호 188750
종목검색
답변완료

문의 드립니다!

안녕하세요! 콜옵션 챠트의 콜 시가선을 기준으로해서... 여기에 data1 이 콜이고 data2 가 풋인 복합챠트의 경우 이 콜풋캔들이 이동해서 각각 콜의 시가선을 만날때마다(상하 어느쪽에서 맞던 모두 해당) 각각 세로선과 알람신호가 발생되도록 부탁드립니다 *** 특히 풋캔들(data2)이 콜의 시가선을 맞는 경우가 더 중요합니다 * 세로선 발생시기는 n틱전으로, 세로선의 색상과 두께는 사용자지정이 가능토록해주세요 감사합니다!!!
프로필 이미지
유로파54
2025-03-04
383
글번호 188743
지표
답변완료

수식 확인 좀 부탁 드립니다.

var : Xidx(0), Xinx(0); if Tcond == true and 300< H-L Then { Trade = False; Xidx = Index; } if Tcond == False and Index == Xinx+5 Then Trade = true; 장대봉 출현시 4번째봉까지는 진입금지라는 위의 식을 주셔서 적용해봐도 진입이 계속 됩니다. 수정 부탁드립니다.
프로필 이미지
산수유
2025-03-04
349
글번호 188741
시스템