커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

지표A, 지표B, 지표C의 (수정)작성 부탁드립니다.

담당자님, 안녕하세요. 작성해주신 지표 수식을 잘 활용하고 있습니다. 거듭 감사드립니다. 담당자님게서 작성해 주신 (변경전) 지표A, 지표B, 지표C에 아래의 제약조건을 추가(수정)한 변경후 지표의 작성을 부탁드립니다. 제일 하단에는 담당자님께서 작성해주신 (변경전) 지표A, 지표B, 지표C의 수식을 기재하였습니다. =========================================================== =========================================================== <지표 A> (3분봉 차트에서 사용하되 30분봉 기준의 시세를 연산하는 지표입니다) (변경전 요건) 1) 각 일자별 (고가-저가) 값이 최대인 30분봉 중 (D-1)일 부터 소급하여 과거 n일(n=10) 기간 중 (고가-저가) 값이 큰 상위 3개의 30분봉을 총 3개 선택하고 2) 위에서 선택된 상위 3개의 30분봉('고가, 저가'의 값)으로 각각의 '(고가+저가)/2'를 계산하여 그 값을 각각 3개의 수평선 라인으로 표시 (수정후 요건) [추가제약 조건 A] (당일 시가 + 5.0)~(당일 시가-5.0)의 범위 내에 30분봉의 고가, 저가가 모두 위치한 과거 n일(n=10) 기간의 30분봉 중에서 1) 각 일자별 (고가-저가)가 최대인 30분봉 중 (D-1)일 부터 소급하여 과거 n일(n=10) 기간 중 (고가-저가) 값이 큰 상위 3개의 30분봉을 총 3개 선택하고 2) 위에서 선택된 상위 3개의 30분봉('고가, 저가'의 값)으로 각각의 '(고가+저가)/2'를 계산하여 그 값을 각각 3개의 수평선 라인으로 표시하는 지표하는 지표로의 수정을 부탁드립니다. 즉, [ (당일 시가 + 5.0) < 각 일자별 30분봉 고가 < (당일 시가-5.0) and (당일 시가 + 5.0) < 각 일자별 30분봉 저가 < (당일 시가-5.0)]인 30분봉 중에서 1)의 30분봉을 선택하고 연산을 진행하는 것입니다. [추가제약 조건 A] 예시 (1) -> (1), (2), (4), (5)는 선택 대상(선택 pool)에서 제외 고 (2) 저 고 -----------------------------------------------------(당일 시가+5.0) 저 (3) 고 -> (3)에 해당하는 30분봉만 위 연산 과정 1)과 2)를 수행 저 고 --------------------------------------------------------(당일 시가-5.0) 저 고 (4) 저 (5) ============================================================ <지표 B> (3분봉 차트에서 사용하되 30분봉 기준의 시세를 연산하는 지표입니다) (변경전 요건) 1) <지표A>와 동일 2) 위에서 선택된 상위 3개의 30분봉에서 그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여 그 값을 각각 수평선 라인으로 표시 (수정후 요건) [추가제약 조건] (당일 시가 + 5.0)~(당일 시가-5.0)의 범위 내에 30분봉의 고가, 저가가 모두 위치한 과거 n일 기간의 30분봉 중에서 (-> A와 동일) 1) <지표A>와 동일 2) 위 1)에서 선택된 상위 3개의 30분봉에서 그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여 그 값을 각각 수평선 라인으로 표시하는 지표로의 수정을 부탁드립니다. =========================================================== <지표 C> (3분봉 차트에서 사용하되 30분봉 기준의 시세를 연산하는 지표입니다) (변경전 요건) 1) (고가-저가)를 ABS(시가-종가)로 적용하는 것 이외에는 <지표A>와 동일 2) (고가-저가)를 ABS(시가-종가)로, '(고가+저가)/2'를 '(시가+종가)/2'로 적용 이외에는 <지표A>와 동일 (수정후 요건) [추가제약 조건 C] (당일 시가 + 5.0)~(당일 시가-5.0)의 범위 내에 30분봉의 시가, 종가가 모두 위치한 과거 n일 기간의 30분봉 중에서 1) (고가-저가)를 ABS(시가-종가)로 적용하는 것 이외에는 <지표A>와 동일 2) (고가-저가)를 ABS(시가-종가)로, '(고가+저가)/2'를 '(시가+종가)/2'로 적용 하는 것 이외에는 <지표A>과 동일하고, 제약조건C가 추가된 지표로의 수정을 부탁드립니다. [추가제약 조건 C] 예시 (1) -> (1), (2), (4), (5)는 선택 대상(선택 pool)에서 제외 시 종 (2) 종 시 시 종 --------------------------------------------------------------------------(당일 시가+5.0) 종 시 (3) 시 종 -> (3)의 30분봉만 위 연산 과정 1)과 2)를 수행 종 시 시 종 -----------------------------------------------------------------------------(당일 시가-5.0) 종 시 시 종 (4) 종 시 (5) 위와 같이 지표A, B, C 수식의 수정을 부탁드립니다. 담당자님 노고와 답변에 미리 감사드립니다. 코로나 시국에 건강도 잘 챙기시기 바랍니다. =========================================================== =========================================================== =========================================================== 담당자님이 작성해주신 (변경전) <지표 A> input : 타주기분(30),n(10); var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0); var : ii(0),i1(0),i2(0),tempmax(0),tempi(0); Array : R1[50](0),M1[50](0); Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; for cnt = 1 to 49 { R1[cnt] = R1[cnt-1][1]; M1[cnt] = M1[cnt-1][1]; } } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { HH = H; LL = L; Condition1 = False; if Bdate != Bdate[1] Then { R1[0] = 0; M1[0] = 0; } } if H > HH Then HH = H; if L < LL Then LL = L; if HH-LL > R1[0] Then { R1[0] = HH-LL; Condition1 =true; } if Condition1 == true Then M1[0] = (HH+LL)/2; if M1[n] > 0 Then { for ii = 0 to 49 { tempR1[ii] = R1[ii]; tempM1[ii] = M1[ii]; } For i1 = 1 to n { tempmax = -1; For i2 = 1 to n { if (tempR1[i2] >= tempmax ) then { tempmax = tempR1[i2]; tempi = i2; } } NTHVALUE[i1] = tempM1[tempi]; tempR1[tempi] = -1; } Plot1(NTHVALUE[1]); Plot2(NTHVALUE[2]); Plot3(NTHVALUE[3]); } } ============================================================= 담당자님이 작성해주신 (변경전) <지표 B> input : 타주기분(30),n(10); var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0),OO(0),CC(0); var : ii(0),i1(0),i2(0),tempmax(0),tempi(0); Array : R1[50](0),M1[50](0); Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; for cnt = 1 to 49 { R1[cnt] = R1[cnt-1][1]; M1[cnt] = M1[cnt-1][1]; } } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { HH = H; LL = L; OO = O; Condition1 = False; if Bdate != Bdate[1] Then { R1[0] = 0; M1[0] = 0; } } if H > HH Then HH = H; if L < LL Then LL = L; CC = C; if HH-LL > R1[0] Then { R1[0] = HH-LL; Condition1 = true; } if Condition1 == true Then M1[0] = (OO+CC)/2; if M1[n] > 0 Then { for ii = 0 to 49 { tempR1[ii] = R1[ii]; tempM1[ii] = M1[ii]; } For i1 = 1 to n { tempmax = -1; For i2 = 1 to n { if (tempR1[i2] >= tempmax ) then { tempmax = tempR1[i2]; tempi = i2; } } NTHVALUE[i1] = tempM1[tempi]; tempR1[tempi] = -1; } Plot1(NTHVALUE[1]); Plot2(NTHVALUE[2]); Plot3(NTHVALUE[3]); } } ============================================================= 담당자님이 작성해주신 (변경전) <지표 C> input : 타주기분(30),n(10); var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),CC(0); var : ii(0),i1(0),i2(0),tempmax(0),tempi(0),tR1(0),tM1(0),di(0); Array : R1[50](0),M1[50](0); Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; di = 0; for cnt = 1 to 49 { R1[cnt] = R1[cnt-1][1]; M1[cnt] = M1[cnt-1][1]; } } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { OO = O; CC = C; di = di+1; tR1 = R1[0][1]; tM1 = M1[0][1]; if Bdate != Bdate[1] Then { R1[0] = 0; M1[0] = 0; } } CC = C; if di == 1 then { R1[0] = abs(OO-CC); M1[0] = (OO+CC)/2; } if di > 1 then { if abs(OO-CC) >= R1[0] Then { R1[0] = abs(OO-CC); M1[0] = (OO+CC)/2; } Else { R1[0] = tR1; M1[0] = tM1; } } if M1[n] > 0 Then { for ii = 0 to 49 { tempR1[ii] = R1[ii]; tempM1[ii] = M1[ii]; } For i1 = 1 to n { tempmax = -1; For i2 = 1 to n { if (tempR1[i2] >= tempmax ) then { tempmax = tempR1[i2]; tempi = i2; } } NTHVALUE[i1] = tempM1[tempi]; tempR1[tempi] = -1; } Plot1(NTHVALUE[1]); Plot2(NTHVALUE[2]); Plot3(NTHVALUE[3]); } } =============================================================
프로필 이미지
원칙투자자
2022-02-23
1288
글번호 156658
지표
답변완료

부탁 드립니다.

변환부탁 드립니다. 미리 감사 드립니다. tavg(c,p);
프로필 이미지
yes
2022-02-23
1224
글번호 156657
지표
답변완료

문의 드립니다.

매수 조건 1) 5 20 60 120 이평선 정배열이면서 2) MACD 기준선 0선을 아래에서 위로 돌파 한 후 10틱 아래서 매수 진입 손절은 10틱 익절은 20틱으로 한다 매도 조건 1) 5 20 60 120 이평선 역배열이면서 2) MACD 기준선 0선을 위에서 아래로 돌파 한 후 10틱 위에서 매도 진입 손절은 10틱 인절은 20틱으로 한다 부탁드립니다^^
프로필 이미지
선물대장
2022-02-23
1019
글번호 156650
시스템

노블레스 님에 의해서 삭제되었습니다.

프로필 이미지
노블레스
2022-02-23
1
글번호 156649
지표

노블레스 님에 의해서 삭제되었습니다.

프로필 이미지
노블레스
2022-02-23
0
글번호 156648
지표
답변완료

질문합니다.

스팟에는 eval이란 함수가 있던데 랭귀지에서는 비슷한 함수가 없나요? 참조데이터를 많이 써서 변경될때마다 변경해줘야하는 불편함이 있어서요. 참조데이터 갯수 변경시에 함수로 만들어쓰고 싶어서요. 혹시 eval같은 함수 업데이트 할 수 있나 건의드립니다.
프로필 이미지
절제9단
2022-02-23
1016
글번호 156647
지표

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

프로필 이미지
david200
2022-02-23
0
글번호 156640
지표
답변완료

수식 문의드립니다

조금전 알려주신 수식이 제가 원하던 값과 차이가 있어서요... 제가 설명을 잘못한듯요.ㅜㅜ 일봉 macd(12,24) > 0 이고 60분봉 macd(24,48) > 0 두 조건 만족시 매수 일봉 macd(12,24) < 0 일때 혹은 60분봉 macd(24,48) < 0 이중 한 조건이라도 만족시 매도 이렇게 식을 만들고 싶습니당. 번거롭게 해서 죄송합니다. 좋은 하루 보내세요~^^
프로필 이미지
탱탱볼
2022-02-23
1199
글번호 156636
시스템
답변완료

수식

안녕하세요. 하기 수식 부탁드립니다. Plot로 부탁드립니다. 당일 시초봉을 기준으로 60캔들 단위로 고점저점중심 부탁드립니다. 감사합니다.
프로필 이미지
한국사람73
2022-02-23
1398
글번호 156634
지표