커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의 드립니다.

최근 발생한 상한가를 돌파하면 매수, 매도하는 시스템식인데요, 최근 상한가 이전의 봉을 돌파하면 매수가 되는데 변경 부탁합니다. #시스템식 var : 상한가(0), UpLimit(0),cnt(0),count(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0),TL(0); Array : upv[100](0),TX[100](0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then { If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else { If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } if H >= 상한가 Then { upv[0] = H[0]; count = count+1; TL = TL_New(sdate[1],stime[1],upv[0],sdate,stime,upv[0]); //TL_SetExtRight(TL,true); tx[0] = Text_New(sdate,stime,upv[0],NumToStr(upv[0],0)); for cnt = 1 to 99 { upv[cnt] = upv[cnt-1][1]; tx[cnt] = tx[cnt-1][1]; } } for cnt = 0 to count-1 { if upv[cnt] > 0 then { Text_SetLocation(TX[cnt],sdate,stime,upv[cnt]); if C > upv[cnt] and C[1] < upv[cnt] Then buy(); if C < upv[cnt] and C[1] > upv[cnt] Then sell(); } }
프로필 이미지
하리마우
2021-01-19
996
글번호 145595
시스템
답변완료

수식

안녕하세요. 하기와 같은 조건이 동시에 만족시 청산 수식 부탁드립니다. # 매수 청산 진입 봉 저가 이탈 진입 전봉 저가 이탈 진입가 대비 -20틱 이상 # 매도 청산 진입 봉 고가 돌파 진입 전봉 고가 돌파 진입가 대비 -20틱 이상 감사합니다.
프로필 이미지
한국사람73
2021-01-19
989
글번호 145594
지표
답변완료

문의드립니다!

안녕하세요!! 1, 아래 수식은 원래 data6 까지만 작성되었던것을 제가 임의로 data11 과 12를 추가한것입니다 이 수정된 수식에서 혹 잘못된부분이 없는지 검토바랍니다 챠트에 적용해보니 장중에 챠트가 일시적으로 쪼그라드는등 뭔가 문제점이 있는듯해서요 2, 원래수식(data6 까지만있는 수식)을 적용시에도 아래와같은 문제점이 발생되네요 즉, 이 가로선이 아침장 시작 직후에 보면 모두 나타나지를않고 일부만 챠트상에 표시가됩니다 그래서 참조챠트에 있는 이수식의 지표속성창을 다시한번 열었다가 확인버튼을 눌러주면 그때서야 모든선이 나타납니다 장 시작과 동시에 모든선이 다 나타날수있도록 자세한 검토 부탁드리겠습니다 감사합니다!! =================================================================================== #Data1 input : D1고점색상(REd),D1고점굵기(1),D1저점색상(red),D1저점굵기(1); input : D2고점색상(BLUe),D2고점굵기(1),D2저점색상(blue),D2저점굵기(1); input : D3고점색상(WHITe),D3고점굵기(1),D3저점색상(white),D3저점굵기(1); input : D4고점색상(white),D4고점굵기(1),D4저점색상(white),D4저점굵기(1); input : D5고점색상(MAGENTA),D5고점굵기(1),D5저점색상(MAGENTA),D5저점굵기(1); input : D6고점색상(CYAn),D6고점굵기(1),D6저점색상(cyan),D6저점굵기(1); input : D11고점색상(MAGENTA),D11고점굵기(1),D11저점색상(MAGENTA),D11저점굵기(1); input : D12고점색상(CYAn),D12고점굵기(1),D12저점색상(cyan),D12저점굵기(1); var : D1(0,Data1),T1(0,Data1),H1(0,data1),L1(0,data1),HTL1(0,Data1),LTL1(0,Data1); if data1(Bdate != Bdate[1]) Then { D1 = data1(sDate); T1 = data1(sTime); H1 = data1(H); L1 = data1(L); HTL1 = TL_New(D1,T1,h1,NextBarSdate,NextBarStime,h1); LTL1 = TL_New(D1,T1,l1,NextBarSdate,NextBarStime,l1); TL_SetColor(HTL1,D1고점색상); TL_SetColor(LTL1,D1저점색상); TL_SetSize(HTL1,D1고점굵기); TL_SetSize(LTL1,D1저점굵기); } Else { if Data1(H) > H1 Then { H1 = Data1(H); TL_SetBegin(HTL1,D1,T1,H1); } if Data1(L) < L1 Then { L1 = Data1(L); TL_SetBegin(LTL1,D1,T1,L1); } TL_SetEnd(HTL1,sDate,sTime,H1); TL_SetEnd(LTL1,sDate,sTime,L1); } #Data2 var : D2(0,Data2),T2(0,Data2),H2(0,data2),L2(0,data2),HTL2(0,Data2),LTL2(0,Data2); if data2(Bdate != Bdate[1]) Then { D2 = data2(sDate); T2 = data2(sTime); H2 = data2(H); L2 = data2(L); HTL2 = TL_New(D2,T2,h2,NextBarSdate,NextBarStime,h2); LTL2 = TL_New(D2,T2,l2,NextBarSdate,NextBarStime,l2); TL_SetColor(HTL2,BLUe); TL_SetColor(LTL2,BLUe); TL_SetSize(HTL2,D2고점굵기); TL_SetSize(LTL2,D2저점굵기); } Else { if Data2(H) > H2 Then { H2 = Data2(H); TL_SetBegin(HTL2,D2,T2,H2); } if Data2(L) < L2 Then { L2 = Data2(L); TL_SetBegin(LTL2,D2,T2,L2); } TL_SetEnd(HTL2,sDate,sTime,H2); TL_SetEnd(LTL2,sDate,sTime,L2); } #Data3 var : D3(0,Data3),T3(0,Data3),H3(0,data3),L3(0,data3),HTL3(0,Data3),LTL3(0,Data3); if data3(Bdate != Bdate[1]) Then { D3 = data3(sDate); T3 = data3(sTime); H3 = data3(H); L3 = data3(L); HTL3 = TL_New(D3,T3,h3,NextBarSdate,NextBarStime,h3); LTL3 = TL_New(D3,T3,l3,NextBarSdate,NextBarStime,l3); TL_SetColor(HTL3,MAGENTa); TL_SetColor(LTL3,MAGENTa); TL_SetSize(HTL3,D3고점굵기); TL_SetSize(LTL3,D3저점굵기); } Else { if Data3(H) > H3 Then { H3 = Data3(H); TL_SetBegin(HTL3,D3,T3,H3); } if Data3(L) < L3 Then { L3 = Data3(L); TL_SetBegin(LTL3,D3,T3,L3); } TL_SetEnd(HTL3,sDate,sTime,H3); TL_SetEnd(LTL3,sDate,sTime,L3); } #Data4 var : D4(0,Data4),T4(0,Data4),H4(0,data4),L4(0,data4),HTL4(0,Data4),LTL4(0,Data4); if data4(Bdate != Bdate[1]) Then { D4 = data4(sDate); T4 = data4(sTime); H4 = data4(H); L4 = data4(L); HTL4 = TL_New(D4,T4,h4,NextBarSdate,NextBarStime,h4); LTL4 = TL_New(D4,T4,l4,NextBarSdate,NextBarStime,l4); TL_SetColor(HTL4,BLUe); TL_SetColor(LTL4,BLUe); TL_SetSize(HTL4,D4고점굵기); TL_SetSize(LTL4,D4저점굵기); } Else { if Data4(H) > H4 Then { H4 = Data4(H); TL_SetBegin(HTL4,D4,T4,H4); } if Data4(L) < L4 Then { L4 = Data4(L); TL_SetBegin(LTL4,D4,T4,L4); } TL_SetEnd(HTL4,sDate,sTime,H4); TL_SetEnd(LTL4,sDate,sTime,L4); } #Data5 var : D5(0,Data5),T5(0,Data5),H5(0,data5),L5(0,data5),HTL5(0,Data5),LTL5(0,Data5); if data5(Bdate != Bdate[1]) Then { D5 = data5(sDate); T5 = data5(sTime); H5 = data5(H); L5 = data5(L); HTL5 = TL_New(D5,T5,h5,NextBarSdate,NextBarStime,h5); LTL5 = TL_New(D5,T5,l5,NextBarSdate,NextBarStime,l5); TL_SetColor(HTL5,MAGENTA); TL_SetColor(LTL5,MAGENTA); TL_SetSize(HTL5,D5고점굵기); TL_SetSize(LTL5,D5저점굵기); } Else { if Data5(H) > H5 Then { H5 = Data5(H); TL_SetBegin(HTL5,D5,T5,H5); } if Data5(L) < L5 Then { L5 = Data5(L); TL_SetBegin(LTL5,D5,T5,L5); } TL_SetEnd(HTL5,sDate,sTime,H5); TL_SetEnd(LTL5,sDate,sTime,L5); } #Data6 var : D6(0,Data6),T6(0,Data6),H6(0,data6),L6(0,data6),HTL6(0,Data6),LTL6(0,Data6); if data6(Bdate != Bdate[1]) Then { D6 = data6(sDate); T6 = data6(sTime); H6 = data6(H); L6 = data6(L); HTL6 = TL_New(D6,T6,h6,NextBarSdate,NextBarStime,h6); LTL6 = TL_New(D6,T6,l6,NextBarSdate,NextBarStime,l6); TL_SetColor(HTL6,BLUe); TL_SetColor(LTL6,BLUe); TL_SetSize(HTL6,D6고점굵기); TL_SetSize(LTL6,D6저점굵기); } Else { if Data6(H) > H6 Then { H6 = Data6(H); TL_SetBegin(HTL6,D6,T6,H6); } if Data6(L) < L6 Then { L6 = Data6(L); TL_SetBegin(LTL6,D6,T6,L6); } TL_SetEnd(HTL6,sDate,sTime,H6); TL_SetEnd(LTL6,sDate,sTime,L6); } #Data11 var : D11(0,Data11),T11(0,Data11),H11(0,data11),L11(0,data11),HTL11(0,Data11),LTL11(0,Data11); if data11(Bdate != Bdate[1]) Then { D11 = data11(sDate); T11 = data11(sTime); H11 = data11(H); L11 = data11(L); HTL11 = TL_New(D11,T11,h11,NextBarSdate,NextBarStime,h11); LTL11 = TL_New(D11,T11,l11,NextBarSdate,NextBarStime,l11); TL_SetColor(HTL11,MAGENTA); TL_SetColor(LTL11,MAGENTA); TL_SetSize(HTL11,D11고점굵기); TL_SetSize(LTL11,D11저점굵기); } Else { if Data11(H) > H11 Then { H11 = Data11(H); TL_SetBegin(HTL11,D11,T11,H11); } if Data11(L) < L11 Then { L11 = Data11(L); TL_SetBegin(LTL11,D11,T11,L11); } TL_SetEnd(HTL11,sDate,sTime,H11); TL_SetEnd(LTL11,sDate,sTime,L11); } #Data12 var : D12(0,Data12),T12(0,Data12),H12(0,data12),L12(0,data12),HTL12(0,Data12),LTL12(0,Data12); if data12(Bdate != Bdate[1]) Then { D12 = data12(sDate); T12 = data12(sTime); H12 = data12(H); L12 = data12(L); HTL12 = TL_New(D12,T12,h12,NextBarSdate,NextBarStime,h12); LTL12 = TL_New(D12,T12,l12,NextBarSdate,NextBarStime,l12); TL_SetColor(HTL12,BLUe); TL_SetColor(LTL12,BLUe); TL_SetSize(HTL12,D12고점굵기); TL_SetSize(LTL12,D12저점굵기); } Else { if Data12(H) > H12 Then { H12 = Data12(H); TL_SetBegin(HTL12,D12,T12,H12); } if Data12(L) < L12 Then { L12 = Data12(L); TL_SetBegin(LTL12,D12,T12,L12); } TL_SetEnd(HTL12,sDate,sTime,H12); TL_SetEnd(LTL12,sDate,sTime,L12); }
프로필 이미지
유로파54
2021-01-19
875
글번호 145592
지표
답변완료

수식 문의드립니다.

1. 나무 투자증권의 조건검색식을 예스트레이더 수식으로 변경 부탁드립니다. 2. 특정일(N)의 상한가(고가가 상한가)에서 현재가가 그 특정일의 시가와 고가중 높은값을 (MaxOC)를 돌파하는 검색식과 시스템식 예를들면) 5일전 고가가 상한가인 종목중에서 현재가가 MaxOC를 돌파한 종목 3. 현재부터 특정일까지의 상한가(고가가 상한가)를 현재가가 시가와 고가중 높은값(MaxOC)를 돌파하는 검색식과 시스템식을 부탁합니다. 수식을 만들어 비교를 해봤는데 종목이 다르게 검색되어 부탁드립니다^^ 그럼 감사드립니다~
프로필 이미지
하리마우
2021-01-19
1133
글번호 145590
종목검색
답변완료

여러가지 질문드립니다!

1.obv지표에서 10일선,단순 적용하고 싶습니다. 2.거래량지표에 마우스 갖다대면 등락율 나오게 하고싶고 10이평선 같이 적용하고 싶습니다. 3.cci지표는 일봉에는 +,- 150으로 바꾸고 싶고 월봉에는 +,-130으로 적용하고 싶습니다
프로필 이미지
jamesk
2021-01-19
1041
글번호 145589
지표
답변완료

종목 검색과 자동매매 문의드립니다.

예스트레이더 본격 시작 전에, 제가 어느 부분을 집중적으로 공략해야 되는지 판단이 서지않아 문의드립니다. 타 HTS의 종목검색 기능이 EZ전략생성기라 할 수 있겠는데요, 여기서 기술지표, 가격, 거래량 등으로 조건/전략을 생성하는건 당연한 것인데, 문제는 전략 생성 후 검색과 자동매매가 이루어 지나요? 조건에 따라 코스피코스닥에서 종목을 필터하고, 이 종목을 자동매매로 할 수가 있는 건가요? 아니면 EZ전략이 아닌 예스스팟으로 언어를 입력해가며 필터링하고 자동매매하는 쪽으로 공부를 해야 되나요? 감사합니다.
프로필 이미지
goodegg
2021-01-19
828
글번호 145586
시스템
답변완료

문의

아래는 sell 전용수식입니다. 시뮬레이션한 결과는 첨부파일1 전략실행차트로 세팅한 결과는 첨부파일2 질문 동일한 수식인데 시뮬레이션 결과대로 전략실행차트가 실행되지 않습니다. 살펴주셨으면 합니다. 수정내용은 수식에 # 표시를 해주시면 고맙겠습니다. *************************************************************************************** input : 거래횟수(20),시작시간(090000); input : d1(100),ER1(100),EF1(100),X1(99999),CR1(0),CF1(0); input : d2(100),ER2(100),EF2(100),X2(99999),CR2(0),CF2(0); var : T1(0,Data1),entry(0,Data1),HH(0,Data1),LL(0,Data1),EH(0,Data1),EL(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1); var : sum(0,Data1); sum = Data2(c)+ data3(c); if Data2((sdate != sdate[1] and stime >= 시작시간) or (sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then{ T1 = TotalTrades; E1 = 0; HH = sum; } if data2(stime >= 시작시간) then{ if sum > HH Then HH = sum; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then{ if E1 == 0 and sum <= HH-data2(PriceScale)*d1 and sum[1] < HH-data2(PriceScale)*d1 Then{ E1 = 1; L1 = sum; i1 = data2(index); V1 = HH; //시작점 종가 } if E1 == 1 and index > i1 then{ if sum < L1 Then L1 = sum; #고가가 시작봉종가보다 작을 때만 눌림체크 if sum <= V1 and sum >= L1+data2(PriceScale)*ER1 Then{ E1 = 2; i1 = data2(index); S1 = L1; } } //시작점 종가보다 높은 가격이 발생하면 초기화 if E1 >= 1 and sum > V1 Then{ E1 = 0; HH = sum; } if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*EF1 and Data2(NextBarSdate == sDate) Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = sum; } if sum > HH Then HH = sum; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and sum <= HH-data2(PriceScale)*d2 and sum[1] < HH-data2(PriceScale)*d2 Then{ E1 = 1; L1 = sum; i1 = data2(index); } if E1 == 1 and data2(index) > i1 then{ if sum < L1 Then L1 = sum; if sum >= L1+data2(PriceScale)*ER2 Then{ E1 = 2; i1 = data2(index); S1 = L1; } } if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*EF2 and Data2(NextBarSdate == sDate) Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 and IsEntryName("s1") == true Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = sum; E1 = 0; } if sum < EL Then{ EL = sum; E1 = 0; } if E1 == 0 and sum >= EL+data2(PriceScale)*X1 Then{ E1 = 1; H1 = sum; i1 = index; } if E1 == 1 and data2(index) > i1 Then{ if sum > H1 Then H1 = sum; if sum <= H1-data2(PriceScale)*CR1 Then{ E1 = 2; I1 = data2(index); S1 = H1; } } if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*CF1 Then{ ExitShort("sx1"); E1 = 0; } } } if MarketPosition == -1 and IsEntryName("s2") == true Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = sum; E1 = 0; } if sum < EL Then{ EL = sum; E1 = 0; } if E1 == 0 and sum >= EL+data2(PriceScale)*X2 Then{ E1 = 1; H1 = sum; i1 = index; } if E1 == 1 and index > i1 Then{ if sum > H1 Then H1 = sum; if sum <= H1-data2(PriceScale)*CR2 Then{ E1 = 2; I1 = data2(index); S1 = H1; } } if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*CF2 Then{ ExitShort("sx2"); E1 = 0; } } } }
프로필 이미지
좌오비우오비
2021-01-19
789
글번호 145585
시스템
답변완료

문의드립니다

이평선 의 최근 20봉 최저점을 찾기위해 Lowest( 이평선 ,20) 함수를 사용하는데 어제 이평선이 낮은값으로 끝났던는날엔 당일 장시작되고 20봉 이전에는 간섭이 일어납니다 장시작 후 20봉 이전에는 이평선 당일의 최저점으로 표기되고 20봉 이후에는 Lowest( 이평선 ,20) 표기 되도록 하고싶습니다 감사합니다
프로필 이미지
파인애플
2021-01-19
807
글번호 145584
지표
답변완료

수식 문의드립니다

영웅문에서 사용하는 지표인데 수식2가 기준선을 돌파시 종목검색식을 작성하고싶습니다. 기준선 0 수식1. P1=MA(C/C(10)-1, 10); P2=MA(C/C(15)-1, 10); P3=MA(C/C(20)-1, 10); P4=MA(C/C(30)-1, 15); P5=P1+2*P2+3*P3+4*P4; P5 수식2. BUY=CROSSUP(RSI(12),40) OR C<MA(C,40); SELL=CROSSUP(40,RSI(12)) AND C>MA(C,40); CBUY=CROSSUP(RSI(5),40) OR C<MA(C,10) OR BUY>0; CSELL=(CROSSUP(40,RSI(5)) AND C>MA(C,10)) AND SELL>0; IF(CBUY,P5,0)
프로필 이미지
소자
2021-01-19
1018
글번호 145583
종목검색