커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수정식 의뢰

안녕하세요! 보내드린 수식은 이평 5 20 변곡 막대 수식입니다! 매매를 하다보니 막대수식에 가격이 표시되면 매매에 도움이 될 것 같아서 수식 수정을 부탁드립니다! 강세약세 첨부파일 화살표시 가격표시 부분 참조해 주세요! 가격표시가 꼭 화살표 부분이 안되면 다른 위치라도 가격표시가 되었으면 좋겠습니다! 감사합니다! input : P1(5),P2(20); var1 = ma(C,P1); var2 = ma(C,P2); if crossup(var1,var2) Then value1 = (var1+var2)/2; if CrossDown(var1,var2) Then value2 = (var1+var2)/2; plot1(var1,"이평1"); plot2(var2,"이평2"); plot3(value1,"골드"); plot4(value2,"데드"); --------------------------------------------------------------------------------- 2. 추가로 수식을 올립니다! 첨부파일은 수식대로 나온 결과 입니다! 수정을 부탁드려요! 2번째 첨부파일을 보면 노랑색선과 녹색선이 있는데 이 선들을 좀더 길게 연장하고 싶습니다! 첨부 그림은 제가 수동으로 연장을 하였습니다! 최근을기준으로 8개 변곡선이 연장이 되었으면 좋겠습니다! Input:length1(12); Var: j1(0),lastHiVal1(0),lastLoVal1(0),sBar1(0),eBar1(0),TL11(0),TL12(0),Text11(0),처리구분1(""),T(0); var : A1(0),V1(0),D1(0),T1(0),Bcond(false); var : A2(0),V2(0),D2(0),T2(0),Scond(false); Array:고점1[10,2](0),저점1[10,2](0); //가격,위치 ############## Input:chRate(0.5); //전환율 또는 변동률 Var:j(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),trnd(0),TL(0), date11(0),date12(0),time11(0),time12(0),TL1(0), date21(0),date22(0),time21(0),time22(0),TL2(0), date31(0),date32(0),time31(0),time32(0),TL3(0); Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0); //hiVal[1]은 전고점, hiVal[2]는 전전고점, hiVal[3]은 전전전고점 //hiVal[0]은 변곡점 이후 현재봉까지의 고점. 현재 고점은 진행중이므로 계속 바뀐다. //loVal[0]은 반대 개념 처리구분1 = ""; If Highest(H,length1) == H and lastHiVal1 <> H and Lowest(L,length1) == L and lastLoVal1 <> L Then { If 저점1[1,1] > L Then 처리구분1 = "저점처리"; If 고점1[1,1] < H Then 처리구분1 = "고점처리"; } Else If Highest(H,length1) == H and lastHiVal1 <> H Then 처리구분1 = "고점처리"; Else If Lowest(L,length1) == L and lastLoVal1 <> L Then 처리구분1 = "저점처리"; If 처리구분1 == "고점처리" Then { lastHiVal1 = H; If 고점1[1,2] < 저점1[1,2] Then { For j1 = 10 DownTo 2 { 고점1[j1,1] = 고점1[j1-1,1]; 고점1[j1,2] = 고점1[j1-1,2]; } } If 고점1[1,2] < 저점1[1,2] or 고점1[1,1] < H Then { 고점1[1,1] = H; 고점1[1,2] = Index; sBar1 = Index - 저점1[1,2]; eBar1 = 0; If TL_GetBeginDate(TL11) == sDate[sBar1] and TL_GetBeginTime(TL11) == sTime[sBar1] Then { TL_Delete(TL11); TL_Delete(TL12); Text_Delete(Text11); } TL11 = TL_New(sDate[sBar1],sTime[sBar1],저점1[1,1],sDate[eBar1],sTime[eBar1],고점1[1,1]); TL12 = TL_New(sDate[sBar1],sTime[sBar1],저점1[1,1],sDate[eBar1],sTime[eBar1],저점1[1,1]); A1 = 1; V1 = 저점1[1,1]; D1 = sDate[sBar1]; T1 = sTime[sBar1]; Text11 = Text_New(sDate[eBar1],sTime[eBar1],고점1[1,1], NumToStr(고점1[1,1],2)); Text_SetStyle(Text11, 2, 1); TL_SetSize(TL12,2); TL_SetColor(TL12,green); } } If 처리구분1 == "저점처리" Then { lastLoVal1 = L; If 저점1[1,2] < 고점1[1,2] then { For j1 = 10 DownTo 2 { 저점1[j1,1] = 저점1[j1-1,1]; 저점1[j1,2] = 저점1[j1-1,2]; } } If 저점1[1,2] < 고점1[1,2] or 저점1[1,1] > L then { 저점1[1,1] = L; 저점1[1,2] = Index; sBar1 = Index - 고점1[1,2]; eBar1 = 0; If TL_GetBeginDate(TL11) == sDate[sBar1] and TL_GetBeginTime(TL11) == sTime[sBar1] Then { TL_Delete(TL11); TL_Delete(TL12); Text_Delete(Text11); } TL11 = TL_New(sDate[sBar1],sTime[sBar1],고점1[1,1], sDate[eBar1],sTime[eBar1],저점1[1,1]); TL12 = TL_New(sDate[sBar1],sTime[sBar1],고점1[1,1], sDate[eBar1],sTime[eBar1],고점1[1,1]); A1 = -1; V1 = 고점1[1,1]; D1 = sDate[sBar1]; T1 = sTime[sBar1]; Text11 = Text_New(sDate[eBar1],sTime[eBar1],저점1[1,1], NumToStr(저점1[1,1],2)); Text_SetStyle(Text11, 2, 0); TL_SetSize(TL12,2); TL_SetColor(TL12,yellow); } } TL_SetSize(TL11,2); TL_SetColor(TL11,red); ############################### upRate = 1 + (chRate/100); //상승률 dnRate = 1 - (chRate/100); //하락률 for j = 1 to 9 { //전고,전저점을 9개까지 보관 loBar[j] = loBar[j] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리 hiBar[j] = hiBar[j] + 1; //전고점의 위치 } if hiVal[0] <= H or hiVal[0] == 0 then { //전고,전저점 이후 현재까지의 고점 hiVal[0] = H; //0을 체크한 이유는 초기에 값이 없는 구간이 생기기 때문 hiBar[0] = 0; //현재 고점의 위치가 0이란 것은 현재봉의 고가가 구간 고점이라는 의미 } else { hiBar[0] = hiBar[0] + 1; //현재 고점의 위치 } if loVal[0] >= L or loVal[0] == 0 then { //전고,전저점 이후 현재까지 저점 loVal[0] = L; loBar[0] = 0; } else { loBar[0] = loBar[0] + 1; //현재 구간 저점의 위치 } if trnd != dnTr && hiVal[0] > H && hiVal[0] * dnRate > L then trnd = dnTr; //저가가 고가 대비 변동률보다 밑으로 떨어지면 하락추세로 설정 //단, 현재봉의 고가가 변곡점 이후 최고가이면 상승 추세가 진행중이라고 본다. //그래서 현재봉의 고가가 hiVal[0]보다 작다는 조건이 추가되었다. else if trnd != upTr && loVal[0] < L && loVal[0] * upRate < H then trnd = upTr; //고가가 저가 대비 변동률보다 높으면 상승추세로 설정 if trnd[1] == upTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면 for j = 8 downto 1 { //새로운 전고점이 생기는 것이므로 hiVal[j+1] = hiVal[j]; //전고점을 하나씩 뒤로 보낸다. hiBar[j+1] = hiBar[j]; //전고점은 전전고점이 되고, 전전고점은 전전전고점이 된다. } hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입 hiBar[1] = hiBar[0]; hiVal[0] = H; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가 hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; //전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다. date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜 time12 = stime[hiBar[1]]; //추세선 종료시간 Value12 = hiVal[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 A2 = -1; V2 = Value12; D2 = date12; T2 = time12; } if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데 hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면 hiVal[0] * dnRate > L then { hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다. hiBar[1] = hiBar[0]; hiVal[0] = H; hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; //전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다. date12 = date[hiBar[1]]; //추세선 종료일 time12 = stime[hiBar[1]]; Value12 = hiVal[1]; TL_SetEnd(TL1, date12,time12,Value12); //TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다. //TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다. } if trnd[1] == dnTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우 for j = 8 downto 1 { //이전저점은 전전저점으로, 전전저점은 전전전저점으로 번호를 부여 loVal[j+1] = loVal[j]; loBar[j+1] = loBar[j]; } loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; date11 = date[hiBar[1]]; //전저점이 새로이 생긴 것이므로 시작점은 전고점이 된다. time11 = stime[hiBar[1]]; Value11 = hiVal[1]; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); A2 = 1; V2 = Value12; D2 = date12; T2 = time12; } if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데 loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면 loVal[0] * upRate < H then { loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다. loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL_SetEnd(TL1, date12,time12,Value12); } if trnd == upTr and loVal[2] > loVal[1] then TL_SetColor(TL1,BLUE); else if trnd == dnTr and hiVal[2] < hiVal[1] then TL_SetColor(TL1,RED); else TL_SetColor(TL1,BLACK); TL_SetSize(TL1,2); TL_SetColor(TL2,RED); TL_SetColor(TL3,BLUE); if var1 <= 0 and Trnd == uptr and Trnd != Trnd[1] Then{ var1 = 1; value1 = loval[1]; TL1 = Text_New(sdate[lobar[1]],stime[lobar[1]],value1-PriceScale*2,"●"); TL_SetColor(TL,RED); TL_SetSize(TL,2); Text_SetStyle(TL1,2,2); Text_SetColor(TL1,RED);#텍스트 색상 TL= Text_New(sdate[lobar[1]],stime[lobar[1]],L,"상승"); Text_SetColor(TL,RED);#텍스트 색상 } if var1 >= 0 and Trnd == dntr and Trnd != Trnd[1] then{ var1 = -1; value1 = hival[1]; TL2 = Text_New(sdate[hibar[1]],stime[hibar[1]],value1+PriceScale*2,"●"); TL_SetColor(TL,BLUE); TL_SetSize(TL,2); Text_SetStyle(TL2,2,2);#텍스트 좌우 상하 정렬 Text_SetColor(TL2,BLUE);#텍스트 색상 TL= Text_New(sdate[hibar[1]],stime[hibar[1]],H,"하락"); Text_SetColor(TL,BLUE);#텍스트 색상 } Bcond = A1 == 1 and A2 == 1; Scond = A1 == -1 and A2 == -1; if Bcond == true and Bcond[1] == false and V1 == V2 and D1 == D2 and T1 == T2 Then buy(); if Scond == true and Scond[1] == false and V1 == V2 and D1 == D2 and T1 == T2 Then sell(); ------------------------------------------------------------------------------------ 3. 아래는 키움의 신호 입니다! 예스용으로 변환 부탁드립니다! 상한가 h == c AND ((if(c<5000,c+5,if(c<10000,c+10,if(c<50000,c+50,if(c<100000,c+100,if(c<500000,c+500,c+1000)))))) / c(1) > 1.15) 하한가 l == c AND ((if(c(1)<5000,c-5,if(c(1)<10000,c-10,if(c(1)<50000,c-50,if(c(1)<100000,c-100,if(c(1)<500000,c-500,c-1000 )))))) / c(1) < 0.85)
프로필 이미지
qha71
2018-04-30
375
글번호 118560
지표
답변완료

수식문의...!

답변 감사합니다. 보내주신 프로그램은 5일선이 20일선을 돌파(골드크로스)시 매수, 하락(데드크로스)시 매도 하는것같읍니다. 재 문의 드립니다. 20일선만 가지고 상향돌파시 매수하고, 20일선을 이탈시 매도하는 프로그램을 알려 주시면 감사하겠읍니다. 프로그램에 무뢰한이라 작성및 적용방법도 자세히 알려주시면 고맙겠읍니다. 초등학생한테 알려주시는 수준에서 알려주시면 감사합니다. 스럼 수고하세요... 안녕하세요 예스스탁입니다. var : T(0); var1 = ma(C,5); var2 = ma(c,20); if crossup(var1,var2) Then { T = 1; if MarketPosition == -1 Then ExitShort(); } if CrossDown(var1,var2) Then{ T = -1; if MarketPosition == 1 Then ExitLong(); } #골드구간에서 종가가 상승반전하면 매수 if T == 1 and C > C[1] and C[1] < C[2] Then buy(); #데드구간에서 종가가 하락반전하면 매도 if T == -1 and C < C[1] and C[1] > C[2] Then sell(); 즐거운 하루되세요 > 다옴 님이 쓴 글입니다. > 제목 : 수식문의...! > 안녕하십니까? 저는 한국투자증권을 이용하고 있읍니다. 다름이 아니오라 10일선이나 20일선을 기준으로 매매를 하고 싶은데 수식작성을 몰라서 문의하게 되었읍니다. 예) 10일선 기준 매매를할시 10일선 상향돌파후 지지점 에서 매수하고, 하향돌파시 매수청산 후 하향지지점에서 매도를 하고, 사향돌파시 매도청산후 지지점에서 매수하고싶은데 수식 을 모르겠읍니다. 바쁘시 더라도 수식좀 잘 부탁 드립니다. 제연락처입니다 [010-5731-1163]필요시 연락 주시기 바랍니다. 그럼 수고하세요...
프로필 이미지
다옴
2018-04-27
272
글번호 118559
시스템

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

프로필 이미지
회원
2018-04-27
6
글번호 118556
지표
답변완료

문의드립니다.

예스랭귀지로 짠 전략을 실전전략차트에 걸었을때 수식에서의 entryprice(1) 이나 entryprice(2) 이 아직 발생하지 않았다면 entryprice(1) 이나 entryprice(2) 는 어떤값을 반환하나요? 가령 예를 들자면 직전진입가보다 높을때만 매수 들어가는 식인데 만봉의 전략차트에서는 직전진입가가 없는 경우 말입니다. 답변 부탁드립니다. 감사합니다.
프로필 이미지
자오지환웅
2018-04-27
248
글번호 118535
시스템
답변완료

주말 잘보내시고 잘부탁드려요

수식1 if(MACD(short,long)>eavg(MACD(short,long),signal), if(sar(af,maxaf)<c,2,1), if(sar(af,maxaf)>c,-2,1)) 지표조건설정 short 8 long 180 signal 25 af 0.009 maxaf 0.03
프로필 이미지
매치다는
2018-04-27
248
글번호 118534
시스템
답변완료

잘 부탁드립니다

키움지표입니다 오실레이터 지표로 부탁드려요 수식1 A=(SMI = eavg(eavg(c-(highest(H,g) + lowest(L,g))*0.5,r),s) * 100/ (0.5 * eavg(eavg(highest(H,g)-lowest(L,g),r),s))); if(A>=A(1),A,0)//상승 수식2 A=(SMI = eavg(eavg(c-(highest(H,g) + lowest(L,g))*0.5,r),s) * 100/ (0.5 * eavg(eavg(highest(h,g)-lowest(L,g),r),s))); if(A<=A(1),A,0)//하락 수식3 0 지표조건설정 g 100 r 5 s 100
프로필 이미지
매치다는
2018-04-27
357
글번호 118533
지표
답변완료

함수요청

안녕하세요? 함수 수정 요청드립니다. 아래 전략을 항셍 5분봉으로 사용하고 있습니다. 최근 5개의 고저점을 파악하야 추세추종한다는 전략인데 청산된 봉 이후부터 재진입을 탐색하며 매일 아침마다 생성되는 NN개의 봉을 제거하고 NN+1개봉 부터 진입이든 청산이든 신호를 탐색하며 청산된 봉에 재진입을 하지 않고 청산된 그 이후부터 재진입을 탐색하고자 합니다. 함수수정 요청드립니다. Vars : SP(0,data1), TickSize(0,data1); Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2); var : v1(0,data2),v2(0,data2); SP = MarketPosition; TickSize = PriceScale; v1 = data2(H); v2 = data2(L); IF v1[10] > 0 Then Begin fstHH = data1(Highest(H, 5)); fstLL = data1(Lowest(L, 5)); sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]); sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]); End; IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize); IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL - TickSize); if MarketPosition == 1 then { ExitLong("bl",AtStop,EntryPrice*0.99); ExitLong("bp",Atlimit,EntryPrice*1.03); } if MarketPosition == -1 then { ExitShort("sl",AtStop,EntryPrice*1.01); ExitShort("sp",Atlimit,EntryPrice*0.97); } SetStopInactivity(3,23,percentStop);
프로필 이미지
흰둥이아빠
2018-04-27
297
글번호 118530
시스템
답변완료

60이평 가로 수평선

아래 수식은 키움 수식인데 예스 수식으로 작성해주시면 감사하겠습니다 수식1 valuewhen(1,avg(c,period)>avg(c,period,1),avg(c,period)) 수식2 valuewhen(1,avg(c,period)<avg(c,period,1),avg(c,period)) 수식3 avg(c,period) 지표 조건 설정 period 60
프로필 이미지
원칙1
2018-04-27
364
글번호 118529
지표
답변완료

수식부탁드립니다.

안녕하세요. 늘 도움 감사합니다. 아래의 수식가운데...tema 25 선 위에는 붉은색강조로... tema 25 선 아래는 파란색강조로 변경 부탁드립니다. INPUTS: P1(4),P2(6),P3(8),P4(10),P5(12),P6(25); VARS: TEMA3(0),TEMA4(0),TEMA5(0),TEMA6(0),TEMA7(0),TEMA8(0),TEMA9(0),TEMA10(0); vars : line20(0),line60(0),line100(0); TEMA3 = tema(p1); TEMA4 = tema(p2); TEMA5 = tema(p3); TEMA6 = tema(p4); TEMA7 = tema(p5); TEMA8 = tema(p6); PLOT1(TEMA3,"TEMA3"); PLOT2(TEMA4,"TEMA4"); PLOT3(TEMA5,"TEMA5"); PLOT4(TEMA6,"TEMA6"); PLOT5(TEMA7,"TEMA7"); PLOT6(TEMA8,"TEMA8");
프로필 이미지
알리섬
2018-04-27
264
글번호 118527
강조