커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

30분 고저 기준 사용자 함수 요청입니다.

수고하십니다. 30분 기준의 하기의 고저점을 사용자 함수로 만들어 검색 및 타주기 지표로 사용하고자 합니다. HLRate, M20Rate 값을 가져 올수 있게 하고싶습니다. 부탁드립니다. var : HH(0),LL(0),Sma5(0),Rbar(0),RC(0),HLRate(0),M20Rate(0); Sma5 = ma(c,5);#5이평 #이평 하락반전일때 HH를 고점으로 저장 if Sma5 < Sma5[1] and Sma5[1] > Sma5[2] Then{ HH = Highest(C,5); } #이평 상승반전일때 LL를 저점으로 저장 if Sma5 > Sma5[1] and Sma5[1] < Sma5[2] Then{ LL = Highest(C,5); } HLRate = (1-(Highest(HH,40)/Lowest(LL,40)))*100; M20Rate = ((1-(H/Ma(C,20)))*2.2)*100; Plot4(HLRate,"고저기준"); Plot5(M20Rate,"Ma20기준 고가");
프로필 이미지
큰상
2017-07-04
177
글번호 110969
사용자 함수
답변완료

5392 재문의

빠르고 친절한 답변 감사합니다. 보유 수량의 청산 관련 문의 입니다. 자동 매수 조건을 단계별로 설정해 놓은 경우 일부 매수 조건을 충족시키지 못하여 일부 수량만 확보하는 경우가 있는데 이런 경우 단계별로 매도를 하는 수식 좀 부탁드립니다. 예를 들어 현재 보유 수량이 n개일 경우 1/2 은 5일 이평선이 20일 이평선을 붕괴하는 경우 청산하고 나머지 1/2은 5일 이평선이 60일 이평선을 붕괴하는 경우 청산하고자 합니다.
프로필 이미지
alexton
2017-07-04
169
글번호 110968
시스템
답변완료

종목 검색식 좀 다시 부탁드립니다

참조 그림 추가합니다! 제 챠트는 이동 평균선 13, 65일 / MACD (12,26,9) (60, 130, 45) (13,12,26,9) 이렇게 설치되어 있습니다. 모두가 임펄스 시스템에 맞주어져 있습니다. 그래서 검색식도 임펄스 시스템에 맞추고 싶습니다. 첨부그림에서 처럼 파랑색 동그라미가 일치하는 조건에 맞는 종목을 검색하고 싶습니다. 파랑 동그라미는 = 이평선 13선 이 65선을 처음 돌파하기 시작이며 / MACD 오실레이터 3가지 (12,26,9) (60, 130, 45) (13,12,26,9) 가 모두 0선 위로 올라서기 시작하는 순간입니다. 특히 MACD 오실레이터 2가지 (12,26,9) (60, 130, 45) 가 꼭 0선 위에서 동시에 시그널이 시작하는 순간을 좋아합니다. 위 조건에 부합하는 종목을 일봉, 주봉, 15분봉에서 뽑고 싶습니다. 부탁드립니다.
프로필 이미지
qha71
2017-07-04
337
글번호 110967
검색
답변완료

질문드립니다.

If Condition2 and MRO(Condition2,3,2) == -1 Then 이라는 조건이 있습니다. 위조건을 3번 만족하면 plotpaintbar red를띄울려면 로직을 어떻게 써야 할까요?
프로필 이미지
stockric
2017-07-03
201
글번호 110966
강조
답변완료

질문드립니다.

밑의 질문과 구분이 어려울 수 있어 따로올립니다. 작성자님이 올려준 로직대로 해보았는데요. Condition2 = (Close+PriceScale*2); If p < P[5] Then If Condition2 and MRO(Condition2,3,2)= = -1 Then{ If Close < h range value Then If Close > l range value Then If MarketPosition = = 0 Then Sell("중돌매도");} if MarketPosition = = -1 then{ If Close < l range value Then ExitShort(); if CountIF(CrossDown(c,m3),BarsSinceEntry) >= 1 and CrossUp(C,m3) Then // H1 ExitShort("h1청산",OnClose,EntryPrice); if CountIF(CrossDown(c,r1+m3/2),BarsSinceEntry) >= 1 and CrossUp(C,r1+m3/2) Then // H2 ExitShort("h2청산",OnClose,EntryPrice); if CountIF(CrossDown(c,r1),BarsSinceEntry) >= 1 and CrossUp(C,r1) Then // H3 ExitShort("h3short",OnClose,EntryPrice); SetStopLoss(12*PriceScale); If sTime== 050000 or(sTime > 050000 and 050000 < sTime) Then{ ExitLong(); ExitShort();} } if marketposition == 0 then 조건을 주어도 바로 청산이되네요. 그리고 매수에 stoploss로 12틱을 걸었는데 청산지점이 희한한 곳에서 됩니다. 2.각 라인에서 crossup과 crossdown이 같이 일어나는 에러가 나는걸까요. 전혀 그럴일은 barssinceentry때문에 그럴일은 없는데 말이지요.. 3. condition1~ then 매도로 12틱 손절하였는데 손절한 캔들 바로 한 캔들 전이 매수신호 였다면 현재캔들에서 추격매수 이건 로직으로 할려면 어떻게 해야할까요? 총 첨부하겠습니다. 늘 노고에 감사드립니다.
프로필 이미지
stockric
2017-07-03
225
글번호 110965
시스템
답변완료

지표값 문의 드립니다

해외 선물에서 문의드립니다 크루드오일 같은 경우는 ,우리나라 시장과는 거래시간이 다른데요,,, 지표값의 전일 고가,저가,시가,종가를 나타내려면 어떻게 해야 하나요? 전일이란 개념이 우리나라 시간으로 맞춰서 본다고 가정하면, 아침 7시에 시작해서 다음날 아침 6시 정도에 끝나는 것 같던데, 이런 경우에는 어떻게 해야하는지 알려주시면 감사하겠습니다,,
프로필 이미지
클레멘타인
2017-07-03
212
글번호 110964
지표
답변완료

질문드립니다.

var : WH(0),WL(0),Dcnt(0); #영업일 기준으로 한주의 시작 if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then{ WH = H;#주간 최고가를 저장할 변수(초기값 해당봉고가) WL = L;#주간 최저가를 저장할 변수(초기값 해당봉저가) Dcnt = 0; #주간 날짜수를 저장할 변수(초기값0) } #영업일이 변경되면 1씩 증가 if bdate != bdate[1] Then Dcnt = Dcnt+1; #WH에 저장된 값보다 큰 고가가 발생하면 WH에 값을 현재봉 고가로 변경 if H > WH Then WH = H; #WL에 저장된 값보다 작은 저가가 발생하면 WL에 값을 현재봉 저가로 변경 if L < WL Then WL = L; #주간 첫날이면 if Dcnt == 1 then{ var1 = max(WH,dayhigh(1)); var2 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.236)+log10(max(WH,dayhigh(1)))); var3 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.382)+log10(max(WH,dayhigh(1)))); var4 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.500)+log10(max(WH,dayhigh(1)))); var5 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.618)+log10(max(WH,dayhigh(1)))); var6 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.764)+log10(max(WH,dayhigh(1)))); var7 = min(WL,daylow(1)); } else{#두번째 날부터 var1 = WH; var2 = 10^(((log10(WH)-log10(WL))*-0.236)+log10(WH)); var3 = 10^(((log10(WH)-log10(WL))*-0.382)+log10(WH)); var4 = 10^(((log10(WH)-log10(WL))*-0.500)+log10(WH)); var5 = 10^(((log10(WH)-log10(WL))*-0.618)+log10(WH)); var6 = 10^(((log10(WH)-log10(WL))*-0.764)+log10(WH)); var7 = WL; } If DayOpen > Close Then Sell(); if MarketPosition == -1 then{ if countif(CrossDown(c,var3),BarsSinceEntry) >= 1 and crossup(C,var3) Then ExitShort(); if countif(CrossDown(c,var4),BarsSinceEntry) >= 1 and crossup(C,var4) Then ExitShort(); if countif(CrossDown(c,var5),BarsSinceEntry) >= 1 and crossup(C,var5) Then ExitShort(); if CrossDown(c,var6) Then ExitShort(); if stime == 050000 or (stime > 050000 and stime< 050000) then{ exitlong(); exitshort();} SetStopLoss(12*PriceScale); } 올려주신 수식인데요. 당일청산 넣고 했습니다. 근데 사진을 보시면 청산과 진입이 동시에 되고있습니다. barssinceEntry로 경과봉수를 count하지만 crossdown과 crossup이 같이 일어날 수 없고 동시에 신호가 나오면 신호가 나오는즉슨 팔 수 밖에 없지않나요? 실제로 봉갯수를 보면 0개에 진입과 청산이 되고있음을 볼 수 있습니다. 2. 매도시그널이 12틱에 온전히 안되는 이유가 무엇인지요? 3. 사진과 같이 종가가 var선 어디서 시작할지 모르는데 저렇게 쭉 나열해놓으면 종가가 어디에 위치하든 위치하는 시점부터 (위에선을 배제한체) 라인을 구분하여 진입하여 청산하는건가요? 거기서 에러가뜨면 동시 진입, 청산이 이루어지지 않을까 싶은데요.
프로필 이미지
stockric
2017-07-03
250
글번호 110963
지표
답변완료

문의드립니다.

오전 8시 시작..새벽4시30분 거래완전종료 1시간 30분에 안에 있는 캔들중에 고가돌파할때 거래량 전거래량보다200프로 넘을때를 확인하고 전캔들보다 낮을때 매수.. 1시간 30분에 안에 있는 캔들중에 저가돌파할때 거래량 전거래량보다200프로 넘을때를 확인하고 전캔들보다 높을때 매도. 부탁드립니다.수고하세요.
프로필 이미지
아침한때비51
2017-07-03
171
글번호 110962
시스템
답변완료

부탁드립니다.

53888번의 답변수식에 대한 추가 질문 입니다. 현재시점에서 100봉간 최고가와 최저가를 기준으로 과거 100봉전 부터 현재까지 수평으로 그린 아래수식을 예를 들어 과거 260봉전에서 과거100봉전 사이의 (160봉간의 최고가와 최저가를 기준) 수평선을 그사이에 해당하는 과거 160봉간에 긋고 십습니다. 53888답변수식) input : N(100); var : a5(0),b5(0),k5(0); var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),TL8(0),TL9(0); a5 = highest(H,N); b5 = lowest(L,N); k5 = a5-b5; TL_Delete(TL1); TL1 = TL_New(sdate[n-1],stime[n-1],a5,sdate,stime,a5); TL_SetColor(TL1,RED); TL_Delete(TL2); TL2 = TL_New(sdate[n-1],stime[n-1],(k5*0.882+b5),sdate,stime,(k5*0.882+b5)); TL_SetColor(TL2,RED); TL_Delete(TL3); TL3 = TL_New(sdate[n-1],stime[n-1],(k5*0.764+b5),sdate,stime,(k5*0.764+b5)); TL_SetColor(TL3,YELLOW); TL_Delete(TL4); TL4 = TL_New(sdate[n-1],stime[n-1],(k5*0.618+b5),sdate,stime,(k5*0.618+b5)); TL_SetColor(TL4,BLUE); TL_Delete(TL5); TL5 = TL_New(sdate[n-1],stime[n-1],(k5*0.5+b5),sdate,stime,(k5*0.5+b5)); TL_SetColor(TL5,MAGENTA); TL_Delete(TL6); TL6 = TL_New(sdate[n-1],stime[n-1],(k5*0.382+b5),sdate,stime,(k5*0.382+b5)); TL_SetColor(TL6,GREEN); TL_Delete(TL7); TL7 = TL_New(sdate[n-1],stime[n-1],(k5*0.236+b5),sdate,stime,(k5*0.236+b5)); TL_SetColor(TL7,WHITE); TL_Delete(TL8); TL8 = TL_New(sdate[n-1],stime[n-1],(k5*0.118+b5),sdate,stime,(k5*0.118+b5)); TL_SetColor(TL8,BLACK); TL_Delete(TL9); TL9 = TL_New(sdate[n-1],stime[n-1],b5,sdate,stime,b5); TL_SetColor(TL9,black); 작성에 참고가 될만한 수식) input : n1(10),n2(10); var : HH(0),LL(0),CC(0),Pivot(0),Tcond(false),cnt(0),TL(0); HH = H[n1]; LL = L[n1]; for cnt = n1 to (n1+n2)-1{ if H[cnt] > HH Then HH = H[cnt]; if L[cnt] < LL Then LL = L[cnt]; }
프로필 이미지
yes
2017-07-03
194
글번호 110961
지표