커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 수정부탁 드립니다

plot60이 검은색일때 plot31을plot30에 일치시켜 거기서 다시시작하게 하고 그후 두라인의 변화를 보려는 의도인데 plot60이 검은색일때 plot31가 plot30에 일치하질 안네요 지수호가테마LENGTH1(10)때문인가요 ? plot60이 검은색이면 즉시 plot31을plot30에 일치시켜 다시시작하게 수정좀부탁드리겠슴니다 감사합니다 Input: 시간보정(0),보정후변화(0),호가더하기(0),지수더하기(0),보정치(0),폭보정(1.5),예비(0),지수호가테마LENGTH1(10),순매수LENGTH2(10),급변(0.05) ,순매수테마보정한계(0.3),순매수테마급증보정(0.5),순매수테마급감보정(0.5) ,지수테마보정한계(0.3),지수테마급증보정(0.5),지수테마급감보정(0.5) ; var : AsksMA(0),BidsMA(0), Period(1),idx(0),EP(0),E11(0),E12(0),E13(0),E21(0),E22(0),E23(0),ss(0); Var : value(0); Var : valuec(0); var : va61(0); var : va71(0); var : va80(0); var : va81(0); var : va90(0); var : va91(0); var : va92(0); var : va93(0); var : va94(0); var : va95(0); var : va96(0); VAR : TEMA1(0); VAR : TEMA2(0); VAR : TEMA3(0); VAR : vmin(0); VAR : vmax(0); BidsMa = ma(bids,Period); AsksMA = ma(asks,Period); value = ma(bids,period)-ma(asks,period)+29000; Plot2(BidsMA, "매수잔량이평"); Plot3(AsksMA, "매도잔량이평"); Plot4(value, "차"); //************************************************************** //************************************************************* va91=((c-c[1])/c[1]*100)*20000/20000; va93=((value-value[1])/value[1]*1.555); if stime == 시간보정*100 or (stime > 시간보정*100 and stime[1] < 시간보정*100) or Bdate != Bdate[1] Then{ PLOT62(100,"시간보정"); idx = 0; var1 = 100; var2 = var1; plot10(var1); plot11(var2); plot51(var2 +호가더하기/1000 ); } Else{ idx = idx+1; var1 = var1+(var1*(va91/100)); if abs(va96[10]-va96) <= 보정치 Then var2 = var1; // if var2[5] > var1[5] then var2 = var2 - ( var2[5] - var1[5] ); // if var2[5] < var1[5] then var2 = var2 + ( var1[5] - var2[5] ); else var2 = var2+(var2*(va93/95)); plot10(var1+지수더하기/1000 ); plot11(var2+호가더하기/1000 ); plot51(var2+호가더하기/1000 ); TEMA3 = (3 * Ema(var2+호가더하기/1000 ,순매수LENGTH2)) - (3 * Ema(Ema(var2+호가더하기/1000 ,순매수LENGTH2),순매수LENGTH2)) + (Ema(Ema(Ema(var2+호가더하기/1000 ,순매수LENGTH2),순매수LENGTH2),순매수LENGTH2)); if TEMA3 >TEMA3[1]+순매수테마보정한계 then TEMA3 = ((TEMA3 -TEMA3[1])*순매수테마급증보정)+TEMA3[1]; if TEMA3 <TEMA3[1]-순매수테마보정한계 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*순매수테마급감보정); if TEMA3 >TEMA3[1]+50 then TEMA3 = ((TEMA3 -TEMA3[1])*0.9)+TEMA3[1]; if TEMA3 <TEMA3[1]-50 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*0.9); plot52(TEMA3,"순매수테마"); } //if var2-var1 > 폭보정 Then var2=var1; //if var1-var2 > 폭보정 Then var2=var1; //if (va71[1]-va71) <= 폭보정 Then var2=var1; //if (va71-va71[1]) <= 폭보정 Then var2=var1; //if va71[1] < va71 and va71[1] + 폭보정 > va71 then var2=var1; //if va71[1] > va71 and va71[1] - 폭보정 > va71 then var2=var1; EP = 2/(지수호가테마LENGTH1+1); if idx == 0 Then{ E11 = var1; E21 = var2; } Else{ E11 = var1 * EP + E11 * (1-EP); E21 = var2 * EP + E21 * (1-EP); } if idx <= 1 Then{ E12 = E11; E22 = E21; } Else{ E12 = E11 * EP + E12 * (1-EP); E22 = E21 * EP + E22 * (1-EP); } if idx <= 2 Then{ E13 = E12; E23 = E22; } Else{ E13 = E12 * EP + E13 * (1-EP); E23 = E22 * EP + E23 * (1-EP); } TEMA1 = (3 * E11) - (3 * E12) + (E13); if TEMA1 >TEMA1[1]+지수테마보정한계 then TEMA1 = ((TEMA1 -TEMA1[1])*지수테마급증보정)+TEMA1[1]; if TEMA1 <TEMA1[1]-지수테마보정한계 then TEMA1 = TEMA1[1]-((TEMA1[1] -TEMA1)*지수테마급감보정); if TEMA2 >TEMA2[1]+지수테마보정한계 then TEMA2 = ((TEMA2 -TEMA2[1])*지수테마급증보정)+TEMA2[1]; if TEMA2 <TEMA2[1]-지수테마보정한계 then TEMA2 = TEMA2[1]-((TEMA2[1] -TEMA2)*지수테마급감보정); TEMA2 = (3 * E21) - (3 * E22) + (E23); PLOT30(TEMA1+지수더하기/1000 ,"지수테마",iff((TEMA1 +지수더하기/1000 )>(TEMA1 +지수더하기/1000)[1]+00,BLACK,iff((TEMA1 +지수더하기/1000 )<(TEMA1 +지수더하기/1000 )[1]-00,BLACK,BLACK))); PLOT31(TEMA2 +호가더하기/1000,"호가테마"); //PLOT31(TEMA2 +호가더하기/1000,"호가테마",iff(va71[3]-폭보정 > va71,RED,iff(va71[3]+폭보정 < va71,RED,GREEN))); vmin = min(TEMA1+지수더하기/1000 ,TEMA2+호가더하기/1000 ); vmax = max(TEMA1+지수더하기/1000 ,TEMA2+호가더하기/1000 ); if TEMA1+지수더하기/1000> TEMA2+호가더하기/1000 Then{ var80 = (TEMA1+지수더하기/1000- TEMA2 +호가더하기/1000 )*0.5+TEMA2+호가더하기/1000 ; } if TEMA1 < TEMA2+호가더하기/1000 Then{ var80 = (TEMA2+호가더하기/1000 -TEMA1+지수더하기/1000)*0.5+TEMA1+지수더하기/1000 ; } PLOT17(var80,"지호평균"); //테마합 일정 수량차이상의 급등락 표시 if TEMA1 > TEMA1[1]+ 급변 Then{plot21(vmin-0.05,"급등"); // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩click01.wav"); } if TEMA1 < TEMA1[1]- 급변 Then{plot22(vmin-0.05,"급락"); // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩click02.wav"); } va71 =( TEMA2+호가더하기/1000 - TEMA1+지수더하기/1000 )+100.3; if SS <= 0 and ( TEMA1+지수더하기/1000 )[1] < ( TEMA1+지수더하기/1000 ) and abs (( TEMA1+지수더하기/1000 ) - ( TEMA2+호가더하기/1000 )) < 예비 Then{ SS = 1; PLOT25((vmin )-0.05,"매수예비"); // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩click01.wav"); } if SS <= 0 and ( TEMA1+지수더하기/1000 )[1] > ( TEMA1+지수더하기/1000 ) and abs (( TEMA1+지수더하기/1000 ) - ( TEMA2+호가더하기/1000 )) < 예비 Then{ SS = -1; PLOT26((vmin )-0.05,"매도예비"); // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩click02.wav"); } PLOT60(va71,"55",iff(va71[2]-폭보정 > va71,GREEN,iff(va71[2]+폭보정 < va71,GREEN,BLACK))); if abs (va71[3] - va71) < 폭보정 then{ PLOT64(va71-0.1,"커플링"); //var1 = 100; var2 = var1; // PlaySound("C:₩예스트레이더₩data₩Sound₩Bandi.wav"); } if CrossUp(( TEMA2+호가더하기/1000 ),(TEMA1+지수더하기/1000)) Then{ //if sTime > (시간보정*100) and (TEMA1+지수더하기/1000)+보정후변화 < ( TEMA2+호가더하기/1000 ) and //(TEMA1+지수더하기/1000)[1] > (TEMA1+지수더하기/1000) //if (TEMA1+지수더하기/1000)[1]+0.0 < (TEMA1+지수더하기/1000) and va71[1]-0.01 < va71 // if ( TEMA1+지수더하기/1000 )[1] < ( TEMA1+지수더하기/1000 ) and va71[1] < va71[1] //then { PLOT45((vmin )-0.01,"매수막대"); // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩click01.wav"); } if CrossDown(( TEMA2+호가더하기/1000 ),(TEMA1+지수더하기/1000)) Then{ //if sTime > (시간보정*100) and (TEMA1+지수더하기/1000)-보정후변화 > ( TEMA2+호가더하기/1000 ) and //(TEMA1+지수더하기/1000)[1] < (TEMA1+지수더하기/1000) //if (TEMA1+지수더하기/1000)[1]-0.0 > (TEMA1+지수더하기/1000) and va71[1]+0.01 > va71 // if ( TEMA1+지수더하기/1000)[1] > ( TEMA1+지수더하기/1000 ) and va71[1] > va71[1] // then { PLOT46((vmin )-0.01,"매도막대"); // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩click02.wav"); } if va71[1]+급변 < va71 Then { PLOT18((va71 )+0.01,"매도"); } if va71[1]-급변 > va71 Then { PLOT19((va71 )+0.01,"매수"); } va96 = (tema1 - tema2)*1000; PLOT61(va96,"66",iff(va96 > 0,RED,iff(va96 < 0,BLACK,BLACK))); PlotBaseLine1(100,"기준선100"); if stime == 시간보정*100 then { PLOT62(100,"시간보정"); }
프로필 이미지
leekss1
2017-03-29
226
글번호 108336
지표
답변완료

해선 시스템식

기준 : 거래시간( 한국시간기준) 당일 20시부터 익일 04시까지 사용프로그램이 한국투자증권프로그램이라 시간 변경이 되지않습니다. 아래 3가지식 부탁드리겠습니다. 감사합니다. (참고로 분봉차트 입니다.) 1. 당일 20시부터 현재시간까지 고가 - 저가 2. 당일 20시부터 현재시간까지 ABS(현재봉 종가- 당일20시 시가) 3. 아래식은 한국시간 기준으로 작성한것인데 이것을 위 거래시간으로 표현 하려고합니다. dayindex,dayhigh,DayOpen,date등이 걸리네요. if dayindex == 0 or (dayindex > 0 and H==dayhigh and H[1] < dayhigh) Then var1 = TimeToMinutes(stime); if TimeToMinutes(stime) == var1+상수 and countif(dayhigh == dayhigh[1],상수) == 상수 Then var2 = dayhigh; if date!=date[1] Then var2=DayOpen; if var2[1]!=var2 Then var3=(DayIndex-상수); if var2[1]==var2 Then var3=var3[1] ; if dayindex == 0 Then var3=0; var4=Lowest(c,(dayindex-var3)); var5=Lowest(c,BarsSinceEntry(0)); if EntryName=="매수1" and BarsSinceEntry(0)>=상수 and Crossdown(c, var4[1])Then ExitLong("정리3"); if EntryName=="매수2" and BarsSinceEntry(0)>=상수 and Crossdown(c, var5[1])Then ExitLong("정리4");
프로필 이미지
orfeu
2017-03-29
204
글번호 108335
시스템
답변완료

원하던 수식이 아니라서 ...

안녕하세요 리플이 없어서 다시 글남깁니다 감사합니다 만들어주신 수식이 제가 원하는것이 아니라 다시 문의 드립니다 Period = 일봉상 9봉전부터 현재까지; 이렇게 말씀드렷는데요 input : Period(10),BarRio(0.01),Percent1(50); 이렇게 해주셨네요 저는 일봉의 기간조건으로 말씀 드렸는데 Period(10), 이렇게 하면 분봉에서 갯수를 나타내는것으로 표현이 되는것 같습니다. 일봉조건으로 수정부탁드립니다 밑에 종목검색도 같이 부탁드립니다 종목검색에서도 거래대금이 일봉상 9봉전부터 현재까지 거래대금이 200억 이상인 조건이 아니라 9봉전까지 200억이 하나라도 포함된 거래대금이 있는 일봉으로 수정 부탁드립니다. 감사합니다 ~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식문의 드립니다. > 안녕하세요 예스스탁입니다. 1. input : Period(10),BarRio(0.01),Percent1(50); var : B(0),sumB(0); B=iff((C-O)/O>BarRio,V,iff((C-O)/O<-BarRio,-V,0)); sumB = sumB+B; var1 = sumB-Lowest(sumB,Period); var2 = highest(SumB,Period)-SumB; var3 = highest(SumB-Lowest(SumB,Period),Period)*(Percent1/100); plot1(var1); plot2(var2); plot3(var3); 2 아래종목검색은 15분 주기에서 과거 데이터가 10일이상 필요하므로 속성에서 검색에 필요한 최소기간에 350봉 이상 지정하고 검색하셔야 합니다. 2-1 input : Period(10),BarRio(0.01),Percent1(50); var : B(0),sumB(0),cnt(0),sumM(0); Array : MM[20](0); if date != date[1] Then{ MM[0] = 0; for cnt = 1 to 19{ MM[cnt] = MM[cnt-1][1]; } } MM[0] = MM[0]+M; B=iff((C-O)/O>BarRio,V,iff((C-O)/O<-BarRio,-V,0)); sumB = sumB+B; var1 = sumB-Lowest(sumB,Period); var2 = highest(SumB,Period)-SumB; var3 = highest(SumB-Lowest(SumB,Period),Period)*(Percent1/100); if MM[Period-1] > 0 Then{ sumM = 0; for cnt = 0 to Period-1{ sumM = sumM + MM[cnt]; } if sumM >= 20000000000 and var1 > var3 Then find(1); } 2-2 input : Period(10),BarRio(0.01),Percent1(50); var : B(0),sumB(0),cnt(0),sumM(0); Array : MM[20](0); if date != date[1] Then{ MM[0] = 0; for cnt = 1 to 19{ MM[cnt] = MM[cnt-1][1]; } } MM[0] = MM[0]+M; B=iff((C-O)/O>BarRio,V,iff((C-O)/O<-BarRio,-V,0)); sumB = sumB+B; var1 = sumB-Lowest(sumB,Period); var2 = highest(SumB,Period)-SumB; var3 = highest(SumB-Lowest(SumB,Period),Period)*(Percent1/100); if MM[Period-1] > 0 Then{ sumM = 0; for cnt = 0 to Period-1{ sumM = sumM + MM[cnt]; } if sumM >= 20000000000 and var1 > 5000000 Then find(1); } 즐거운 하루되세요 > 하루4% 님이 쓴 글입니다. > 제목 : 수식문의 드립니다. > 안녕하세요! 키움 수식을 변환하고 싶습니다. 일봉 9봉전까지 조건으로 분봉에 지표를 출력했습니다. 마찬가지로 일봉조건으로 분봉에 출력하고 싶습니다. Period = 일봉상 9봉전부터 현재까지; BarRio = 0.01; Percent1 = 50; 수식1 B=if((C-O)/O>BarRio,V,if((C-O)/O<-BarRio,-V,0)); Buy=Sum(B)-Lowest(Sum(B),Period) 수식2 highest(Sum(B),Period)-Sum(B) 수식3 highest(Sum(B)-Lowest(Sum(B),Period),Period)*(Percent1/100) 그리고 1. 일봉상 9봉전부터 현재까지 거래대금이 200억 이상인 조건에서 위의 거래량지표로 15분봉상 수식1 > 수식3 인 종목을 검색하고 싶습니다. 2. 일봉상 9봉전부터 현재까지 거래대금이 200억 이상인 조건에서 위의 거래량지표로 15분봉상 수식1 > 5백만주 인 종목을 검색하고 싶습니다. 가능한가요? 감사합니다.
프로필 이미지
하루4%
2017-03-29
211
글번호 108334
지표
답변완료

수식부탁드립니다

대만 선물을 연결선물을 사용해서 시스템을 작성중에 있습니다 시스템 모의 테스트 중 3.29일 현재 연결 선물은 3월물인데, 3.29 예비장이 시작되는 3.28. 오후 3시 15분 부터는 신규진입이 제한되어 시스템에서 신호가 나와도 주문이 안들어가는 현상이 발생합니다. 매월 28일 오후 3시 15분 부터는 익월 28일 오후 2시 45분까지는 익월물로 진입,청산이 가능하도록 하고 싶습니다 (예를 들어 현재 3월 29일인 경우 3월 29일 오후 3시 15분 부터 4.28일 오후 2시 45분까지는 4월물로 진입 신호가 나왔으면 합니다) 주문은 시장가 주문입니다
프로필 이미지
미송
2017-03-30
169
글번호 108333
시스템
답변완료

감사합니다

아래식을 틱차트에 적용하면 지표라인이 그어지다가 마내요 일전에 여쭈어 보았었는데 해결이 안되 다시 올려봅니다. 주식 종목에 적용중입니다. 분봉정도에는 봉이 많지 안아서 잘되는데 거래가 만은 틱차트에서는 표시가 안되어집니다. var1 = accumn(upvol,DayIndex+3); var2 = accumn(DownVol,DayIndex+3); var3 = ((var1/var2) * 100); var4 = ((var2/var1) * 100); Plot1(var1, "1"); Plot2(var2, "2"); plot3(var3, "3"); plot4(var4, "4"); PlotBaseLine1((var3+var4)/2,"기준선"); PlotBaseLine2(100,"선");
프로필 이미지
자라도
2017-03-29
173
글번호 108332
지표
답변완료

트리온레벨 지표 보완

안녕하세요? 항상 감사드리며,,, 보완부탁드립니다. "Tirone Levels"지표의 지표수치(차트표시 - 수평 25만큼 앞에 표시)를 수평라인으로 그리게 하려는 수식부탁드립니다. 가격이 변하면서 수평라인이 지속적으로 수직변동하는 라인입니다
프로필 이미지
추세승리
2017-08-24
279
글번호 108330
지표
답변완료

사용자 함수로 만든 수식으로 검색이 안되는 이유

지난번 만들어주신 사용자 함수입니다. input : n(Numeric); var : cnt(0); Array : MC[100](0); if Bdate > bdate[1]+30 Then{ for cnt = 1 to 99{ MC[cnt] = MC[cnt-1][1]; } } MC[0] = C; if MC[n] > 0 then yes = (MC[n]*1.1)/MC[n-1]*100; 이 사용자 함수를 써서 종목검색을 하기위해 if yes(2) >= 10 and yes(2) <= 20 then find(1); 라는 조건식으로 조건검색을 해&#48419;는데 검색이 실행되지 않는 현상이 발생합니다.
프로필 이미지
왓썹
2017-03-29
172
글번호 108329
사용자 함수
답변완료

아래조건 만족시 종목검색식 만들고싶은데요

if DayVolume > V1 and c>dayclose(1) and dayclose(1)<dayclose(2) and dayopen(1)>(dayopen(2)+dayclose(2))/2 and dayopen(2)*1.1<dayclose(2) and DayVolume(2)*dayclose(2)>1000000
프로필 이미지
하얀머리
2017-03-29
189
글번호 108325
검색
답변완료

수식문의합니다

안녕하세요 수식을 수정 부탁드립니다 수식에서 손절(0.3p)이 되면 대기 후 반대 진입 신호 발생시 진입으로 수정하고 싶어요 추세방향대로 진입 청산을 반복하는데요 설정된 손절이 되더라도 같은 추세방향이면 다시 진입이 되네요 혹시 수정가능할까요?? var: T(0); var1=ma(c,5); var2=ma(c,60); if crossup(var1,var2)Then{ T=1; } if CrossDown(var1,var2)Then{ T=-1; } if T== 1 Then{ buy("b",AtLimit,var1-priceScale*0); } if T== -1 Then{ value2=value2+1; if value2>=2 Then sell("s",AtLimit,var1+priceScale*0); } 수고하세요
프로필 이미지
정상에서야
2017-03-29
174
글번호 108321
시스템