커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

77105번글 재질문입니다

혹시 H > HH 또는 L > LL 이 되었을 때 직전 봉의 상태에 대해 수식작성이 가능한가요? 예를들어 L > LL 의 1봉전의 상태가 HL > 0 이라면 noplot H > HH 의 1봉전의 상태가 LH > 0 이라면 noplot
프로필 이미지
티끌모아티끌
2022-05-11
1303
글번호 158741
지표
답변완료

문의 드립니다.

안녕하세요 수정해준 지표 잘 쓰고 있습니다. 그런데 표시한 지표가 너무 많아서 몇개 빼고 싶어서 제가 직접 삭제 해보고 수정 해보는데 너무 잘 안되서 도움 부탁드립니다. ㅠㅠ 이 지표는 고점 저점에 3가지 숫자가 표시 되는데 그중에 시간만 남고 가격, 몇틱인지 표시되는 것을 빼주시면 감사하겠습니다. 또 고점 저점에 수평선이 나오는데 그것도 지표 변경 옵션창에 있는 수치표시 하기 기능과 비슷하게 1 하면 나오고 0 하면 안 나오게 해주시면 감사하겠습니다. 또 추가 하고 싶은게 있는데요. 지금 지표는 저점에서 고점까지 몇틱 고점에서 저점까지 몇틱 나오잖아요? 그것을 응용해서 저점시간에서 고점시간까지 빼서 시/분/초 단위로 얼마 증가 했는지 고점시간에서 저점시간까지 빼서 시/분/초 단위로 얼마 증가 했는지 이렇게 계산해서 표시 할 수 있을까요? 다시 정리 하자면 1. 3가지 표시된 것 중에 시간 남기고 다 빼버린다. 2. 수평선을 1 or 0 설정하기 기능 넣기 3. 고저 저고 몇틱을 표시한 것을 응용해서 고저 저고 시간을 빼서 시간 얼마 증가 했는지 계산해서 표시 이렇게 수정 해주시면 정말 감사하겠습니다. ================수정해준 지표================ input:length(4),종가사용여부(0),파동선두께(5),수치표시(1); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),tl2(0),tl3(0),tl4(0),tl5(0),T(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { T = 1; 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],"+"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+NewLine+NumToStr(고[1,1],2)+NewLine+NumToStr(고[1,4],0)); Text_SetStyle(Text1, 2, 1); Text_SetColor(Text1,BLACK); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,red); } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,4],0)+NewLine+"+"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+NewLine+NumToStr(고[1,1],2)); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { T = -1; 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)+NewLine+NumToStr((저[1,1]-고[1,1])/PriceScale,0)+NewLine+NumToStr(저[1,4],0)); Text_SetStyle(Text1, 2, 0); Text_SetColor(Text1,BLACK); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,blue); } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)+NewLine+NumToStr((저[1,1]-고[1,1])/PriceScale,0)+NewLine+NumToStr(저[1,4],0)); } } 최종꼭지점 = "저점"; } if T == -1 and T[1] != -1 Then{ TL2 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]); TL_Delete(TL3); TL3 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]); TL_SetExtRight(TL3,true); TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,BLUE); TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,BLUE); } if T == 1 and T[1] != 1 Then{ TL4= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]); TL_Delete(TL5); TL5= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]); TL_SetExtRight(TL5,true); TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,RED); TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,RED); } +표시해서
프로필 이미지
스오어스
2022-05-11
1399
글번호 158740
지표
답변완료

문의드립니다.

시작시간 15시.30분 끝나는 시간 다음날 오전 05시50분.진입한 상품이 있다면 모두청산후 시스템 완전종료. 이평 1 이 이평 2 아래의 있고 스토캐스틱 퍼스트80 아래의 있고 스토캐스틱 퍼스트35 상향돌파 매도.40상향돌파 매도.50상향돌파 매도. 60상향돌파 매도. 65상향돌파 매도. 알에스아이 45상향돌파 매도.50상향돌파 매도. 스토캐스틱 퍼스트80 상향돌파 매도청산. 누적수익400틱. 누적수익3회 달성되면 시간과 관계없이 시스템 완전종료. 수고하세요.
프로필 이미지
아침
2022-05-10
980
글번호 158739
시스템
답변완료

문의드립니다.

시작시간 15시.30분 끝나는 시간 다음날 오전 05시50분.진입한 상품이 있다면 모두청산후 시스템 완전종료. 이평 1 이 이평 2 위의 있고 스토캐스틱 퍼스트20 위의 있고 스토캐스틱 퍼스트65 하향돌파 매수.60하향돌파 매수.50하향돌파 매수. 40하향돌파 매수. 35하향돌파 매수. 알에스아이 55하향돌파 매수.50하향돌파 매수. 스토캐스틱 퍼스트20 하향돌파 매수청산. 누적수익400틱. 누적수익3회 달성되면 시간과 관계없이 시스템 완전종료. 수고하세요.
프로필 이미지
아침
2022-05-10
898
글번호 158738
시스템
답변완료

수식문의 드립니다

매번 친절하게 가르쳐 주셔서 감사 드립니다. 가르쳐 주신대로 적용 했는데 원하는 답이 안나와서 파일을 첨부해서 좀더 구체적으로 문의 드립니다.
프로필 이미지
진진
2022-05-11
1182
글번호 158736
검색
답변완료

수식부탁드려요

월봉기준으로 매수신호나 종목으로 검색되는 경우에, 일봉상으로 언제부터 검색되었는지 알고 싶어서 이에 대한 수식이 가능한지 여쭈어보고자 합니다. 예를들어 조건1의 수식으로 월봉상 종목이 검색되는 경우에 일봉차트상이나 파워종목검색에서 편리하게 확인할 수 있는 수식을 알려주세요. 또한 일봉상 종목검색시에 특정기간동안에 발생된 종목을 검색하고자하는 경우 <sDate >= 검색시작일 and sDate <= 검색종료일>라는 수식을 넣어서 하는데 주봉이나 월봉에서 특정기간을 설정해서 검색할려면 어케 해야하나요?
프로필 이미지
해피오
2022-05-10
1013
글번호 158735
검색
답변완료

수식 재문의 드립니다

가르쳐 주신 수식대로 하니까 buy와sell은 전략에서만 사용할 수 있다고 나옵니다. 제가 무지해서 어떻게 해야 할지 모르겠습니다. 초보인 제가 사용할 수 있도록 부탁 드립니다. 문의하신 내용이 31이상 차이가 발생하면 매수나 매도 신호가 발생하는 것이면 아래식 적용하시면 됩니다. 가격이 상승해서 31이상이 되면 매수, 하락해서 차이가 31이상이 되면 매도가 발생하게 작성해 드립니다. var : HH(0),LL(0); if Index == 0 Then { HH = H; LL = L; } Else { if H > HH then { HH = H; if HH > LL+30 Then Buy(); } if L < LL Then { LL = L; if LL < HH-30 Then Sell(); } }
프로필 이미지
진진
2022-05-10
1159
글번호 158728
사용자 함수
답변완료

진입을 하루 한번만 하고 싶어요 도와주세요

Input : Period(12), sigPeriod(9); value1 = TRIX(Period); value2 = ema(value1, sigPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); }
프로필 이미지
최성준
2022-05-10
967
글번호 158727
시스템
답변완료

수식 수정부탁드립니다.

안녕하십니까 아래수식 중 일부 수정 부탁드립니다. input : 금액(10000000),ntime(100000); var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); input : P1(5),P2(20),P3(60),P(20),진입횟수(3),BBP(20),dv(2); input : 진입시작1(91500),진입종료1(110000); input : 진입시작2(130000),진입종료2(153000); var : mav1(0),mav2(0),mav3(0),entry(0),volma(0),Tcond(False),BBup(0); if Bdate != Bdate[1] Then { entry = 0; Condition1 = False; } if TotalTrades > TotalTrades[1] Then Condition1 = False; if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; mav1 = ma(C,P1); mav2 = ma(C,P2); mav3 = ma(C,P3); volma = ma(V,P); BBup = BollBandUp(BBP,dv); Tcond = (sTime >= 진입시작1 and sTime < 진입종료1) or (sTime >= 진입시작2 and sTime < 진입종료2); #오전 09:30~11:00, 오후 1:00~15:30분 사이만 매수 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; } } var1 = ma(v,P1); var2 = ma(v,P2); var3 = ma(v,P3); if MarketPosition == 0 Then { if Tcond == true and entry < 진입횟수 and #당일진입은 3회까지 C > DayOpen and #일봉양봉 mav2 > mav2[1] and (TotalTrades == 0 or (TotalTrades > 0 and CountIf(mav2<mav2[1],BarsSinceExit(1)) >= 1)) and V >= volma[1]*2.0 Then #20거래량 평균 2배이상 거래량 발생 { Condition1 = true; TL_New(sDate,sTime,0,sDate,sTime,9999999); } if Condition1 == true and CrossDown(var1,var3) and var1 < Var2 and mav1 > mav2 and mav2 > mav3 and mav2 > mav2[1] Then Buy("b"); } if MarketPosition == 1 Then #if CrossDown(C,BBup) Then #볼밴상단 하향돌파 #ExitLong("bx2"); ExitLong("bx",AtLimit,상한가); SetStopProfittarget(1.7,PercentStop); SetStopLoss(1.3,PercentStop); SetStopEndofday(151500); #ㅇ 현재 조건 #1. 일봉양봉 #2. 20거래량 평균 2배이상 거래량 발생 #위 조건 만족후 #3. 5거래량 이동평균이 20, 60일 거래량 이동평균을 차례로 하향돌파 #4. 5,20,60일 가격이동 평균선이 정배열 #5. 20일선 가격이동평균선 상승 #ㅇ 수정 요청 사항 #1. 일봉양봉 #2. 5거래량 이동평균이 20, 60일 거래량 이동평균을 차례로 하향돌파 #3. 5,20,60일 가격이동 평균선이 정배열 #4. 20일선 가격이동평균선 상승 잘 부탁 드립니다. 감사합니다.
프로필 이미지
대한이
2022-05-10
875
글번호 158726
시스템