커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식변환

아래 조건이 있는데요 조건에 만족하는경우 화면상에 스펙트럼을 만들려고 합니다. 조건1이 만족하면 녹색, 조건 2가 만족하면 파랑, 조건3이 만족하면 빨강, 이런식으로 기본색상에 조건1에서 2로 넘어갈때 리트머스 시험지처럼 지표가 변하게 만들려고 하는데요 아래 첨부파일에 하단 지표처럼 말입니다. Condition1 = C > ema(C,pds50) AND ema(C,pds50) < MA(C,pds200); Condition2 = C > ema(C,pds50) AND C > MA(C,pds200) AND ema(C,pds50) < MA(C,pds200); Condition3 = C > ema(C,pds50) AND C > MA(C,pds200) AND ema(C,pds50) > MA(C,pds200); 물론 아래 파일은 상기 수식으로 만든거는 아닙니다. 혹시나 가능하면 부탁드립니다.
프로필 이미지
예그리나
2018-01-11
215
글번호 115690
지표

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

프로필 이미지
2wnwn
2018-01-11
6
글번호 115687
지표
답변완료

문의합니다.

안녕하세요. 수고많으십니다! 트레일링 스탑에 관련해서 문의드립니다. 문의1번> A수식 if MarketPosition == 1 Then{ var1 = highest(h,BarsSinceEntry); if var1 >= EntryPrice+50 Then ExitLong("btr1",AtStop,var1-20); } B수식 SetStopTrailing(20,50,PointStop); A,B수식에 동일한 조건설정시 결과에 차이가 있습니다. 이유를 알 수 있을까요? 그리고 상기 수식 이외에 실제 매매에서 정확도가 높은 트레일링 스탑 수식이 있으면 부탁드립니다. 문의2번> 트레일링 스탑으로 "[50틱]이상 수익구간에서 고점대비 [25%]이상 조정시 청산"식 가능하다면 부탁드립니다. 그럼 좋은 하루 되세요~
프로필 이미지
휴먼
2018-01-11
127
글번호 115680
사용자 함수
답변완료

문의드립니다.

안녕하세요 만약 조건을 이평선이 하락하면 매도진입하게 조건을 두었을때 진입후 20틱 익청틱수 만족으로 익청되었는데 지수가 이평아래여서 조건이 되니 이어서 바로 또 같은 신호가 나옵니다. 이평하락에 진입후 익청되었을때 조건 만족하더라도 같은방향신호가 한번만 나오게 할수 있을까요? 이평아래지만 청산이 되었으니 조건에 맞더라도 재진입하지 않고 지수가 올라서 이평이 상승으로 돌렸을때 매수조건을 기다릴수 있게요. 즉 이평아래서는 한번만 매도 이평위에서는 한번만매수 이평아래서 한번만 매도 이평위에서 한번만매수 이런식으로 진행될수 있도록 하고싶습니다. 부탁드립니다.
프로필 이미지
불바다
2018-01-11
121
글번호 115676
시스템

베스트시스템 님에 의해서 삭제되었습니다.

프로필 이미지
베스트시스템
2018-01-11
5
글번호 115671
종목검색
답변완료

보내주신 수식 잘 받았습니다 ()이렇게 빈 괄호는 무었인가요?

보내주신 수식 잘 받았습니다 ()이렇게 빈 괄호는 무었인가요?
프로필 이미지
영구없다
2018-01-11
128
글번호 115670
시스템
답변완료

문의

안녕하세요 rsi지표수식부탁합니다 시가위에서는침체진입매수만진입.시가밑에서는과열진입매됴만진입하는수식부탁합니다 감사합니다
프로필 이미지
질갱이
2018-01-11
114
글번호 115668
시스템
답변완료

부탁 드립니다.

도움 주심에 깊이 감사 드립니다. 그림의 설명처럼 부탁 드립니다. 미리 감사 드립니다. 사용된 수식) Input:length(20); Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0), TL_NewBit(0); // 1:NewLine 2:SetEndLine Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit); If Value1 == 1 Then { // 고점 If TL_NewBit == 1 Then { // 신규 고점 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);} TL_SetSize(TL1,1); TL_Setcolor(tl1,white); k = 0; For j = 2 To 10 { If 저[1,1] > 저[j,1] and 저[j,1] > 0 Then { // 전저점보다 낮은 이전 전저점 찾는다 k = j; j = 10; // exit loop } } q = q + 1; // 고점이 새로 추가되었으므로 1 증가 If q > 2 and q <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열 크기가 10이므로 10 이내 TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]); } Else { // 신규 고점이 아니면 기존 추세선만 연장 If k > 1 Then { TL_SetEnd(TL2,sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]); } If q > 2 and q <= 10 Then { TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]); } } If TL_NewBit == 2 Then { TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } } Else If Value1 == -1 Then { // 저점 If TL_NewBit == 1 Then { // 신규 저점 TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetSize(TL1,1); TL_Setcolor(tl1,white); k = k + 1; // 저점이 새로 추가되었으므로 1 증가 If k > 2 and k <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열의 크기가 10이므로 10 이내 TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]); } } Else { // 신규 저점이 아니면 기존 추세선만 연장 If k > 2 and k <= 10 Then { TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]); } If q > 1 Then { TL_SetEnd(TL3,sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]); } } If TL_NewBit == 2 Then { TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } } 사용된 함수) 함수명:HiLoLineZigZag 수식) Input:Length(NumericSimple),useCLprice(NumericSimple), oHiZZ[MaxSize1,MaxSize2](NumericArrayRef), // 열번호 1:가격,2:Index,3:sDate,4:sTime oLoZZ[MaxSize3,MaxSize4](NumericArrayRef), oTL_NewBit(NumericRef); // 1:NewLine 2:SetEndLine Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""); #==========================================# HH = IFF(useCLprice==1,C,H); LL = IFF(useCLprice==1,C,L); If Index == 0 Then { oHiZZ[1,1] = HH; oLoZZ[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then { // 기간고점과 기간저점 동시 발생 If 최종꼭지점 == "저점" Then { If oLoZZ[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If oHiZZ[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; oTL_NewBit = 0; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { oHiZZ[j,jj] = oHiZZ[j-1,jj]; } } oHiZZ[1,1] = HH; oHiZZ[1,2] = Index; oHiZZ[1,3] = sDate; oHiZZ[1,4] = sTime; oTL_NewBit = 1; } Else If oHiZZ[1,1] < HH Then { // 1번 고점보다 높은 고가 출현 oHiZZ[1,1] = HH; oHiZZ[1,2] = Index; oHiZZ[1,3] = sDate; oHiZZ[1,4] = sTime; oTL_NewBit = 2; } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { oLoZZ[j,jj] = oLoZZ[j-1,jj]; } } oLoZZ[1,1] = LL; oLoZZ[1,2] = Index; oLoZZ[1,3] = sDate; oLoZZ[1,4] = sTime; oTL_NewBit = 1; } Else If oLoZZ[1,1] > LL then { oLoZZ[1,1] = LL; oLoZZ[1,2] = Index; oLoZZ[1,3] = sDate; oLoZZ[1,4] = sTime; oTL_NewBit = 2; } 최종꼭지점 = "저점"; } If 최종꼭지점 == "고점" Then HiLoLineZigZag = 1; Else If 최종꼭지점 == "저점" Then HiLoLineZigZag = -1; Else HiLoLineZigZag = 0;
프로필 이미지
yes
2018-01-11
255
글번호 115666
지표
답변완료

문의 드립니다.

안녕하세요 하기 답변 잘 받았습니다. 제가 부족한지.. 구동을 여러번 해 보았는데, 잘 되지가 않아서 문의 드립니다. 하기 두가지(상/하단 증감표현, 중앙이평 증감표현) 를 한가지 씩 실현시키면 작동이 되는데, 하기수식처럼, 두가지 모두 하면 중앙이평만 수식만 작동됩니다. 상하단 수식도 같이 작동이 되게끔 부탁드립니다. 칼라를 바꾸어봐도 되지 않습니다. 검토 부탁드립니다. --------------------------------- 안녕하세요 예스스탁입니다. input : Period(20), MultiD(2); var : BBmd(0),BBup(0),BBdn(0); var : diff1(0),T1(0),color1(0); var : diff2(0),T2(0),color2(0); BBmd = ma(C,Period); BBup = BollBandUp(Period,MultiD); BBdn = BollBandDown(Period,MultiD); diff1 = bbup-bbdn; if diff1 > diff1[1] Then T1 = 1; if diff1 < diff1[1] Then T1 = -1; if T1 == 1 Then color1 = MAGENTA; Else color1 = BLACK; if BBmd > BBmd[1] Then T2 = 1; if BBmd < BBmd[1] Then T2 = -1; diff2 = abs(BBmd-BBmd[1]); if T2 == 1 Then if diff2 >= diff2[1] Then color2 = MAGENTA; Else color2 = BLACK; Else{ if diff2 >= diff2[1] Then color2 = CYAN; Else color2 = BLACK; } Plot1(BBup, "상단",color1); Plot2(BBdn, "하단",color1); Plot3(BBmd, "중단",color2); 즐거운 하루되세요 > softtoug 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 안녕하세요 안녕하세요 하기 두가지 지표식이 실제 챠트에서 잘 표현되지 않고 있습니다. 수식 검토 부탁드립니다. 제가 원하는 것은 하기와 같습니다. 1. 볼린져 밴드 상단/하단 밴드가 전봉대비 넓어지거나 좁아질 때 색깔로 구분해서 표현하는 것입니다. 2. 볼린져 밴드 중앙이평이 증가할 때와 감소할 때 색깔을 달리 표현하는 것입니다. 예를들어, 가격 상승시 볼린져 중앙이평의 증가값이 증가할때는 분홍색 증가는 하고 있지만, 전전봉보다 증가값이 감소할 때는 검은색 이런식으로 표&#54676;이 가능한지요? 하락시에도 마찬가지로 표현이 가능한지요?
프로필 이미지
softtoug
2018-01-11
115
글번호 115665
지표