커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

안녕하세요

study("EMES", shorttitle="EMA", overlay=true, precision=3) src=input(hl2, title="Source") fl=input(.5, title="Fast Limit") sl=input(.05, title="Slow Limit") sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0 dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54) q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54) i1 = nz(dt[3]) jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54) jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54) i2_ = i1 - jq q2_ = q1 + jI i2 = .2*i2_ + .8*nz(i2[1]) q2 = .2*q2_ + .8*nz(q2[1]) re_ = i2*nz(i2[1]) + q2*nz(q2[1]) im_ = i2*nz(q2[1]) - q2*nz(i2[1]) re = .2*re_ + .8*nz(re[1]) im = .2*im_ + .8*nz(im[1]) p1 = iff(im!=0 and re!=0, 360/atan(im/re), nz(p[1])) p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1)) p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2)) p = .2*p3 + .8*nz(p3[1]) spp = .33*p + .67*nz(spp[1]) phase = atan(q1 / i1) dphase_ = nz(phase[1]) - phase dphase = iff(dphase_< 1, 1, dphase_) alpha_ = fl / dphase alpha = iff(alpha_ < sl, sl, iff(alpha_ > fl, fl, alpha_)) mama = alpha*src + (1 - alpha)*nz(mama[1]) fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1]) pa=input(false, title="Mark crossover points") plotarrow(pa?(cross(mama, fama)?mama<fama?-1:1:na):na, title="Crossover Markers") fr=input(false, title="Fill MAMA/FAMA Region") duml=plot(fr?(mama>fama?mama:fama):na, style=circles, color=gray, linewidth=0, title="DummyL") mamal=plot(mama, title="MAMA", color=red, linewidth=2) famal=plot(fama, title="FAMA", color=green, linewidth=2) fill(duml, mamal, red, transp=70, title="NegativeFill") fill(duml, famal, green, transp=70, title="PositiveFill") ebc=input(false, title="Enable Bar colors") bc=mama>fama?lime:red barcolor(ebc?bc:na) 매번 부탁드리게 되어 죄송하고 감사합니다. 예스랭귀지로 변환 문의드립니다. Fill region이 구현이 예스에서 가능할지 모르겠으나 가능하다면 포함시켜주시면 감사드리겠습니다.
프로필 이미지
물고기
2020-02-21
317
글번호 136202
지표
답변완료

부탁합니다

input : g(13),r(25),s(2); var1 = ema(ema(c-(highest(H,g) + lowest(L,g))*0.5,r),s) * 100/ (0.5 * ema(ema(highest(H,g)-lowest(L,g),r),s)); plot1(var1); plot2(40); plot3(-40); 위 지표를 상승, 하락을 하나의 선으로 색상으로 표현할수 있게 부탁합니다.
프로필 이미지
as8282
2020-02-21
258
글번호 136200
지표
답변완료

66148 추가 답변요

66148에 대한 추가답변 부탁드려요
프로필 이미지
장안퀙쿠르드
2020-02-21
229
글번호 136199
시스템
답변완료

안녕하세요

study(title="T", shorttitle="T", overlay=true) length = input(title="Length", type=integer, defval=5) factor = input(title="Factor", type=float, minval=0, maxval=1, defval=0.7) highlightMovements = input(title="Highlight Movements ?", type=bool, defval=true) src = input(title="Source", type=source, defval=close) gd(src, length) => ema(src, length) * (1 + factor) - ema(ema(src, length), length) * factor t3 = gd(gd(gd(src, length), length), length) t3Color = highlightMovements ? (t3 > t3[1] ? green : red) : #6d1e7f plot(t3, title="T3", linewidth=2, color=t3Color, transp=0) 예스트레이더 수식으로 변경 문의드립니다. ------------------------------------------------------------------------- study("TFactor", shorttitle="B") length=input(15) bt = input( 100, title="Buy Trigger") st = input( -100, title="Sell Trigger") markCrossovers=input(false, type=bool) prev(s,i) => y=abs(round(i)) s[y] calc_ttf( periods ) => bp = highest( high, periods ) - prev( lowest( low, periods ), - periods ) sp = prev( highest( high, periods ), - periods ) - lowest( low, periods ) 100 * (bp - sp) / ( 0.5*( bp + sp) ) ttf = calc_ttf( length ) plot(0, color=gray) btl=plot(bt, color=gray, style=3) stl=plot(st, color=gray, style=3) long_f = cross( ttf, st ) and rising(ttf, 1) short_f = cross(ttf, bt ) and falling(ttf, 1) bs = (ttf > bt) ? bt : ttf us = (ttf < st) ? st : ttf bl=plot(bs, color=white) ul=plot(us, color=white) tl=plot(ttf, title="TTF", color=markCrossovers ? (long_f ? green : short_f ? red : blue) : maroon, linewidth=2) fill(bl, tl, color=green, transp=75) fill(ul, tl, color=red, transp=75) 예스랭귀지로 변환 문의드립니다. 감사합니다.
프로필 이미지
물고기
2020-02-21
263
글번호 136198
지표

바다사당 님에 의해서 삭제되었습니다.

프로필 이미지
바다사당
2020-02-21
15
글번호 136197
지표
답변완료

DATA2의 기술적지표 적용방법 문의드립니다.

안녕하세요. 1) DATA2에 DATA1과 같은종목의 30분봉을 적용하고 DATA2의 기술적 지표를 이용해 매수와 매도 신호를 얻고자 합니다. 아래와같이 수식을 작성하였는데 매수와 매도 시점이 의도한바와 매우 다르게 나오고 있어 문의드립니다. DATA2를 적용한 기술적 지표의 정의가 맞는지 확인부탁드립니다. Input : Period1(14),Period2(5),SHORT(3),LONG(10); var : CCIv(0),CCIsig(0),XCCIv(0),XCCIsig(0),GET(0); CCIv = CCI(Period1); CCIsig = ema(CCIv,Period2); XCCIv = DATA2(CCI(Period1)); XCCIsig = data2(ema(XCCIv,Period2)); 2) 10틱 수익시 익절하고자 할때 수식을 부탁드립니다. 3) 조건만족시 매도포지션 청산후 매수포지션 진입하는 수식을 작성했습니다만 에러가 나고 있습니다. 수정을 부탁드립니다. IF CROSSUP(XCCIV,XCCISIG) AND CCIV<-100 THEN EXITSHORT() AND BUY(); 감사합니다.
프로필 이미지
flextone
2020-02-21
320
글번호 136196
시스템
답변완료

재문의 드립니다.

수고하십니다. 원래 질문의 의도와 약간 다른 것 같습니다. 재확인 부탁드립니다. 아래 작성해 주신 수식은 아직 돌려보지 못했습니다..[밖에 있어서..] 1] 일정 기간내가 아닌 어느 특정일인 N일전에 월시가를 돌파하고 , 그 이후에 월시가 위에 있는 종목 검색을 하려고 합니다. [기본식] 2] N일전 월시가를 돌파하고 월시가 위에 계속 있는 종목 [식1] N-1일전 월시가를 돌파하고 월시가 위에 계속 있는 종목 [식2] ...... 어제 월시가를 돌파하고 월시가 위에 계속 있는 종목 [식N] 3] 그리고 N을 변수로 사용하고 싶습니다. 이런 종목들을 다 합하여 검색결과로 모든 종목이 동시에 표시되게 하고 싶습니다 위 내용으로 작성된게 맞는건지요..? 수식 옆에 간단한 설명을 달아 주시면 아주 고맙겠습니다만..ㅋ 자꾸 번거롭게 해드려서 미안합니다. 즐거운 주말 되세요... 수고하세요 > 예스스탁 님이 쓴 글입니다. 안녕하세요 예스스탁입니다. 월변경이 있었다는 것을 나타내기 위한 변수입니다. 수식이 잘못작성되어 일변경되어 있어 월변경으로 수정했습니다. 1 var : T(0); if sdate > sdate[1]+30 Then { Condition1 = true; var1 = O; T = 0; if C > var1 Then T = 1; if C < var1 Then T = 0; } if Condition1 == true then { if T <= 0 and C > var1 Then T = 1; if T >= 0 and C < var1 Then T = 1; if T == 1 Then find(1); } 2 아래와 같이 표현하시면 var2가 전월시가입니다. if sdate > sdate[1]+30 Then { var1 = O; var2 = var1[1] } 즐거운 하루되세요 > 오이도인 님이 쓴 글입니다. > 제목 : Re : Re : 종목검색식 부탁합니다.. > condition1은 뭔가요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 종목검색식 부탁합니다.. > 안녕하세요 예스스탁입니다. 1 월시가를 돌파하고 현재까지 그 위에서 유지되는 종목을 찾으시므로 아래식으로 검색하시면 됩니다. for문이나 배열변수는 필요가 없습니다. 일봉에서 검색에 필요한 최소기간을 30봉이상 지정하시고 검색하시면 됩니다. var : T(0); if sdate > sdate[1] Then { Condition1 = true; var1 = O; T = 0; if C > var1 Then T = 1; if C < var1 Then T = 0; } if Condition1 == true then { if T <= 0 and C > var1 Then T = 1; if T >= 0 and C < var1 Then T = 1; if T == 1 Then find(1); } 2 아래와 같이 표현하시면 var2가 전월시가입니다. if sdate > sdate[1] Then { var1 = O; var2 = var1[1] } 즐거운 하루되세요 > 오이도인 님이 쓴 글입니다. > 제목 : 종목검색식 부탁합니다.. > 수고하십니다. 아래와 같은 내용의 식을 for문이나 array를 사용하여 간단하게 식 하나로 바꾸어 주시면 고맙겠습니다.. [어떤 함수를 사용해야 하는지 잘 모름...사용자 메뉴얼이 어디 있는지 알려주세요...] Q1]일봉 종목검색에서 오늘 종가가 월시가를 돌파하고, 종가가 월시가 위에 [계속] 존재하고 있는 종목을 검색 or 1일전에 종가가 월시가를 돌파하고, 종가가 그후로 월시가 위에 계속 존재하고 있는 종목을 검색 or 2일전에 종가가 월시가를 돌파하고, 종가가 그후로 월시가 위에 계속 존재하고 있는 종목을 검색 or ........ N일전에 종가가 월시가를 돌파하고, 종가가 그후로 월시가 위에 계속 존재하고 있는 종목을 검색 N이 큰 경우 위의 각각의 경우에 검색되는 모든 종목을 한 식으로 검색하여 전부 볼 수 있게하는 검색식 부탁합니다.. var1 = monthopen(0) ; if (crossup(c,var1) and countif(c>var1,1)==1) or (crossup(c[1],var1) and countif(c>var1,2)==2) or (crossup(c[2],var1) and countif(c>var1,3)==3) or ...... (crossup(c[N],var1) and countif(c>var1,N)==N) then Find(1); Q2] 월이 바뀐 경우, 위 로직에 전 달 월시가 var1[1]을 적용하려면 식이 어떻게 수정되어야 하는지요? 수고하세요..
프로필 이미지
오이도인
2020-02-21
350
글번호 136195
종목검색

오이도인 님에 의해서 삭제되었습니다.

프로필 이미지
오이도인
2020-02-21
0
글번호 136193
종목검색
답변완료

문의

답변주신 내용 참고삼아 제가 원했던 수식을 작성해보았습니다. input : uppyra검증1(0.00),상승pyra1(0.00),상승N1(20); input : uppyra검증2(0.00),상승pyra2(0.00),상승N2(10); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증1 and H >= LP+상승Pyra1 and ((C2[BarsSinceEntry]< 0.99) and (C2[BarsSinceEntry] >= 0.01) and MaxContracts < 상승N1)) Then buy("bb1"); if data2(C >= C2[BarsSinceEntry]+uppyra검증2 and H >= LP+상승Pyra2 and ((C2[BarsSinceEntry]< 2.99) and (C2[BarsSinceEntry] >= 1.00) and MaxContracts < 상승N2)) Then buy("bb2"); 그런데, 이 수식에 변경사항이 있습니다. 피라미딩수식은 그대로 살리고 그 안의 진입가격 구간만 밖으로 꺼내고 그 진입가격은 주종목을 따르는 형식이 필요합니다. 주종목 옵션 가격구간 (0.01 ~ 0.99)을 전제로 한 선물보조차트 피라미딩 방식1 주종목 옵션 가격구간 (1.00 ~ 2.99)을 전제로 한 선물보조차트 피라미딩 방식2 ************************************************************************************ 안녕하세요 예스스탁입니다. 첫매수가를 기준으로 구분해 드립니다. Input : 최대(2.99),최소(0.01); input: 시간1(090000),시간2(144500),봉갯수3(1),상승4(0.10),통제range5(10.00); input : uppyra검증(0.00),상승pyra(0.00),상승N1(10),상승N2(20); var : V1(0,data2),C2(0,data1),LP(0,data1); C2 = data2(c); if data2(bdate != bdate[1]) Then { v1 = 0; } if data2(stime >= 시간1 and stime < 시간2) Then { v1 = v1 + 1; if data2(v1 == 봉갯수3 and C > lowD(0)+상승4 and HighD(0) < lowD(0)+통제range5) and 최대 >= C and C >= 최소 Then buy(); } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증 and H >= LP+상승Pyra and ((C2[BarsSinceEntry]< 1.00 and MaxContracts < 상승N1) or (C2[BarsSinceEntry] >= 1.0 and MaxContracts < 상승N2))) Then buy("bb"); } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 진입가격별 피라미딩 > 옵션 진입가격에 제한을 둔 수식입니다. 진입가격별로 피라미딩 수량을 조절하는 부분만 변경해주세요. 피라미딩그룹은 2개면 됩니다. 예) 1.00 에서 2.99 구간 진입했을 때는 10개 적용 0.01 에서 0.99 구간 진입했을 때는 20개 적용 ******************************************************************************** 안녕하세요 예스스탁입니다. 첫매수가를 기준으로 구분해 드립니다. Input : 최대(2.99),최소(0.01); input: 시간1(090000),시간2(144500),봉갯수3(1),상승4(0.10),통제range5(10.00); input : uppyra검증(0.00),상승pyra(0.00),상승N1(10),상승N2(20); var : V1(0,data2),C2(0,data1),LP(0,data1); C2 = data2(c); if data2(bdate != bdate[1]) Then { v1 = 0; } if data2(stime >= 시간1 and stime < 시간2) Then { v1 = v1 + 1; if data2(v1 == 봉갯수3 and C > lowD(0)+상승4 and HighD(0) < lowD(0)+통제range5) and 최대 >= C and C >= 최소 Then buy(); } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증 and H >= LP+상승Pyra and ((C2[BarsSinceEntry]< 1.00 and MaxContracts < 상승N1) or (C2[BarsSinceEntry] >= 1.0 and MaxContracts < 상승N2))) Then buy("bb"); } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 진입가격별 피라미딩 > 옵션 진입가격에 제한을 둔 수식입니다. 진입가격별로 피라미딩 수량을 조절하는 부분만 변경해주세요. 피라미딩그룹은 2개면 됩니다. 예) 1.00 에서 2.99 구간 진입했을 때는 10개 적용 0.01 에서 0.99 구간 진입했을 때는 20개 적용 ******************************************************************************** Input : 최대(2.99),최소(0.01); input: 시간1(090000),시간2(144500),봉갯수3(1),상승4(0.10),통제range5(10.00); input : uppyra검증(0.00),상승pyra(0.00),상승N(0); var : V1(0,data2),C2(0,data1),LP(0,data1); C2 = data2(c); if data2(bdate != bdate[1]) Then { v1 = 0; } if data2(stime >= 시간1 and stime < 시간2) Then { v1 = v1 + 1; if data2(v1 == 봉갯수3 and C > lowD(0)+상승4 and HighD(0) < lowD(0)+통제range5) and 최대 >= C and C >= 최소 Then buy(); } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증 and MaxContracts < 상승N and H >= LP+상승Pyra) Then buy("bb"); }
프로필 이미지
좌오비우오비
2020-02-21
331
글번호 136184
시스템