커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

노이즈가 심한 RSI를 시간보정한 RSIx라는 지표가 있던데 어떻게 구현을 하는건가요? 관련차트 파일첨부합니다.
프로필 이미지
운좋은
2009-04-21
1053
글번호 21833
지표
답변완료

재질문 드립니다~

if sdate > 날짜 and c > dayclose(1)*1.10 Then { exitlong("1/2씩 청산",onclose,def,"",Int(CurrentContracts*1/2*0.1)*10,1); } 진입이 있다고 치고 청산식이 위에 식일때 (날짜는 인풋으로 설정했음) 현재가 > 어제종가*1.10 일때 수량의 1/2 청산하고 그 다음부터는 매수청산 식이 안나온다는 말씀이죠? 저는 만약에 4월 1일날 위 수식대로 1/2가 청산이 되고 2일날 또 현재가 > 어제종가*1.10 이 되면 또 1/2이 청산이 되고 ... 계속 이런식으로 반씩 즉 조건이 맞으면 하루에 한번씩 청산되도록 하고싶은데 방법이 없을까요?
프로필 이미지
회원
2009-04-21
952
글번호 21832
시스템
답변완료

수식문의 드립니다.

아래와 같은 시스템식을 돌려보면 5분봉이하에서는 신호가 발생하나 10분봉 이상에서는 신호가 발생하지 않습니다. 원인을 알고 싶습니다. 그리고 5분차트로 돌렸을경우 그림처럼 4월17일의 경우 9:00분에 매수 174.20 에 진입하여 9:00분 174.20에 매수 청산이 되는데 청산시간도 그렇고 if C > EntryPrice+0.5 Then 이렇게 했으면 174.70에 청산이 되어야 하는게 아닌가요? 또 4월16일 9:10분 매수 청산은 174.95에 진입했으므로 175.45에 청산이 되어야 하는게 아닌가요? 어째튼 매수나 매도에서 0.5포인트든 1포인트든 정확히 익절할수 있는 방법을 알려 주시면 감사하겠습니다. 부탁드리겠습니다. var1= ma(c,5); var2= ma(c,20); if stime == 151500 and var1>var3 then buy("매수",AtMarket); if stime == 151500 and var1<var2 then sell("매도",AtMarket); if C > EntryPrice+0.5 Then exitlong(); if C < EntryPrice-0.5 Then exitshort(); SetStopLoss(1,PointStop); SetStopEndofday(1500);
프로필 이미지
왕숙천
2009-04-21
1055
글번호 21825
시스템
답변완료

지표식 문의

분봉에서 고가-저가를 계산한뒤 이것의 5개봉의 평균을 plot하려면 어떻게 하나요? 이때 전일의 것은 무시하고 그날것만 표시하는겁니다... 그럼 봉이 다섯개 생긴후 그려지게 되겠네요.... 그리고 각각의 고가-저가를 엑셀로 저장하고 싶어요..
프로필 이미지
파란별
2009-04-21
1038
글번호 21820
지표
답변완료

고점 저점 표시...

예전에 수식지왕님께서 올려 주신 지표인데, 3.1에 적용하니까 'i'가 선언되어 있지 않다고 오류가 생기네요. 수정 좀 부탁드립니다.^^ /* Swing 파동선.yin */ input:n(5),미완성사용(true); var:j(0),k(0),고점표시(0),저점표시(0); array:고[20](0),저[20](0),고bar[20](0),저bar[20](0), 고idx[20](0),저idx[20](0); #=========================================================# # 초기처리 (initialize routine) #=========================================================# # index()와 마찬가지로 1봉이 바뀔 때마다 1씩 증가 #---------------------------------------------------------# for j = 1 to 19 { 저bar[j] = 저bar[j] + 1; 고bar[j] = 고bar[j] + 1; 고idx[j] = i - 고bar[j]; 저idx[j] = i - 저bar[j]; } 고점표시=(o[n]+c[n])/2; 저점표시=(o[n]+c[n])/2; #=========================================================# # 주처리 (Main Routine) 파동선 계산 #=========================================================# # 전고점(peak) 계산 #---------------------------------------------------------# //Highest(H,2)[3] <= H[2] && H[2] > Highest(H,2) if Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) then { if 미완성사용 == true then { for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = i - 고bar[1]; 고점표시 = 고[1]*1.005; if 저bar[1] > 고bar[2] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } k = n + 1; for j = n + 2 to 고bar[2]-1 { if l[k] > l[j] then k = j; } 저[1] = l[k]; 저bar[1] = k; 저idx[1] = i - 저bar[1]; } } if 미완성사용 == false then { if 고bar[1] > 저bar[1] then { //고-저-고 순서로 나올 때 for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = i - 고bar[1]; 고점표시 = 고[1]*1.005; } //저-고-고 순서로 발생했을때 else if 고[1] <= h[n] then { //이전고점보다 높으면 고[1] = h[n]; //고점[1]만 바꿔준다. 저-고 순서 유지 고bar[1] = n; 고idx[1] = i -고bar[1]; 고점표시 = 고[1]*1.005; } } } #---------------------------------------------------------# # 전저점(trough) 계산 #---------------------------------------------------------# //Lowest(L,2)[3] >= L[2] && L[2] < Lowest(L,2) if Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) then { if 미완성사용 == true then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; if 고bar[1] > 저bar[2] then { for j = 18 downto 1 { 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } k = n + 1; for j = n + 2 to 저bar[2]-1 { if h[k] < h[j] then k = j; } 고[1] = h[k]; 고bar[1] = k; 고idx[1] = i - 고bar[1]; } } if 미완성사용 == false then { if 저bar[1] > 고bar[1] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; } else if 저[1] >= l[n] then { 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; } } } #---------------------------------------------------------# # 변곡점의 점 표시 #---------------------------------------------------------# if 고점표시 > h[n] then plot1(고점표시,"전고점",RED); //점그래프 if 저점표시 < l[n] then plot2(저점표시,"전저점",BLUE); //점그래프 #---------------------------------------------------------# # 파동선 표시 #---------------------------------------------------------# if 고bar[1]==n and 고[1] > 0 then plot3(고[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot3(저[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot4(저[1]); //선그래프 if 고bar[1]==n and 고[1] > 0 then plot4(고[1]); //선그래프
프로필 이미지
루시
2009-04-21
1248
글번호 21819
지표
답변완료

수식 좀 봐주세요~

현재 밑에식처럼 매수청산 사용하고 있는데요 이 청산이 매일 매일 적용되면 좋겠습니다 지금은 이 청산식이 한번 나오면 다음날 부터는 안나오더라구요 이 청산식이 한번 나와도 다음날 부터는 다시 적용되었으면 합니다. if sdate > 날짜 and c > dayclose(1)*설정퍼센 Then { exitlong("1/2씩 청산",onclose,def,"",Int(CurrentContracts*1/2*0.1)*10,1); }
프로필 이미지
회원
2009-04-21
1071
글번호 21818
시스템
답변완료

여집합

기존에 매수1 매수2 로 진입하는 조건이 있습니다 이번에, 매수3 조건을 추가하려고 합니다. 그런데 매수3은, 매수1, 매수2조건과 겹칠 수도 있는데요... 기존의 매수1, 매수2에 해당하지 않는 경우에 한해서 진입하고 싶습니다. 아래와 같이 하면 되는지요? condition1=매수1 조건 condition2=매수2 조건 if condition1==true then buy("매수1") if condition2==true then buy("매수2") condition3=매수3 조건 if condition1<>true and condition2<>true and condition3==true then buy("매수3") 이렇게 하면, 시뮬레이션 그래프에서, 매수1, 2에 안걸리는 곳 중에서, 매수3이 걸리게 되나요?
프로필 이미지
바랍이었어라
2009-04-21
1205
글번호 21817
시스템
답변완료

지표식과 시스템식 함께 부탁드립니다.

input: percent1(10), percent2(20), percent3(30),P1(50),P2(30),P3(20); Value1 = Highest(H, index+1); value2 = value1*(1-Percent1/100); value3 = value2*(1-Percent2/100); value4 = value3*(1-Percent3/100); Value5 = Lowest(L, index+1); value6 = value5*(1+P1/100); value7 = value6*(1+P2/100); value8 = value7*(1+P3/100); if MarketPosition == 0 and CurrentEntries == 0 and C > value2 Then buy("b1",AtLimit,value2); if MarketPosition == 1 and CurrentEntries == 1 and C > value3 Then buy("b2",AtLimit,value3); if MarketPosition == 1 and CurrentEntries == 2 and C > value4 Then buy("b3",AtLimit,value4); 먼저 빠른 답변 감사드립니다. 1. 선생님께서 만들어주신 수식인데여 저가가 저 라인을 돌파할 때 매수라고 말씀드렸는 데 저기는 종가로 나와있네여. 그리고 부등호도 반대고. 그래서 C를 L로 바꾸어고 부등 호도 반대로 해봤는데 저가가 밑으로 하락돌파할 때 신호가 나오지 않고 그 다음 봉에 서 매수신호가 나왔습니다. 저가가 저 선을 하락돌파할 때 바로 매수신호가 뜰 수 있는 수식 좀 부탁드립니다. 2. 두번째 질문은 로그차트에서 일정기간(예 20일)의 고저폭의 30% 50% 75% 등의 선을 긋는 지표식을 부탁드리며 3. 2번의 선들을 저점이 하향돌파할 때 매수신호가 발생하는 시스템식을 부탁드립니다. 일반 차트가 아니라 로그 차트입니다. 너무 부탁이 많네여. 감사합니다.
프로필 이미지
jaichun
2009-04-21
1115
글번호 21816
시스템
답변완료

다시 한번 봐주세요^^

안녕하세요? 어제 매매가 일어나지 않아 글을 올렸던 사람입니다. 제가 data2 참조차트가 '일봉'이라는 말을 쓰지 않았었네요. 어제 말씀드린대로 참조차트 일봉으로 아래와 같은 로직을 돌리면 매매가 일어나는데 DOEB = data2(atr(9))*진입A2_atrP; if C > dayopen+dayopen*DOEB/100 then buy(); 그런데「어제 timelow」와 관련된 조건을 넣으면 매매가 일어나지 않습니다. if date != date[1] Then var2 = var1[1]; ## 전일 9시~12시 전까지의 최저가 var1 = TimeLow(90000,115959); ## 당일 9시~12시 전까지의 최저가 var : DOEB(0); Input : 진입A2_atrP(0.16); DOEB = data2(atr(9))*진입A2_atrP; if C > dayopen+dayopen*DOEB/100 and daylow(1) == var2 then buy(); 과거 봉 데이터는 충분히 불러왔습니다. daylow(1) == var2라는 조건이 맞는 구간임에도 매매가 일어나지 않습니다. 참고로 참조차트를 분봉으로 돌리면 매매가 일어나더군요. 다시 한번 봐주세요. 그럼 수고하시고 좋은 하루 보내세요. [추가질문] 시간과 상관 없이 "daylow가 dayhigh 이전에 발생할경우"를 어떻게 코딩하는지도 알려주시면 감사하겠습니다.
프로필 이미지
산티아고
2009-04-21
1046
글번호 21815
시스템