커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의 사항

아래 개념에서 마지막 최소수익포인트는 어떤 개념인지요? 손절포인트 : 손절매 수익포인트 : 목표수익 수익감소포인트 : 최대수익대비하락(trailing stop) 최소수익포인트 : ??? *********************************************** 1.포인트 input : 진입시간(100000),진입제한시간(120000),트레이드종료시간(150000); input : 손절포인트(1),수익포인트(3),수익감소포인트(1),최소수익포인트(2); Inputs: DMILen(14), Consec(3), MinDiff(0); Var : DMIDiff(0); var : Tcond(false); if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입제한시간) or (sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 트레이드종료시간) or (sdate == sdate[1] and stime >= 트레이드종료시간 and stime[1] < 트레이드종료시간) Then exitlong(); DMIDiff = DIPlus(DMILen) - DIMinus(DMILen); If DMIDiff[Consec] > 0 and Tcond == true Then Begin If DMIDiff >= MinDiff AND CountIF(DMIDiff > DMIDiff[1], Consec) == Consec Then Buy ("DMI"); End; SetStopProfittarget(수익포인트,PointStop); SetStopLoss(손절포인트,PointStop); SetStopTrailing(수익감소포인트,최소수익포인트,PointStop);
프로필 이미지
목마와숙녀
2018-05-15
187
글번호 118917
시스템
답변완료

질문드립니다.

57798 답변해주신 내용인데요. 안녕하세요 예스스탁입니다. 제 질문이 난해했네요. data2인 일봉에서 20일의 기간동안 close(20) < close를 만족한 조건이 12달(20일간 만족 조건을 12번으로 쪼갬) 동안 몇번인지 확인하는 것이었습니다. 그뒤 아래 수식에 이 부분처럼 &#160;&#160;&#160;&#160;rate&#160;=&#160;(count/P)*100; 백분율해서 12달동안 close(20) < close가 몇번 만족하였는지 퍼센티지로 표현하고 싶었습니다. 아래 조건과 같이 한뒤, rate = (count/P)*100; } if CrossUp(lower,upper) Then{ Text_SetStyle(txt, 1,1); txt = Text_New(sDate,sTime,C,spc + numtostr(rate,0) + "%"); Text_SetColor(txt,BLACK); Text_SetStyle(txt,1,1); } text함수에 rate를 넣어서 해보면 모두 수치가 0%로 나옵니다. 12달중 9번이 close > close(20)이면 75%로 나와야하는데말이죠. 올려주신 plot1(rate)로하면 이상한 선만 나옵니다. 첫번째는 제가 수정한 수식이고, 두번째가 관리자분께서 올리신 수식입니다. input : P(12); var : cnt(0),count(0),rate(0),txt(0),spc(" "); Array : MC[20](0); if date > date[1]+30 Then { for cnt = 1 to 19 { MC[cnt] = MC[cnt-1][1]; } } MC[0] = C; if MC[P] > 0 then { count = 0; for cnt = 0 to P-1 { if MC[cnt] > MC[cnt+1] Then count = count+1; } rate = (count/p)*100; } if CrossUp(close,DayOpen) Then{ Text_SetStyle(txt, 1,1); txt = Text_New(sDate,sTime,C,spc + numtostr(rate,0) + "%"); Text_SetColor(txt,BLACK); Text_SetStyle(txt,1,1); } //////////////////////////////////////////////////////// input&#160;:&#160;P(12); var&#160;:&#160;cnt(0),count(0),rate(0); Array&#160;:&#160;MC[20](0); if&#160;date&#160;>&#160;date[1]+30&#160;Then { &#160;&#160;&#160;&#160;&#160;&#160;for&#160;cnt&#160;=&#160;1&#160;to&#160;19 &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MC[cnt]&#160;=&#160;MC[cnt-1][1]; &#160;&#160;&#160;&#160;&#160;&#160;} } MC[0]&#160;=&#160;C; if&#160;MC[P]&#160;>&#160;0&#160;then { &#160;&#160;&#160;&#160;count&#160;=&#160;0; &#160;&#160;&#160;&#160;for&#160;cnt&#160;=&#160;0&#160;to&#160;P-1 &#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;MC[cnt]&#160;>&#160;MC[cnt+1]&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;count&#160;=&#160;count+1;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;rate&#160;=&#160;count/P*100; &#160;&#160;&#160;&#160;plot1(rate); } 2번째 질문//// m1= if((c-c(1)) > 0,1,0) ; m2= if((c-c(2)) > 0,1,0) ; m3= if((c-c(3)) > 0,1,0) ; m4= if((c-c(4)) > 0,1,0) ; m5= if((c-c(5)) > 0,1,0) ; m6= if((c-c(6)) > 0,1,0) ; m7= if((c-c(7)) > 0,1,0) ; m8= if((c-c(8)) > 0,1,0) ; m9= if((c-c(9)) > 0,1,0) ; m10= if((c-c(10)) > 0,1,0) ; m11= if((c-c(11)) > 0,1,0) ; m12= if((c-c(12)) > 0,1,0) ; moment_score= (m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11+m12)/12 ; 키움증권 수식입니다. data2(월봉차트)에 적용하여 모멘텀 스코어를 숫자로 표시하고 싶습니다.
프로필 이미지
stockric
2018-05-15
257
글번호 118911
지표
답변완료

부탁 드립니다

@@@ 1번으로 검색되는 종목중에서 2번 당일 매수신호 발생 종목 또는 2번 3번 식을 동시에 만족 하는 종목 검색식으로 부탁드립니다 1번 종목검색 var1 = ma(C,5); var2 = ma(C,10); var3 = ma(c,20); if m >= 1000000 and C >= O*1.05 and C < O*1.30 and var1 > var2 and var2 > var3 Then find(1); 2번 시스탬 input : 기간(0.4),수치(10); var : aa(0); aa=100*( (ma( (C+H+L)/3,20)+2* std((C+H+L)/3,20)) -(ma((C+H+L)/3,20)-2*Std((C+H+L)/3,20))) / ma((C+H+L)/3,20); if CrossUp(c,highest(H[1],수치)) and aa > 기간 Then buy("b"); if MarketPosition == 1 and Crossdown(c,lowest(L[1], 수치)) Then exitlong("bx"); if Crossdown(c,lowest(L[1], 수치)) Then sell("s"); if MarketPosition == -1 and CrossUp(c,highest(H[1],수치)) Then ExitShort("sx"); 3번 검색 input : abc(1.05); if C > dayopen*abc and ma(V,1) > 1000000 Then plot1(L,"검색"); @@ 1번 검색으로 검색되는 종목중에서 2번 시스템 매수신발생종목 또는 2번 3번 동시에 만족하는 종목 검색식 으로 부탁드립니다 @@
프로필 이미지
매치다는
2018-05-15
233
글번호 118905
종목검색
답변완료

검토부탁드려요

만들어주신 수식을가지고 종목검색을 해보고 싶은데 어떻게 실행해야하는지 잘모르겠습니다. 나름대로 해봤는데 검색되는 종목이 안나오네요 ㅠㅠ INPUT : LENGTH(20); VAR : TCHAN(0), BCHAN(0); TCHAN = HIGHEST(HIGH, LENGTH)[1]; BCHAN = LOWEST(LOW, LENGTH)[1]; if C > TCHAN Then find(1);
프로필 이미지
야구르트
2018-05-15
181
글번호 118902
종목검색
답변완료

수식 부탁드립니다.

수식 추가 부탁드립니다. 매수 진입 후 종가가 200선대비 n(50)틱이상 크게되는 ●(빨간색)이 나타나기 전에 200선 상향돌파 되는 ■(빨간색)이 3번(A번)이상 나타나면 매수포지션 청산 매도(반대) 종가가 200선대비 n(50)틱이상 작게되는 ●(파란색)이 나타나기 전에 200선 하향돌파 되는 ■(파란색)이 3번(A번)이상 나타나면 매도포지션 청산 input : n(50); var : t(0),t1(0),tx(0),tl(0); var1 = ma(c,20); var2 = ma(C,200); #200선 상향돌파 if Crossup(C,var2) Then { #t는 1 t = 1; #이전구간(하향이탈구간) t값은 t1에 저장 t1 = t[1]; #■출력 tx = Text_New(sdate,stime,H+PriceScale,"■"); Text_SetStyle(tx,2,2); Text_SetColor(tx,RED); #매수주문을 구간에 한번하기 위한 변수 Condition1 = false; } #200선 하향이탈 if CrossDown(C,var2) Then { #t는 -1 t = -1; #이전구간(상향돌파구간) t값은 t1에 저장 t1 = t[1]; #■출력 tx = Text_New(sdate,stime,L-PriceScale,"■"); Text_SetStyle(tx,2,2); Text_SetColor(tx,BLUE); #매도주문을 구간에 한번하기 위한 변수 Condition2 = false; } #t가 1일때 종가가 200선대비 n틱이상 크게되면 if t == 1 and c > var2+PriceScale*n Then { #t는 2로 변경 t = 2; #●출력 tx = Text_New(sdate,stime,H+PriceScale,"●"+NumToStr(C,2)); Text_SetStyle(tx,2,2); Text_SetColor(tx,RED); } #t가 -1일때 종가가 200선대비 n틱이상 작게되면 if t == -1 and c < var2-PriceScale*n Then{ #t는 -2로 변경 t = -2; #●출력 tx = Text_New(sdate,stime,L-PriceScale,"●"+NumToStr(C,2)); Text_SetStyle(tx,2,2); Text_SetColor(tx,BLUE); } # 200선 상향돌파하고 직전구간(하향이탈구간) t가 -2까지 기록했으면 if crossup(t,0) and t1 <= -2 Then { #★출력 tx = Text_New(sdate,stime,H+PriceScale*3,"★"); Text_SetStyle(tx,2,2); Text_SetColor(tx,RED); } # 200선 하향이탈하고 직전구간(상향돌파구간) t가 2까지 기록했으면 if CrossDown(t,0) and t1 >= 2 Then { #★출력 tx = Text_New(sdate,stime,L-PriceScale*3,"★"); Text_SetStyle(tx,2,2); Text_SetColor(tx,BLUE); } #200선 상향돌파한 구간이고 #직전 햐향이탈한 구간은 t는 -2까지 기록했고 #현재10선이 200선보다 크면 매수 if Condition1 == false and t > 0 and t1 <= -2 and var1 > var2 Then{ Condition1 = true; buy(); } #200선 하향이탈한 구간이고 #직전구간(상향돌파구간)애서 t는 2까지 기록했고 #현재10선이 200선보다 작으면 매도 if Condition2 == false and t < 0 and t1 >= 2 and var1 < var2 Then{ Condition2 = true; sell(); }
프로필 이미지
라떼처럼
2018-05-15
184
글번호 118901
시스템
답변완료

수식 추가

아래는 선물에 사용하는 buy 수식입니다. 손절,익절,trailing stop이 시스템설정창에 있지만 시뮬레이션을 위해 수식을 input에 추가하고 싶습니다. "손절,익절,최대수익대비하락은 설정기준이 %인지 pt인지 틱인지에 따라 수식이 다릅니다" 위와 같은 이유가 있으므로, 아래 수식에 대해 설정기준을 pt와 틱 2가지로 구분하여 손절,익절,trailing stop 수식을 input에 추가하여 주시기 바랍니다. ******************************************************************************** input : 진입시간(100000),진입제한시간(120000),트레이드종료시간(150000); Inputs: DMILen(14), Consec(3), MinDiff(0); Var : DMIDiff(0); var : Tcond(false); if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입제한시간) or (sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 트레이드종료시간) or (sdate == sdate[1] and stime >= 트레이드종료시간 and stime[1] < 트레이드종료시간) Then exitlong(); DMIDiff = DIPlus(DMILen) - DIMinus(DMILen); If DMIDiff[Consec] > 0 and Tcond == true Then Begin If DMIDiff >= MinDiff AND CountIF(DMIDiff > DMIDiff[1], Consec) == Consec Then Buy ("DMI"); End;
프로필 이미지
목마와숙녀
2018-05-15
192
글번호 118900
시스템
답변완료

안녕하세요.

안녕하세요... 수고 많으십니다........ 아래 수식에서 ...... 그림과 같이 10단위로 틱수를 넣어 주셨으면 합니다. 시스템식으로 안되면 지표식으로도 부탁드립니다. 감사합니다.... 수고 하세요.... Var : 기준선(0), 전환선(0), 선행스팬1(0), 선행스팬2(0); var : mav(0); 전환선 = (Highest(c, 1) + Lowest(c, 1)) / 2; 기준선 = (Highest(c, 26) + Lowest(c, 26)) / 2; 선행스팬1 = (전환선[25] + 기준선[25]) / 2 ; 선행스팬2 = (Highest(c, 52)[25] + Lowest(c, 52)[25]) / 2; mav = ma(C,5); if crossup(mav,선행스팬1) Then buy(); if CrossDown(mav,선행스팬1) Then sell();
프로필 이미지
탐라
2018-05-15
219
글번호 118899
시스템
답변완료

부탁드립니다.

- 1분챠트에서 종가가 60일 이동평균선을 넘고, 동시에 5분챠트에서 종가가 40일 이동평균선을 넘을 때 매수하고, 그 반대이면 매도하라는 시스템식을 부탁드립니다. 고맙습니다.
프로필 이미지
서태공
2018-05-14
177
글번호 118898
시스템
답변완료

이격도부탁합니다

안녕하세요 관리자님 예전에 만들어주신 아래의 선에 대한 이격도를 만들고 싶습니다 -아래- if Bdate != Bdate[1] Then{ var1 = 0; var2 = 0; var3 = 0; var4 = 0; var11 = var1[1]; var21 = var2[1]; var31 = var3[1]; var41 = var4[1]; } var1 = var1+(H-dayopen); var2 = var2+(C-dayopen); var3 = var3+(L-dayopen); var4 = var4+1; if var41 > 0 then{ plot1((var11/var41)+dayopen,"고가"); plot2((var21/var41)+dayopen,"종가"); plot3((var31/var41)+dayopen,"저가"); }
프로필 이미지
카카
2018-05-14
193
글번호 118897
지표