커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

재문의

질문입니다 1>60분의 식을 10분에 적용시 라인이 나오지않아 재검토부탁드립니다 2>월주일식도 10분에 적용해보았읍니다 월식적용(주일60분10분등등) 주식적용(일60분10분등등) 일식적용(60분10분등등) 적용중입니다 분봉식 Input : ntime(60),Length1(5),Length2(20); var : S1(0),D1(0),TM(0),TF(0); Var : TLen1(0),TLen2(0),i1(0),i2(0),cnt(0); var : Hsum1(0),Hsum2(0),Havg1(0),Hma1(0); var : Lsum1(0),Lsum2(0),Lavg1(0),Lma1(0); var : HLsum1(0),HLsum2(0),HLavg1(0),HLma1(0); var : Hcum1(0),Hcum2(0),Havg2(0),Hma2(0); var : Lcum1(0),Lcum2(0),Lavg2(0),Lma2(0); var : HLcum1(0),HLcum2(0),HLavg2(0),HLma2(0); array : HH[100](0),LL[100](0); TLen1 = Ceiling((Length1 + 1) * .5); TLen2 = Ceiling((Length2 + 1) * .5); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { HH[0] = h; LL[0] = l; for cnt = 1 to 99 { HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if HH[0] > 0 and H > HH[0] then HH[0] = H; if LL[0] > 0 and L < LL[0] then LL[0] = L; if HH[TLen1*2] > 0 and LL[TLen1*2] > 0 then { Hsum2 = 0; Lsum2 = 0; HLsum2 = 0; for i1 = 0 to TLen1-1 { Hsum1 = 0; Lsum1 = 0; HLsum1 = 0; for i2 = i1+0 to TLen1-1+i1 { Hsum1 = Hsum1 + HH[i2]; Lsum1 = Lsum1 + LL[i2]; HLsum1 = HLsum1 + (HH[i2]+LL[i2])/2; } Havg1 = Hsum1/TLen1; Hsum2 = Hsum2 + Havg1; Lavg1 = Lsum1/TLen1; Lsum2 = Lsum2 + Lavg1; HLavg1 = HLsum1/TLen1; HLsum2 = HLsum2 + HLavg1; } Hma1 = Hsum2/TLen1; Lma1 = Lsum2/TLen1; HLma1 = HLsum2/TLen1; } if HH[TLen2*2] > 0 and LL[TLen2*2] > 0 then { Hcum2 = 0; Lcum2 = 0; HLcum2 = 0; for i1 = 0 to TLen2-1 { Hcum1 = 0; Lcum1 = 0; HLcum1 = 0; for i2 = i1+0 to TLen2-1+i1 { Hcum1 = Hcum1 + HH[i2]; Lcum1 = Lcum1 + LL[i2]; HLcum1 = HLcum1 + (HH[i2]+LL[i2])/2; } Havg2 = Hcum1/TLen2; Hcum2 = Hcum2 + Havg2; Lavg2 = Lcum1/TLen2; Lcum2 = Lcum2 + Lavg2; HLavg2 = HLcum1/TLen2; HLcum2 = HLcum2 + HLavg2; } Hma2 = Hcum2/TLen2; Lma2 = Lcum2/TLen2; HLma2 = HLcum2/TLen2; } Plot1(Hma1, "고가삼각가중1"); Plot2(Hma2, "고가삼각가중2"); Plot3(Lma1, "저가삼각가중1"); Plot4(Lma2, "저가삼각가중2"); Plot5(HLma1, "중간삼각가중1"); Plot6(HLma2, "중간삼각가중2"); Plot7(Hma2+abs(Hma2-Lma2), "20고가+진동폭"); Plot8(Lma2-abs(Hma2-Lma2), "20저가-진동폭"); }
프로필 이미지
회원
2020-07-27
1453
글번호 141007
지표
답변완료

지표

항상감사합니다 60분 주간장60분의 고저7개표시 10분봉에 나타나기원합니다 9~10 10~11. . . ..... ----------------------------------- 주신수식값은 2라인만 나옵니다 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 60분 미만의 주기에서 60분봉의 고가와 저가를 그리는 지표식입니다. input : N분(60); var : S1(0),D1(0),TM(0),TF(0),cnt(0); Array : HH[50](0),LL[50](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%N분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and N분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and N분 > 1 and TM >= TM[1]+N분) or (Bdate == Bdate[1] and N분 == 1 and TM > TM[1]) Then { HH[0] = H; LL[0] = L; for cnt = 1 to 49 { HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; if HH[0] > 0 And LL[0] > 0 then { Plot1(HH[0],"현재N분고가"); Plot2(LL[0],"현재N분저가"); } /* 60분기준 전봉 if HH[1] > 0 And LL[1] > 0 then { Plot3(HH[1],"직전N분고가"); Plot4(LL[1],"직전N분저가"); } */ } 즐거운 하루되세요 > 에리카 님이 쓴 글입니다. > 제목 : 지표첨삭 > 항상감사합니다 10분봉에 60분고저값나타내려하는데 추가수식 필요해요 시간이흐르니 지표값이 이전값이 사라져요 if stime < 100000 Then { var1 = DayHigh; var2 = daylow; } plot1(var1); plot2(var2); if stime < 110000 Then { var3 = DayHigh; var4 = daylow; } plot3(var3); plot4(var4); if stime < 120000 Then { var5 = DayHigh; var6 = daylow; } plot5(var5); plot6(var6); if stime < 130000 Then { var7 = DayHigh; var8 = daylow; } plot7(var7); plot8(var8); if stime < 140000 Then { var9 = DayHigh; var10 = daylow; } plot9(var9); plot10(var10); if stime < 150000 Then { var11 = DayHigh; var12 = daylow; } plot11(var11); plot12(var12); if stime < 160000 Then { var13 = DayHigh; var14 = daylow; } plot13(var13); plot14(var14);
프로필 이미지
회원
2020-07-27
1461
글번호 140998
지표
답변완료

종목 검색 수식 좀 봐주세요.

input: PE1(30),PE2(60),BE1(1.02),BE2(1.2); VAR: SUM(0), CNT(0); VAR1=MA(V,PE2); VAR2=SAR(0.02,0.2); VAR3=ma(C,10); VAr4=MA(L,20); sum=0; for cnt = 1 to 10 begin if V[CNT]<=VAR1[CNT] then SUM=SUM+1; end; if sum>=8 and V>=VAR1*2 and highest(V,PE1)==V then find(sum); 요렇게 했는데, 종목 검색에서 데이터가 없다고 나옵니다. 검토 좀 부탁 드릴께요.
프로필 이미지
육일놀고하루쉬고
2020-07-27
1601
글번호 140997
종목검색
답변완료

수식 의뢰 부탁드립니다.

개발자님의 노고에 감사드립니다 분봉 차트에서 트레이딩을 하고 있습니다 매수조건 당일 저가 + ( 전영업일 고가 - 저가 ) 터치 시 매수하려고 합니다 감사합니다
프로필 이미지
산이보리
2020-07-27
1718
글번호 140996
시스템
답변완료

부탁드립니다.

도움에 감사 드립니다. 변환부탁 드립니다.
프로필 이미지
뮬리
2020-07-27
1771
글번호 140995
지표
답변완료

참조 데이터(data2)관련 문제 문의

안녕하세요. 항상 도와주셔서 큰 도움이 되고 있습니다. 다름이아니라 참조데이터를 수식에 사용하는데 문제가 있어서 문의드립니다. 1. 코스닥 150 레버리지 ETF (data2) 의 '전일' 시종고저 기준으로 IBS라는 지표를 도출하고, 2. IBS가 0.8 이상일 경우 코스닥 150 인버스를 매수하는 로직을 작성하였으나, 3. data2가 아닌 코스닥 150 인버스(data1) 자체의 봉만을 참조하는 결과가 발생하고 있습니다. - 그림1에서 IBS로그를 확인한 결과 0.8이상인 것을 확인할 수 있으며, - 그림2에서 IBS값은 data2가 아닌, data1의 전일 IBS 값임을 확인할 수 있습니다. (참고로 지표는 data2의 IBS값을 표기하고 있으며 정상적으로 보여주는 것을 알 수 있습니다. 아래 수식 공유드립니다.) [시스템 수식] Input : k(0.5); #IBS지표 Input : highline(0.8),lowline(0.2); var : IBS(0); IBS= data2((dayclose(1)-daylow(1))/(dayhigh(1)-daylow(1))); #1일 1회 매수 input: N(1); var: cnt(0), count(0); Count = 0; for cnt = 0 to 10 { if EntryDate(cnt) == sdate then Count = Count + 1; } #Range var: rng(0); rng = dayhigh(1)-daylow(1); #매수 조건 if IBS >= 0.8 and C > dayopen +rng*k and count < N then { MessageLog("IBS %.2f", IBS); buy("매수"); } #매도 조건 if stime >= 151600 and stime <151800 Then { ExitLong("시초매도",AtMarket,DEF,""); } [지표 수식] Input : highline(0.8),lowline(0.2); var : IBS(0); IBS=(data2(dayclose(1))-data2(daylow(1)))/(data2(dayhigh(1))-data2(daylow(1))); Plot1(IBS, "IBS"); PlotBaseLine1(highline, "기준선1"); PlotBaseLine2(lowline, "기준선2");
프로필 이미지
기사단장
2020-07-27
1844
글번호 140994
시스템
답변완료

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

오늘 고점이후로 현재봉까지의 모든 wave의 높이(해당 wave의 고가 - 해당 wave의 저가)가 0.5*(어제 고점 - 어제 저점) 보다 크다 부탁드립니다. 그림설명 (1) 높이 > 0.5 *(A) 높이 (2) 높이 > 0.5 *(A) 높이 (3) 높이 > 0.5 *(A) 높이 이런 종목을 찾고 싶습니다. 또는 (1), (2), (3) 중 가장 작은 높이 > 0.5*(A) 높이 를 찾아라..입니다. 감사합니다.
프로필 이미지
cs아빠
2020-07-27
1851
글번호 140993
종목검색
답변완료

도움을 부탁드리겠습니다.

안녕하세요..항상 도와주심에 감사드립니다. 이번에 너무 어려운 부탁을 좀 드리게 되었습니다. 첨부한 식은 3개로 1. 사용자 함수 : 고가 저가를 잇는 추세선함수 2. 1번 함수를 불러서 그려주는 지표 3. 타주기 분봉을 1분봉에서 그려주는 지표(고가저가 표시) 이셋을 섞는게 가능할까요..꼭 되었으면 좋겠습니다.. 즉 1분봉 차트에서, 3번식 타주기 분봉차트를 가져와 지표로 표시해줄때에 1의 고가저가를 잇는 추세선 함수가 1분봉을 그리는게 아니라 불러온 타주기값의 고가저가를 사용해서 잇는 추세선을 그리게 하고 싶습니다. 며칠동안 이거저거 섞어보긴 했는데... 현재 제 능력으로는 십년걸려도 무리인걸 알았습니다 ㅠㅠ 꼭좀 부탁드립니다..너무 어렵습니다..오래걸리더라도 좀 도와주시면 안될까요 ...기다릴수 있습니다. #==========================================# # 사용자함수 : 고저라인 지그재그 파동 # 버 전 : 1.2 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# 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 oHiZZ[1,1] < HH and oLoZZ[1,1] > LL Then { // 기존의 파동을 벗어난 경우 If HH - oHiZZ[1,1] > oLoZZ[1,1] - LL Then // 많이 벗어난 쪽으로 처리 처리구분 = "고점처리"; Else If HH - oHiZZ[1,1] < oLoZZ[1,1] - LL Then 처리구분 = "저점처리"; Else If 최종꼭지점 == "저점" Then // 벗어난 정도가 동일하면 지그재그 순서대로 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } Else If oLoZZ[1,1] > LL Then 처리구분 = "저점처리"; Else If oHiZZ[1,1] < HH Then 처리구분 = "고점처리"; Else If 최종꼭지점 == "저점" 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; //////////////// ////// 2. 고저라인 지그재그파동 지표식 //////////////// Input:기간(5),종가사용여부(0); Var:TL1(0),신규구분(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(기간, 종가사용여부, 고, 저, 신규구분); If Value1 == 1 Then { // 고점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } Else If Value1 == -1 Then { // 저점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } TL_SetSize(TL1,2); ///////////// 3 #==========================================# #==========================================# # 지 표 명 : 타주기분봉차트 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:분봉(5); Var:HH(0),LL(0),TL1(0),TL2(0),TL3(0),TL4(0); Value1 = 분봉/BarInterval; Value2 = DayIndex()%Value1; If Value2 == 0 Then { &#160;&#160; HH = H; &#160;&#160; LL = L; } Else { &#160;&#160; HH = Max(HH,H); &#160;&#160; LL = Min(LL,L); } If Value2 == Value1 - 1 or time == iff(CodeCategory()<3,150000,151500) then&#160; { &#160;&#160; TL1 = TL_New(Date[Value2],sTime[Value2],LL,Date[Value2],sTime[Value2],HH); &#160;&#160; TL2 = TL_New(Date[Value2],sTime[Value2],HH,Date,sTime,HH); &#160;&#160; TL3 = TL_New(Date[Value2],sTime[Value2],LL,Date,sTime,LL); &#160;&#160; TL4 = TL_New(Date,sTime,LL,Date,sTime,HH); } // TL1만으로는 구분이 잘 안되서 박스형태로 그리기 위해 추세선 4개를 사용했습니다.
프로필 이미지
지스카드
2020-07-26
2000
글번호 140992
사용자 함수
답변완료

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

종목을 아래 해당사항에 부합이 되면 추려내서 투자를 하려고 합니다. 1. 5일선, 20일선, 60일선이 정배열이면서 2. 현재가가 30일 이동평균을 뚫고 3. 그날에 거래량이 30일동안 평균의 5배인 종목 을 추려내려고 하고 싶을때 식을 어떻게 만들어야 하는지요? 부탁 드립니다. 만들다가 잘 못해서 올립니다. 감사합니다
프로필 이미지
머니사이언스
2020-07-26
1727
글번호 140991
종목검색