커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

지표

색상넣어주세요.문법에 맞게 알려주세요 ************************************************************************************* 색상추가식해봤읍니다. input : ndate(20200302),색상1(YELLOW),색상2(GREEN); if sdate == ndate Then { var1 = (DayHigh+daylow)/2; var2 = (DayOpen+DayClose)/2; } if var1 > 0 and var2 > 0 Then { plot1(var1,색상1);이부분 에러 plot2(var2,색상2);이부분 에러 } 틀려요 ********************************************************************************** 1-1(시고저종합) input : ndate(20200302); if sdate == ndate Then { var1 = (DayHigh+daylow)/2; var2 = (DayOpen+DayClose)/2; } if var1 > 0 and var2 > 0 Then { plot1(var1); plot2(var2); } 2 var1 = (H+L)/2; var2 = (O+c)/2; var3 = (H[1]+L[1])/2; var4 = (O[1]+c[1])/2; var5 = (var1+var3)/2; plot1(var1); plot2(var2); if var3 > 0 and var4 > 0 then { plot3(var3); plot4(var4); plot5(var5); } 3 input : ndate1(20200302),ndate2(20200303); if sdate == ndate1 Then { var1 = (DayHigh+daylow)/2; var2 = (DayOpen+DayClose)/2; } if sdate == ndate2 Then { var3 = (DayHigh+daylow)/2; var4 = (DayOpen+DayClose)/2; } if var1 > 0 and var2 > 0 then { plot1(var1); plot2(var2); } if var3 > 0 and var4 > 0 then { plot3(var3); plot4(var4); } if var1 > 0 and var3 > 0 Then { value1 = (var1+var3)/2; plot5(value1); } 4 var1 = (H+L)/2; var2 = (O+c)/2; var3 = (H[100]+L[100])/2; var4 = (O[100]+c[100])/2; var5 = (var1+var3)/2; plot1(var1); plot2(var2); if var3 > 0 and var4 > 0 then { plot3(var3); plot4(var4); plot5(var5); }
프로필 이미지
회원
2020-03-05
473
글번호 136591
지표
답변완료

문의드립니다

if C >= dayopen+PriceScale*1 Then PlotPaintBar(H,L,"강조",MAGENTA); if C <= dayopen-PriceScale*1 Then PlotPaintBar(H,L,"강조",GREEN); 위수식에서 당일시가로부터고저중심갑 강조식을 부탁드립니다~~미리감사드립니다
프로필 이미지
유선
2020-03-05
505
글번호 136590
강조
답변완료

문의드립니다.

value1이 3봉이상 상승중이고 macd가 3봉이상 상승중이며 10일 이평이 상승중이면 매수 부탁드립니다.
프로필 이미지
as8282
2020-03-04
538
글번호 136589
시스템
답변완료

질문입니다.

아래 수식을 보면 틱차트에 1분봉 표시해도 안되는데 1분봉 표시 되게 할 수 없을까요? 1분봉 이상을 하면 잘나오는데 1분봉 잘 안됩니다. 1분봉 표시 하게 해주면 더 좋겠습니다. 감사합니다. input : 분(3); var : S1(0),D1(0),TM(0),TF(0),cnt(0); Array : OO[50](0),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 = TimeToMinutes(stime)%분; if bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) or stime == 154500 Then{ OO[0] = O; HH[0] = H; LL[0] = L; for cnt = 1 to 49{ OO[cnt] = OO[cnt-1][1]; HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if OO[0] > 0 then if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; plot1(OO[0]); plot2(HH[0]); plot3(LL[0]); }
프로필 이미지
스오어스
2020-03-05
567
글번호 136588
지표

달무드 님에 의해서 삭제되었습니다.

프로필 이미지
달무드
2020-03-04
0
글번호 136587
시스템
답변완료

수식 문의 드립니다.

수고하십니다. 1. 거래량이 분봉으로 2000건이상 일땐 스톡케스틱의 매수신호 일때 1계약 매수, 매도신호 발생시 청산하고, 매도 진입 를 사용하고 . 거래량이 분봉으로 2001 ~ 3000건 이상땐 파라볼릭 매수신호 일때 1계약 매수, 매도신호 발생시 청산하고, 매도 진입 를 사용.. 거래량이 분봉으로 0건 ~1999 건 까진 MACD 매수신호 일때 1계약 매수, 매도신호 발생시 청산하고, 매도 진입 사용 하고 싶습니다. 수고하세요.
프로필 이미지
백두에서한라
2020-03-04
558
글번호 136586
시스템
답변완료

아래와 비슷하지만 부탁드립니다.

Input:변동률(0.2),레벨(4),선두께(3); Var:행(0),열(0),고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4),cnt(0), 고라인기울기(0),고라인시작(0),고라인끝(0), 저라인기울기(0),저라인시작(0),저라인끝(0), 시작일(0),시작시각(0); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[3](0),TL1[2](0),고0[10,4](0),저0[10,4](0),결과리턴[8](0); //=========================================================// If 레벨 <= 4 Then { Var1 = 레벨 * 10; Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1]); TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1]); TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,Var1 + 열]; 저0[행,열] = 저[행,Var1 + 열]; } } Value2 = YHS_Channel(고0,저0,결과리턴); If Value2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],선두께); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],선두께); } cnt = 0; Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } } If cnt > 0 and cnt < (레벨 + 1) * 20 Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If 고라인끝 > 0 Then Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); If 저라인끝 > 0 Then Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } =================================================================================== 제가 드린 수식을 바탕으로 설명해달라고 하셔서 문장으로 적습니다. 위 지표를 아래 문장을 시스템수식으로 변경 부탁드립니다. * 매수 cnt > 0 and cnt < (레벨 + 1) * 20 일 때, 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; 1. Data1의 종가가 고라인끝 위에 위치하고 있을 때 2. Data2의 현재가가 고라인끝 위에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 위에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 위에 위치해 있을 때 * 매도 cnt = 0 일 때, 1. Data1의 종가가 저라인끝 아래에 위치하고 있을 때 2. Data2의 현재가가 저라인끝 아래에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 아래에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 아래에 위치해 있을 때 * 익절 진입가 대비 20틱 (틱수는 변경 가능하도록 부탁드립니다) * 손절 진입가 대비 15틱 (틱수는 변경 가능하도록 부탁드립니다) 부탁드립니다. 감사합니다.
프로필 이미지
maker
2020-03-04
487
글번호 136583
시스템
답변완료

문의 드립니다

Input:변동률(0.2),레벨(4),선두께(3); Var:행(0),열(0),고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4),cnt(0), 고라인기울기(0),고라인시작(0),고라인끝(0), 저라인기울기(0),저라인시작(0),저라인끝(0), 시작일(0),시작시각(0); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[3](0),TL1[2](0),고0[10,4](0),저0[10,4](0),결과리턴[8](0); //=========================================================// If 레벨 <= 4 Then { Var1 = 레벨 * 10; Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1]); TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1]); TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,Var1 + 열]; 저0[행,열] = 저[행,Var1 + 열]; } } Value2 = YHS_Channel(고0,저0,결과리턴); If Value2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],선두께); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],선두께); } cnt = 0; Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } } If cnt > 0 and cnt < (레벨 + 1) * 20 Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If 고라인끝 > 0 Then Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); If 저라인끝 > 0 Then Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } =================================================================================== 제가 드린 수식을 바탕으로 설명해달라고 하셔서 문장으로 적습니다. 위 지표를 아래 문장을 시스템수식으로 변경 부탁드립니다. * 매수 cnt = 0 일 때, 1. Data1의 종가가 고라인끝과 저라인끝 사이에 위치하고 있을 때 2. Data2의 현재가가 고라인끝과 저라인끝 사이에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 위에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 위에 위치해 있을 때 * 매도 cnt > 0 and cnt < (레벨 + 1) * 20 일 때, 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; 1. Data1의 종가가 고라인끝과 저라인끝 사이에 위치하고 있을 때 2. Data2의 현재가가 고라인끝과 저라인끝 사이에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 아래에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 아래에 위치해 있을 때 * 익절 진입가 대비 20틱 (틱수는 변경 가능하도록 부탁드립니다) * 손절 진입가 대비 15틱 (틱수는 변경 가능하도록 부탁드립니다) 부탁드립니다. 감사합니다. + 위 지표를 실행하기 위하여 필요한 파일은 첨부하여 올려놨습니다.
프로필 이미지
maker
2020-03-04
550
글번호 136577
시스템
답변완료

함수요청

안녕하세요? 아래의 피봇지표 전략에 대하여 스크립트 작성 요청드립니다. 크루드 오일 5분봉으로 거래를 하고자 합니다. 전일의 (2차 저항선- 2차 지지선) > 당일의 (2차 저항선- 2차 지지선) 익봉 시가 매도 전일의 (2차 저항선- 2차 지지선) < 당일의 (2차 저항선- 2차 지지선) 익봉 시가 매수 17시 강제청산
프로필 이미지
흰둥이아빠
2020-03-04
403
글번호 136575
시스템