커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

안녕하세요?

1.되돌림선 추가 부탁드립니다.(그림1 참고) 0% , 23.6% , 38.2% , 50% , 61.8% , 76.4% ,100% 2. 테스트표시를 아래처럼 변경가능한가요? ex) 1256.5 -> 565 앞의 두자리는 안나오게하고 뒤에3자리만 표시하고 싶습니다. 그리고 3틱 위,아래에 위치하게 해주세요. 다른상품도 변경할수 있게 간단한 설명 부탁드립니다. 감사합니다. Input:length(5); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""), TL_Val1(0),TL_Val2(0); Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0); Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(0); Array:고점[10,2](0),저점[10,2](0); 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); #TL_SetSize(TL1,1); TL_SetColor(TL1,YELLOW); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2)+" +"+NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)); Text_SetStyle(Text1, 2, 1); Text_SetColor(Text1,RED); If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; } } } If 처리구분 == "저점처리" Then { lastLoVal = L; If 저점[1,2] < 고점[1,2] Then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); #TL_SetSize(TL1,1); TL_SetColor(TL1,YELLOW); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2)+" -"+NumToStr(abs(저점[1,1]-고점[1,1])/PriceScale,0)); Text_SetStyle(Text1, 2, 0); Text_SetColor(Text1,BLUE); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } mav = ma(C,20);
프로필 이미지
상중하
2017-03-06
173
글번호 107476
지표
답변완료

수식수정 부탁 합니다.

아래식의 지표가 봉차트위로 드래그가 안됩니다....... 봉차트위로 지표가 자유롭게 이동 할 수 있도록 수식을 수정하여 주시면 감사 하겠습니다. Input:상승전환가격(1),하락전환가격(1); Var:j(0),꺾은선(0),방향(0),상승(100),하락(-100), 기준고(0),기준저(0),기준고Bar(0),기준저Bar(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { 고Bar[j] = 고Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If 기준고 <= C || 기준고 == 0 || IsNaN(기준고) == True Then { 기준고 = C; 기준고Bar = 0; } Else 기준고Bar = 기준고Bar + 1; If 기준저 >= C || 기준저 == 0 || IsNaN(기준저) == True Then { 기준저 = C; 기준저Bar = 0; } Else 기준저Bar = 기준저Bar + 1; #==========================================# # 추세방향 결정 #==========================================# If 기준저[1] + 상승전환가격 > C[1] && 기준저[1] + 상승전환가격 <= C Then 방향 = 상승; If 기준고[1] - 하락전환가격 < C[1] && 기준고[1] - 하락전환가격 >= C Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = C; 기준저Bar = 0; 기준고 = C; 기준고Bar = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = C; 기준고Bar = 0; 기준저 = C; 기준저Bar = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If 기준고[1] - 하락전환가격 <= C[1] && 기준고[1] - 하락전환가격 > C && 고[1] < 기준고 Then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = C; 기준고Bar = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If 기준저[1] + 상승전환가격 >= C[1] && 기준저[1] + 상승전환가격 < C && 저[1] > 기준저 Then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = C; 기준저Bar = 0; } } #==========================================# # 지표식 출력 #==========================================# If 꺾은선[1] != 꺾은선 Then Plot1(꺾은선); Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,기준고,기준저));
프로필 이미지
너무조아
2017-03-06
139
글번호 107475
지표
답변완료

영웅문 수식을 예스용으로 변환부탁드립니다

//A=(highest(H,shortPeriod)+lowest(L,shortPeriod))/2; //B=(highest(H,midPeriod)+lowest(L,midPeriod))/2; //CrossUp(A,B) ; //CrossDown(A,B) &#8203; //[수식1]매수 - 빨강 -막대 - 화면 A=(highest(H,9)+lowest(L,9))/2; B=(highest(H,26)+lowest(L,26))/2; 매수진입 = A>B AND A(1)<=B(1) AND C>O ; 매도진입 = A<B AND A(1)>=B(1) AND C<O ; 매수 = IF(매수진입,100,0); 매도 = IF(매도진입,-100,0); 매수 //[수식2]매도 - 파랑 -막대 - 화면 매도 참고 파일 첨부합니다! 감사합니다!
프로필 이미지
qha71
2017-03-06
193
글번호 107474
시스템
답변완료

재문의드립니다.

52207번 답을 주신 것에 재문의 드렸습니다. 다시한번 살펴주시기 바랍니다. 감사드려요!!!
프로필 이미지
해암
2017-03-06
110
글번호 107473
검색
답변완료

수식작성

선물, 옵션에서 장 시작 후 시가를 깨고 내려갔다가, 다시 시가를 깨고 오르는 경우 시가에 매수주문 하는 수식 부탁드립니다. 초보라서 죄송합니다..
프로필 이미지
yunmx
2017-03-05
115
글번호 107472
시스템
답변완료

시스템식 부탁드립니다

항상 도움 주셔서 감사합니다. 아래처럼 코딩을 하였는데 매매가 안됩니다. 매매가 될수 있도록 도움 부탁드립니다. //======================================================== // 추세선으로 매매하기 //======================================================== input : 추세선시작일1(20170303),추세선시작시간1(070000); //추세선1-저가 input : 추세선종료일1(20170303),추세선종료시간1(190500); //추세선1-저가2 input : 추세선시작일2(20170303),추세선시작시간2(011000); //추세선2-고가 input : 추세선종료일2(20170303),추세선종료시간2(174500); //추세선2-고가2 input : X1(0.65),X11(-0.65),X2(0.6),X22(-0.6) ;// 추세선 이동 input : loss(10),profit(30),Tp(10),Ts(5); // 수익,손절,트레일링스탑 var : TL1(0),TLL1(0),TLLL1(0),T1(0); //추세선1 var : TL2(0),TLL2(0),TLLL2(0),T2(0); //추세선2 ##### 추세선 그리기 ##### // 추세선1 - 저가 if sdate == 추세선시작일1 and time == 추세선시작시간1 Then{ T1 = 1; var1 = L; } if T1 == 1 and sdate == 추세선종료일1 and time == 추세선종료시간1 Then{ var2 = L; TL1 = TL_New(추세선시작일1,추세선시작시간1,var1,추세선종료일1,추세선종료시간1,var2); TL_SetExtLeft(TL1,true); TL_SetExtRight(TL1,true); TL_SetColor(TL1,BLUE) ; T1 = 2; TLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x1,추세선종료일1,추세선종료시간1,var2+x1); //추세선 복사 TL_SetExtLeft(TLL1,true); TL_SetExtRight(TLL1,true); TL_SetColor(TLL1,BLUE) ; TLLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x11,추세선종료일1,추세선종료시간1,var2+x11); //추세선 복사 TL_SetExtLeft(TLLL1,true); TL_SetExtRight(TLLL1,true); TL_SetColor(TLLL1,BLUE) ; } // 추세선2 - 고가 if sdate == 추세선시작일2 and time == 추세선시작시간2 Then{ T2 = 1; var3 = H; } if T2 == 1 and sdate == 추세선종료일2 and time == 추세선종료시간2 Then{ var4 = H; TL2 = TL_New(추세선시작일2,추세선시작시간2,var3,추세선종료일2,추세선종료시간2,var4); TL_SetExtLeft(TL2,true); TL_SetExtRight(TL2,true); TL_SetColor(TL2,RED) ; T2 = 2; TLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x2,추세선종료일2,추세선종료시간2,var4+x2); TL_SetExtLeft(TLL2,true); TL_SetExtRight(TLL2,true); TL_SetColor(TLL2,RED) ; TLLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x22,추세선종료일2,추세선종료시간2,var4+x22); TL_SetExtLeft(TLLL2,true); TL_SetExtRight(TLLL2,true); TL_SetColor(TLLL2,RED) ; } ##### 시스템매매 ##### // 진입 시스템 // 매매시간 시작(2개의 추세선 중 늦은시간의 추세선이 그려진 이후 매매) if sdate >= 추세선종료일1 and stime >= 추세선종료시간1 then { // 저가선 하락돌파 if T1 == 2 and MarketPosition == 0 then{ if C < TL_GetValue(TL1,sdate,stime) and C[1] > TL_GetValue(TL1,sdate[1],stime[1]) Then sell("S"); } // 고가선 상승돌파 if T2 == 2 and MarketPosition == 0 then{ if C > TL_GetValue(TL2,sdate,stime) and C[1] < TL_GetValue(TL2,sdate[1],stime[1]) Then Buy("B"); } // 청산 시스템 // 매도청산 if T1 == 2 and MarketPosition == -1 then{ if (C <= TL_GetValue(TLLL1,sdate,stime) and C[1] > TL_GetValue(TLLL1,sdate[1],stime[1])) or (C <= TL_GetValue(TLLL2,sdate,stime) and C[1] > TL_GetValue(TLLL2,sdate[1],stime[1])) Then ExitShort("SX"); } // 매수청산 if T2 == 2 and MarketPosition == 1 then{ if (C >= TL_GetValue(TLL1,sdate,stime) and C[1] < TL_GetValue(TLL1,sdate[1],stime[1])) or (C >= TL_GetValue(TLL2,sdate,stime) and C[1] < TL_GetValue(TLL2,sdate[1],stime[1])) Then ExitLong("BX"); } // 매매시간종료 } ##### 스탑로스 ##### //SetStopProfittarget(Profit*PriceScale,PointStop); SetStopLoss(loss*PriceScale,PointStop); //SetStopTrailing(TS*PriceScale,TP*PriceScale,PointStop); SetStopEndofday(065000) ; - 위 코딩은 오일 4월물로 테스트 부탁드립니다. 그리고 한가지 부탁드립니다. 예스스탁에서 추세선 매매 할수 있는 시스템 개발 좀 부탁드립니다. 추세선 매매가 되면 더 많은 사람들이 예스스탁을 이용할 것이며, 수식작성에 대한 문의도 줄어들것으로 예상됩니다. 추세선 매매만 된다면 정말 훌륭한 시스템매매 툴이 될것으로 생각됩니다. 다시한번 부탁드립니다.
프로필 이미지
양치기
2017-03-06
135
글번호 107471
시스템
답변완료

수식추가부탁드림니다

52224관련수식에서 파동의고점(마지막봉)과고점(마지막봉)을 연결하는 윗꼬리선(1종가선+2고가선)과 파동의 저점(마지막봉)과저점(마지막봉)을 연결하는 아랫꼬리선(3종가선+4저가선)4선을 추가해주세요
프로필 이미지
수루지
2017-03-06
150
글번호 107470
지표
답변완료

문의드립니다.

1. input:p(192),stoch_k(14),stoch_d(5),stoch_s(3),mv(5),kstd(1.618); var:j(1),sum(0),ip(0),n(0),f(0),qq(0),mm(0),tt(0),ii(0),jj(0), kk(0),ll(0),nn(0),mi(0),kstd_internal(0.8); var:sq(0),stdv(0),StoK(0),StoD(0); array:ai[10,10](0),b[10](0),x[10](0),sx[20](0); array:fx[500](0),sqh[500](0),sql[500](0),stdh[500](0),stdl[500](0); //-------------------stochastic------------------- value1 = lowest(L,stoch_k); value2 = highest(H,stoch_k); value3 = (Close - value1) / (value2 - value1) * 100; StoK = ma(value3, stoch_d); StoD = ma(StoK,stoch_s); //-------------------sx--------------------------- sx[1] = p + 1; nn = mv + 1; //5 + 1 = 6 for mi = 1 to nn * 2 - 2 begin //1 ~ 10 sum = 0; for n = j to j + p begin //1 ~ 193 sum = sum + pow(n,mi); end sx[mi + 1] = sum; end //-------------------syx-------------------------- for mi = 1 to nn begin //1 ~ 6 sum = 0; for n = j to j + p begin //1 ~ 193 if mi == 1 then sum = sum + StoK[n]; else sum = sum + StoK[n] * pow(n,mi - 1); end b[mi] = sum; end //===================Matrix======================= for jj = 1 to nn begin //1 ~ 6 for ii = 1 to nn begin //1 ~ 6 kk = ii + jj - 1; //1 ~ 11 ai[ii,jj] = sx[kk]; end end //===================Gauss======================== for kk = 1 to nn - 1 begin //1 ~ 5 ll = 0; mm = 0; for ii = kk to nn begin if abs(ai[ii,kk]) > mm then begin mm = abs(ai[ii,kk]); ll = ii; end end if ll == 0 then kk = 10; else if ll <> kk then begin for jj = 1 to nn begin //1 ~ 6 tt = ai[kk,jj]; ai[kk,jj] = ai[ll,jj]; ai[ll,jj] = tt; end tt = b[kk]; b[kk] = b[ll]; b[ll] = tt; end for ii = kk + 1 to nn begin qq = ai[ii,kk] / ai[kk,kk]; for jj = 1 to nn begin if jj == kk then begin ai[ii,jj] = 0; end else begin ai[ii,jj] = ai[ii,jj] - qq * ai[kk,jj]; end end b[ii] = b[ii] - qq * b[kk]; end end x[nn] = b[nn] / ai[nn,nn]; for ii = nn - 1 downto 1 begin tt =0; for jj = 1 to nn - ii begin tt = tt + ai[ii,ii + jj] * x[ii + jj]; x[ii] = (1 / ai[ii,ii]) * (b[ii] - tt); end end //================================================ for n = j to j + p begin sum = 0; for kk = 1 to mv begin sum = sum + x[kk + 1] * Pow(n,kk); end fx[n] = x[1] + sum; end //-------------------Std-------------------------- sq = 0; for n = j to j + p begin sq = sq + pow(StoK[n] - fx[n],2); end sq = SqRt(sq / (p + 1)) * kstd; stdv = STD(StoK,p)[j] * kstd_internal; for n = j to j + p begin sqh[n] = fx[n] + sq; sql[n] = fx[n] - sq; stdh[n] = fx[n] + stdv; stdl[n] = fx[n] - stdv; end #3 if (crossup(stok,stdl[1]) and stod > stdl[1]) or (CrossUp(stod,stdl[1]) and stok > stdl[1]) Then buy(); if (CrossDown(stok,sqh[1]) and stod < sqh[1]) or (CrossDown(stod,sqh[1]) and stok < sqh[1]) Then ExitLong(); if (CrossDown(stok,stdh[1]) and stod < stdh[1]) or (CrossDown(stod,stdh[1]) and stok < stdh[1]) Then sell(); if (crossup(stok,sql[1]) and stod > sql[1]) or (CrossUp(stod,sql[1]) and stok > sql[1]) Then buy(); 2. input : 기간(20); INPUT: P26(26), PER(1); var : T(0),a1(0),a2(0),V1(0),V2(0),V3(0); var1 = Highest(h,기간); var2 = Lowest(L,기간); var3 = var1-var2; value1 = var1-var3*0.382; value2 = var1-var3*0.500; value3 = var1-var3*0.618; if value2 > value2[1] Then T = 1; if value2 < value2[1] Then T = -1; if T == 1 then{ a1 = value1; a2 = value2; } else{ a1 = value3; a2 = value2; } V1=(Highest(H,P26)+LOWEST(L,P26))/2; V2=V1*(1+PER/100); V3=V1*(1-PER/100); if crossup(a1,v1) Then buy("매수",OnClose,def,2); if CrossDown(a1,v1) Then sell("매도",OnClose,def,2); if MarketPosition == 1 Then{ ExitLong("매수10틱청",atlimit,EntryPrice+PriceScale*10,"",1,1); } if MarketPosition == -1 Then{ ExitShort("매도10틱청",atlimit,EntryPrice-PriceScale*10,"",1,1); } 위 2가지 수식에 추가를 좀부탁드리는 수식입니다 1.거래시간(예: 저녁 6시부터 밤 12시 까지만 그외 시간에는 신호발생금지) 시간 수정 가능하게 부탁드립니다 2.수익설정(예: 크루드오일 경우 0.01=1틱 수익 수정=설정 가능하게) 수익설정(예: 20틱 을 수익으로 설정할경우 더이상 신호발생 금지) 감사합니다
프로필 이미지
곽민수
2017-03-05
165
글번호 107469
시스템
답변완료

검증부탁드립니다.

안녕하세요 아래의 식을 한번 봐주시고 잘못된 부분이 있으면 알려주시기 바랍니다. 감사합니다. ----------------------------------------------------------------------------------- If 조건 then{ EP= C; if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("B1") == false) then sell("S1"); } if O - C < 0.5 then if MarketPosition == -1 Then{ if IsEntryName("S1") == true Then ExitShort("S1손절",AtStop,EP+Pricescale*10); if IsEntryName("S1") == true Then ExitShort("S1익절",Atlimit,EP-Pricescale*15); } if O - C >= 0.5 then if MarketPosition == -1 Then{ if IsEntryName("S1") == true Then ExitShort("S1손절2",AtStop,EP+Pricescale*6); if IsEntryName("S1") == true Then ExitShort("S1익절2",Atlimit,EP-Pricescale*15); } if MarketPosition == -1 Then{ if IsEntryName("S1") == true Then if lowest(L,BarsSinceEntry)<= EntryPrice - PriceScale*10 and lowest(L,BarsSinceEntry) > EntryPrice - PriceScale*20 Then ExitShort("S1본절",AtStop,EntryPrice-PriceScale*3); }
프로필 이미지
맘속의행복
2017-03-05
123
글번호 107468
시스템