커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

질문드립니다

볼밴 60분봉 볼밴상단 돌파후 고점대비 15틱 하락시 매도진입 진입후 25틱 이상 상승하면 손절 진입후 40틱 하락하면 청산 매도진입후 손절하면 매도방향으로 진입금지 15틱 25틱 40틱은 조정할수있게 input으로 부탁드립니다. 이렇게 진입식 부탁드립니다. 틱을 표현하는식이 pricescale*15 라고 알고있는데 잘못알고있는지 잘안되네요 h-(pricescale*15) 그리고 궁금한점이 완성봉이 되어야 그다음에 진입을 하잖아요? 근데 볼밴 상단을 돌파한 완성봉이 이미 고점대비 15포인트 이상 하락하면 진입은 어떻게 되나요?? 완성봉이 되기전에 15틱 하락시 진입하려면 30분봉 이런식으로 쪼개야 하나요??
프로필 이미지
하늘이여o
2017-12-04
95
글번호 114717
시스템
답변완료

부탁 드립니다,

도움주심에 감사 드립니다. 지정된 일시 이후에 계산이 시작 되도록 부탁 드립니다 input : Price(10000), Per(10),N(5),타주기분(60),color(yellow),PriceScale차이(5); var : cnt(0),cnt1(0),cnt2(0),idx(0); var : S1(0),D1(0),TM(0),TF(0),Tcond(false); Array : VV[50](0); Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0); Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0); Array : vol[1000](0),OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),dd[1000](0),tt[1000](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%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{ idx = idx+1; vol[0] = 0; DD[0] = sdate; TT[0] = stime; OO[0] = O; HH[0] = H; LL[0] = L; for cnt = 1 to 999{ vol[cnt] = vol[cnt-1][1]; dd[cnt] = dd[cnt-1][1]; tt[cnt] = tt[cnt-1][1]; oo[cnt] = oo[cnt-1][1]; hh[cnt] = hh[cnt-1][1]; ll[cnt] = ll[cnt-1][1]; cc[cnt] = cc[cnt-1][1]; } for cnt = 1 to 49{ VV[cnt] = 0; } #N개값 출력 for cnt1 = 1 to N{ #차트 과거봉 전체 스캔 for cnt2 = 1 to idx{ #Price대비 +- Per%안에 종가가 형성된 if CC[cnt2] <= Price*(1+Per/100) and CC[cnt2] >= Price*(1-Per/100) and Vol[cnt2] > VV[cnt1] and (cnt1 == 1 or (cnt1 >= 2 and Vol[cnt2] < VV[cnt1-1])) Then{ VV[cnt1] = Vol[cnt2]; #거래량순 상위 cnt1번째 값추세선 출력 #종가선 TL_Delete(CTL[cnt1]); CTL[cnt1] = TL_New(DD[cnt2],TT[cnt2],CC[cnt2]+PriceScale*PriceScale차이,sdate,stime,CC[cnt2]+PriceScale*PriceScale차이); TL_SetExtLeft(CTL[cnt1],true); TL_SetExtRight(CTL[cnt1],true); TL_Setcolor(CTL[cnt1],color); #거래량순 상위 cnt1번째 값텍스트 출력 #종가선값 Text_Delete(CTx[cnt1]); // CTx[cnt1] = Text_New(sdate,stime,CC[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(CC[cnt2],0)); Text_SetStyle(CTx[cnt1],0,0); #점출력 Text_Delete(Tx[cnt1]); Tx[cnt1] = Text_New(dd[cnt2],TT[cnt2],CC[cnt2],"●"+NumToStr(cnt1,0)); Text_SetStyle(Tx[cnt1],2,2); text_setcolor(Tx[cnt1], color); } } } } vol[0] = vol[0]+v; CC[0] = C; if H > HH[0] Then HH[0] = h; if L < LL[0] Then LL[0] = L;
프로필 이미지
yes
2017-12-04
125
글번호 114716
지표
답변완료

부탁드립니다

Input:length(10); Var:최종고가(0),최종저가(0),최종변곡점(""),처리구분(""), sBar(0),TL1(0),TL2(0),TL3(0), 고추세기울기(0),고추세봉개수(0),고추세시작(0),고추세시작IDX(0),고추세최종(0), 저추세기울기(0),저추세봉개수(0),저추세시작(0),저추세시작IDX(0),저추세최종(0); Var:고1(0),고2(0),고3(0),고4(0),고5(0),고6(0),고7(0),고8(0),고9(0),고10(0), 저1(0),저2(0),저3(0),저4(0),저5(0),저6(0),저7(0),저8(0),저9(0),저10(0), 고1IDX(0),고2IDX(0),고3IDX(0),고4IDX(0),고5IDX(0), 고6IDX(0),고7IDX(0),고8IDX(0),고9IDX(0),고10IDX(0), 저1IDX(0),저2IDX(0),저3IDX(0),저4IDX(0),저5IDX(0), 저6IDX(0),저7IDX(0),저8IDX(0),저9IDX(0),저10IDX(0); var : tl21(0),tl22(0),TL31(0),tl32(0),Tl33(0),tl34(0),t(0); #==========================================# Condition1 = Highest(C,length) == C and 최종고가 <> C; Condition2 = Lowest (C,length) == C and 최종저가 <> C; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리 Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리 } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = C; // 신규고점을 체크하기 위해 저장 If 최종변곡점 == "저점" Then { 고9 = 고8; 고9IDX = 고8IDX; 고8 = 고7; 고8IDX = 고7IDX; 고7 = 고6; 고7IDX = 고6IDX; 고6 = 고5; 고6IDX = 고5IDX; 고5 = 고4; 고5IDX = 고4IDX; 고4 = 고3; 고4IDX = 고3IDX; 고3 = 고2; 고3IDX = 고2IDX; 고2 = 고1; 고2IDX = 고1IDX; 고1 = C; 고1IDX = Index; sBar = Index - 저1IDX; // 추세선 시작점의 위치, n봉전으로 표시 TL1 = TL_New(sDate[sBar],sTime[sBar],저1,sDate[0],sTime[0],고1); TL_SetSize(TL1,2); TL_SetColor(TL1,GREEN); TL21 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],L[index-저2IDX],sDate[index-저1IDX],sTime[index-저1IDX],L[index-저2IDX]); TL_SetColor(TL21,CYAN); if C[index-저2IDX] != L[index-저2IDX] then{ TL22 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],C[index-저2IDX],sDate[index-저1IDX],sTime[index-저1IDX],C[index-저2IDX]); TL_SetColor(TL22,CYAN); } T = -1; } Else If 고1 < C Then // 1번 고점보다 높은 고가 출현 { 고1 = C; 고1IDX = Index; TL_SetEnd(TL1,sDate[0],sTime[0],고1); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 } /* 고점추세선 */ If 고2IDX[1] <> 고2IDX Then // 고2의 Index값이 변동 없음 즉, 새로운 고점이 생기지 않았음 { 고추세최종 = 0; 고추세기울기 = 0; 고추세시작 = 0; 고추세봉개수 = 0; If 고2 < 고3 Then { 고추세기울기 = (고2 - 고3)/(고2IDX - 고3IDX); 고추세시작 = 고3; 고추세시작IDX = 고3IDX; } Else If 고2 < 고4 Then { 고추세기울기 = (고2 - 고4)/(고2IDX - 고4IDX); 고추세시작 = 고4; 고추세시작IDX = 고4IDX; } Else If 고2 < 고5 Then { 고추세기울기 = (고2 - 고5)/(고2IDX - 고5IDX); 고추세시작 = 고5; 고추세시작IDX = 고5IDX; } Else If 고2 < 고6 Then { 고추세기울기 = (고2 - 고6)/(고2IDX - 고6IDX); 고추세시작 = 고6; 고추세시작IDX = 고6IDX; } Else If 고2 < 고7 Then { 고추세기울기 = (고2 - 고7)/(고2IDX - 고7IDX); 고추세시작 = 고7; 고추세시작IDX = 고7IDX; } Else If 고2 < 고8 Then { 고추세기울기 = (고2 - 고8)/(고2IDX - 고8IDX); 고추세시작 = 고8; 고추세시작IDX = 고8IDX; } Else If 고2 < 고9 Then { 고추세기울기 = (고2 - 고9)/(고2IDX - 고9IDX); 고추세시작 = 고9; 고추세시작IDX = 고9IDX; } 고추세봉개수 = Index - 고추세시작IDX; 고추세최종 = 고추세기울기 * 고추세봉개수 + 고추세시작; If 고추세최종 > 0 Then { TL2 = TL_New(sDate[고추세봉개수],sTime[고추세봉개수],고추세시작,sDate[0],sTime[0],고추세최종); TL_SetSize(TL2,1); TL_SetColor(TL2,RED); } } Else If 고추세최종[1] > 0 Then { 고추세최종 = 고추세기울기 * (Index - 고추세시작IDX) + 고추세시작; TL_SetEnd(TL2,sDate[0],sTime[0],고추세최종); } If 저추세최종[1] > 0 Then { 저추세최종 = 저추세기울기 * (Index - 저추세시작IDX) + 저추세시작; TL_SetEnd(TL3,sDate[0],sTime[0],저추세최종); } 최종변곡점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = C; If 최종변곡점 == "고점" then { 저9 = 저8; 저9IDX = 저8IDX; 저8 = 저7; 저8IDX = 저7IDX; 저7 = 저6; 저7IDX = 저6IDX; 저6 = 저5; 저6IDX = 저5IDX; 저5 = 저4; 저5IDX = 저4IDX; 저4 = 저3; 저4IDX = 저3IDX; 저3 = 저2; 저3IDX = 저2IDX; 저2 = 저1; 저2IDX = 저1IDX; 저1 = C; 저1IDX = Index; sBar = Index - 고1IDX; TL1 = TL_New(sDate[sBar],sTime[sBar],고1,sDate[0],sTime[0],저1); TL_SetSize(TL1,2); TL_SetColor(TL1,GREEN); T = 1; TL21 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],H[index-고2IDX],sDate[index-고1IDX],sTime[index-고1IDX],H[index-고2IDX]); TL_SetColor(TL21,MAGENTA); if C[index-고2IDX]!= H[index-고2IDX] then{ TL22 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],C[index-고2IDX],sDate[index-고1IDX],sTime[index-고1IDX],C[index-고2IDX]); TL_SetColor(TL22,MAGENTA); } } Else If 저1 > C then { 저1 = C; 저1IDX = Index; TL_SetEnd(TL1,sDate[0],sTime[0],저1); } /* 저점추세선 */ If 저2IDX[1] <> 저2IDX Then { 저추세최종 = 0; 저추세기울기 = 0; 저추세시작 = 0; 저추세봉개수 = 0; If 저2 > 저3 and 저3 > 0 Then { 저추세기울기 = (저2 - 저3)/(저2IDX - 저3IDX); 저추세시작 = 저3; 저추세시작IDX = 저3IDX; } Else If 저2 > 저4 and 저4 > 0 Then { 저추세기울기 = (저2 - 저4)/(저2IDX - 저4IDX); 저추세시작 = 저4; 저추세시작IDX = 저4IDX; } Else If 저2 > 저5 and 저5 > 0 Then { 저추세기울기 = (저2 - 저5)/(저2IDX - 저5IDX); 저추세시작 = 저5; 저추세시작IDX = 저5IDX; } Else If 저2 > 저6 and 저6 > 0 Then { 저추세기울기 = (저2 - 저6)/(저2IDX - 저6IDX); 저추세시작 = 저6; 저추세시작IDX = 저6IDX; } Else If 저2 > 저7 and 저7 > 0 Then { 저추세기울기 = (저2 - 저7)/(저2IDX - 저7IDX); 저추세시작 = 저7; 저추세시작IDX = 저7IDX; } Else If 저2 > 저8 and 저8 > 0 Then { 저추세기울기 = (저2 - 저8)/(저2IDX - 저8IDX); 저추세시작 = 저8; 저추세시작IDX = 저8IDX; } Else If 저2 > 저9 and 저9 > 0 Then { 저추세기울기 = (저2 - 저9)/(저2IDX - 저9IDX); 저추세시작 = 저9; 저추세시작IDX = 저9IDX; } 저추세봉개수 = Index - 저추세시작IDX; 저추세최종 = 저추세기울기 * 저추세봉개수 + 저추세시작; If 저추세최종 > 0 Then { TL3 = TL_New(sDate[저추세봉개수],sTime[저추세봉개수],저추세시작,sDate[0],sTime[0],저추세최종); TL_SetSize(TL3,1); TL_SetColor(TL3,BLUE); } } Else If 저추세최종[1] > 0 Then { 저추세최종 = 저추세기울기 * (Index - 저추세시작IDX) + 저추세시작; TL_SetEnd(TL3,sDate[0],sTime[0],저추세최종); } If 고추세최종[1] > 0 Then { 고추세최종 = 고추세기울기 * (Index - 고추세시작IDX) + 고추세시작; TL_SetEnd(TL2,sDate[0],sTime[0],고추세최종); } 최종변곡점 = "저점"; } TL_Delete(TL31); TL_Delete(TL32); TL_Delete(TL33); TL_Delete(TL34); If T == 1 Then{ TL31 = TL_New(sDate[index-고1IDX],sTime[index-고1IDX],H[index-고1IDX],sDate,sTime,H[index-고1IDX]); TL_SetColor(TL31,MAGENTA); if C[index-고1IDX]!= H[index-고1IDX] then{ TL32 = TL_New(sDate[index-고1IDX],sTime[index-고1IDX],C[index-고1IDX],sDate,sTime,C[index-고1IDX]); TL_SetColor(TL32,MAGENTA); } TL33 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],L[index-저2IDX],sDate,sTime,L[index-저2IDX]); TL_SetColor(TL33,cyan); if C[index-저2IDX]!= L[index-저2IDX] then{ TL34 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],C[index-저2IDX],sDate,sTime,C[index-저2IDX]); TL_SetColor(TL34,cyan); } } If T == -1 Then{ TL31 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],H[index-고2IDX],sDate,sTime,H[index-고2IDX]); TL_SetColor(TL31,MAGENTA); if C[index-고2IDX]!= H[index-고2IDX] then{ TL32 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],C[index-고2IDX],sDate,sTime,C[index-고2IDX]); TL_SetColor(TL32,MAGENTA); } TL33 = TL_New(sDate[index-저1IDX],sTime[index-저1IDX],L[index-저1IDX],sDate,sTime,L[index-저1IDX]); TL_SetColor(TL33,cyan); if C[index-저1IDX]!= L[index-저1IDX] then{ TL34 = TL_New(sDate[index-저1IDX],sTime[index-저1IDX],C[index-저1IDX],sDate,sTime,C[index-저1IDX]); TL_SetColor(TL34,cyan); } } ************************************************************************** 윗식에서 TL 21, TL 22, TL 31, TL 32, TL 33, TL 34의 수평선이 생성되면 그 수평선 생성싯점 당시의 해당 캔들에 검색식으로 점을 찍어 주세요. 수평선을 대신해서 점을 찍어 달라는게 아니라 챠트에 수평선이 생성될때 그싯점의 캔들에 점을 찍어 달라는 것입니다 (그러므로 수평선상 위치에 있는 캔들과 검색식의 점은 그위치가 상이할 수 있습니다) 이때 검색식 점 색깔은 각각 해당되는 TL선의 색깔로 지정해 주세요 부탁드립니다. 감사합니다
프로필 이미지
회원
2017-12-04
126
글번호 114715
검색
답변완료

점검부탁드립니다

55760 시가와피보니치선 제점검부탁드립니다
프로필 이미지
용각산
2017-12-04
105
글번호 114714
지표
답변완료

수정 좀 부탁드립니다..

바쁘신 와중에 한번 더 부탁드립니다..ㅠ 아래 수식을 챠트에 구현하니 종가에 라인이 그려지는데 생각보다는 챠트에 많은 선이 생겨 혼란스러워서 제가 라인을 보이게 하거나 생략할수 있게 조절이 가능한 plot으로 출력되는것으로 부탁드립니다..감사합니다.. input : Left(3),Right(3),N(100); var : H1(0),H2(0),H3(0); var : L1(0),L2(0),L3(0); H1 = SwingHighBar(1,H,left,right,n); H2 = SwingHighBar(2,H,left,right,n); H3 = SwingHighBar(3,H,left,right,n); L1 = SwingLowBar(1,L,left,right,n); L2 = SwingLowBar(2,L,left,right,n); L3 = SwingLowBar(3,L,left,right,n); TL_Delete(var1); if H1 != -1 then { var1 = TL_New(sdate[H1],stime[H1],C[H1],sdate,stime,C[H1]); TL_SetColor(var1,RED); TL_SetExtRight(var1,true); } TL_Delete(var2); if H2 != -1 then { var2 = TL_New(sdate[H2],stime[H2],C[H2],sdate,stime,C[H2]); TL_SetColor(var2,RED); TL_SetExtRight(var2,true); } TL_Delete(var3); if H3 != -1 then { var3 = TL_New(sdate[H3],stime[H3],C[H3],sdate,stime,C[H3]); TL_SetColor(var3,RED); TL_SetExtRight(var3,true); } TL_Delete(var4); if L1 != -1 then { var4 = TL_New(sdate[L1],stime[L1],C[L1],sdate,stime,C[L1]); TL_SetColor(var4,blue); TL_SetExtRight(var4,true); } TL_Delete(var5); if L2 != -1 then { var5 = TL_New(sdate[L2],stime[L2],C[L2],sdate,stime,C[L2]); TL_SetColor(var5,blue); TL_SetExtRight(var5,true); } TL_Delete(var6); if L3 != -1 then { var6 = TL_New(sdate[L3],stime[L3],C[L3],sdate,stime,C[L3]); TL_SetColor(var6,blue); TL_SetExtRight(var6,true); }
프로필 이미지
금여록
2017-12-04
128
글번호 114713
지표
답변완료

지표와 함수

예스문법의 함수를 좀 정확하게 이해하고 싶습니다. 우선 그 정의를 좀 알려 주시고요.... 다음으로 제가 생각하는 함수를 좀 부탁합니다. 제가 생각하는 함수는 어떤 인수가 있는데 그 인수는 봉이 진행되면서 계산됩니다. 예를 들면 시고저종으로 계산될 수도 있고, 거래량으로 계산될 수도 있습니다. 일단 이 인수를 제가 생각하는 이 함수에 input으로 제공하면 이 함수는 그 인수의 극대와 극소를 output으로 계산해 주는 그런 함수를 만들고 싶습니다. 여기서 극대는 상승하다가 하락하면 그 정점, 극소는 그 반대입니다. 그래서 다른 지표를 계산할 때 이 함수를 사용하고 싶습니다. 그런 것이 가능한가요??? 그래서 이 함수를 이용하여, macd의 극대와 극소, 그리고 거래량 20이평의 극대와 극소를 계산해 주는 지표를 예제로 만들어 주시면 감사하겠습니다.
프로필 이미지
회원
2017-12-04
131
글번호 114708
사용자 함수
답변완료

수식 문의드립니다.

cci 하락 100 발생후 봉의 저가 가격을 다음봉에서 매수 될수 잇도록 가능한지요? cci 상승 100 발생후 봉의 고가 가격을 다음봉에서 매도 될수 있도록 부탁드립니다. 포지션을 가지고 잇을시 상승이던지 하락이던지 100을 찍었을시 청산되는것도 부탁합니다.
프로필 이미지
천용인
2017-12-04
107
글번호 114701
시스템
답변완료

수식 수정 부탁드립니다.

일일히 수고해 주심에 감사드립니다. 제 나름되로 해보니 잘 않되어 부탁드립니다. 아래의 각 신호들이 당일 2개이상 발생하는 날이 과거 기간(검색기간)동안에 몇회 출현하는 회수(n)를 같이 검색하는 수식으로 수정해주시면 고맙겠습니다. input : 검색기간(10),n(1),WRP1(28),short(12),long(26),sig(9),DIP(14),CCIP(9),sto1(5),sto2(3),buyLevel(20),WRP2(14); var : WR1(0),MACDV(0),MACDS(0),DP(0),DM(0),CCIv(0),stok(0),WR2(0); WR1 = WILLR(WRP1); MACDV = MACD(short,long); MACDS = ema(MACDV,sig); DP = Diplus(DIP); DM = DiMinus(DIP); CCIv= CCI(CCIP); stok = StochasticsK(sto1,sto2); WR2 = WILLR(WRP2); var1 = 0; if Crossup(WR1,-80 ) Then var1 = var1+1; if CrossUp(MACDv,MACDs) Then var1 = var1+1; if Crossup(DP, DM) Then var1 = var1+1; if Crossup(CCIv, -100) Then var1 = var1+1; if Crossup(stok, buyLevel) Then var1 = var1+1; if Crossup(WR2,-80 ) Then var1 = var1+1; Condition1 = var1 >= 2 ; if CountIF(Condition1 ==true, 검색기간) >= n then find(n);
프로필 이미지
자아준
2017-12-05
128
글번호 114692
종목검색

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

프로필 이미지
2wnwn
2017-12-04
9
글번호 114689
지표