커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 문의 드립니다.

input:renkoSize(0.5),p1(12),p2(26),p3(9); var:j(0),k(0),renkoCnt(0),gubun(0),filename("renko2.txt"),printOK(False), sum(0),ema1_OK(false),ema2_OK(false),sig_OK(False); array:OO[50](0),HH[50](0),LL[50](0),CC[50](0),ma1[50](0),ma2[50](0), ema1[50](0),ema2[50](0),macdVal[50](0),macdSig[50](0); If DayIndex == 0 Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산 gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산 For j = 49 DownTo 1 { //금일 시가봉을 신규 추가 OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; ema1[j] = ema1[j-1]; ema2[j] = ema2[j-1]; macdVal[j] = macdVal[j-1]; macdSig[j] = macdSig[j-1]; } OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다 HH[0] = C; LL[0] = C; CC[0] = C; } Else { If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점 If OO[0] - renkoSize >= C Then { gubun = -1; CC[0] = OO[0] - renkoSize; HH[0] = OO[0]; LL[0] = CC[0]; //지수이평을 계산할 수 있을 만큼 렌코가 만들어진 이후 계산 시작 if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1]; if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1]; if ema2_OK then macdVal[0] = ema1[0] - ema2[0]; if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1]; j = 0; if printOK then print(filename, "1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } Else If OO[0] + renkoSize <= C Then { gubun = 1; CC[0] = OO[0] + renkoSize; HH[0] = CC[0]; LL[0] = OO[0]; if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1]; if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1]; if ema2_OK then macdVal[0] = ema1[0] - ema2[0]; if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1]; j = 0; if printOK then print(filename, "2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } If LL[0] - renkoSize >= C Then { gubun = -1; renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; if ema1_OK then ema1[j] = ema1[j-renkoCnt]; if ema2_OK then ema2[j] = ema2[j-renkoCnt]; if ema2_OK then macdVal[j] = macdVal[j-renkoCnt]; if sig_OK then macdSig[j] = macdSig[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = LL[j+1]; CC[j] = LL[j+1] - renkoSize; HH[j] = OO[j]; LL[j] = CC[j]; if ema1_OK then ema1[j] = (CC[j]-ema1[j+1])*(2/(p1+1))+ema1[j+1]; if ema2_OK then ema2[j] = (CC[j]-ema2[j+1])*(2/(p2+1))+ema2[j+1]; if ema2_OK then macdVal[j] = ema1[j] - ema2[j]; if sig_OK then macdSig[j] = (macdVal[j] - macdSig[j+1])*(2/(P3+1))+macdSig[j+1]; if printOK then print(filename, "3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If HH[0] + renkoSize <= C Then { gubun = 1; renkoCnt = Int(Round((C-HH[0])/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; ema1[j] = ema1[j-renkoCnt]; ema2[j] = ema2[j-renkoCnt]; macdVal[j] = macdVal[j-renkoCnt]; macdSig[j] = macdSig[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = HH[j+1]; CC[j] = HH[j+1] + renkoSize; HH[j] = CC[j]; LL[j] = OO[j]; if ema1_OK then ema1[j] = (CC[j]-ema1[j+1])*(2/(p1+1))+ema1[j+1]; if ema2_OK then ema2[j] = (CC[j]-ema2[j+1])*(2/(p2+1))+ema2[j+1]; if ema2_OK then macdVal[j] = ema1[j] - ema2[j]; if sig_OK then macdSig[j] = (macdVal[j] - macdSig[j+1])*(2/(P3+1))+macdSig[j+1]; if printOK then print(filename, "4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If Time >= 151500 Then { //당일 종가봉에서 For j = 49 DownTo 1 { OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; ema1[j] = ema1[j-1]; ema2[j] = ema2[j-1]; macdVal[j] = macdVal[j-1]; macdSig[j] = macdSig[j-1]; } If LL[1] > C Then { //종가가 이전 봉보다 아래 형성 OO[0] = LL[1]; CC[0] = C; HH[0] = OO[0]; LL[0] = CC[0]; } Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성 OO[0] = HH[1]; CC[0] = C; HH[0] = CC[0]; LL[0] = OO[0]; } Else { //종가가 이전 봉의 중간에 형성 OO[0] = C; CC[0] = C; HH[0] = C; LL[0] = C; } if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1]; if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1]; if ema2_OK then macdVal[0] = ema1[0] - ema2[0]; if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1]; j = 0; //마지막 1봉만 출력 if printOK then print(filename, "5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } if ema1_OK == False and CC[p1] > 0 then { //지수이평 계산 가능할 때까지 대기 sum = 0; for j = 0 to p1 - 1 { sum = sum + CC[j]; } ema1[0] = sum/p1; //처음 값은 단순이평값으로 ema1_OK = True; //다음 봉부터 지수이평 계산되도록 설정 } if ema2_OK == False and CC[p2] > 0 then { sum = 0; for j = 0 to p2 - 1 { sum = sum + CC[j]; } ema2[0] = sum/p2; ema2_OK = True; } if sig_OK == False and CC[P2+p3] > 0 then { sum = 0; for j = 0 to p3 - 1 { sum = sum + macdVal[j]; } macdSig[0] = sum/p3; sig_OK = True; } Plot1(macdVal[0],"macd"); Plot2(macdSig[0],"macd signal"); _____________________________________________________________________________________ 위 수식은 수식지왕이라는 분이 만드신 렌코차트와 MACD를 더한 지표라고 합니다. 크로스업 또는 크로스다운되면 진입되는 수식 좀 부탁드립니다...자꾸 오류가 되더군요.
프로필 이미지
고릴라
2013-12-01
227
글번호 69995
시스템
답변완료

익절컷 추가 질문

익절 청산된후 반대신호가 나올때 까지는 진입을 안했으면 합니다.^^; > 안녕하세요 예스스탁입니다. Input : Period(20); var : value1(0); value1 = ma(C, Period); If sTime > 090000 and sTime <= 150000 Then { If crossup(C,Value1) Then Buy(); If CrossDown(C,Value1) Then Sell(); } If sTime == 150300 Then { ExitLong(); ExitShort(); } SetStopProfittarget(PriceScale*20,PointStop); SetStoploss(PriceScale*20,PointStop); 즐거운 하루되세요 > 기심필득 님이 쓴 글입니다. > 제목 : 간단한 익절컷 문의 > 고생이 많으십니다. 아주 쉬운식인데 기 작성된 글을 보고 넣어 보아도 잘 이해가 되지않아 다시 질문 드립니다. 아래식에서 수익이 20틱 손실이 20틱 나면 조건 만족시 청산되도록 하고 싶습니다. 청산된 후 다음 신호시 까지는 진입이 되지 않아야 합니다. 감사합니다. Input : Period(20); var : value1(0); value1 = ma(C, Period); If sTime > 090000 and sTime <= 150000 Then { If C > Value1 Then Buy(); If C < Value1 Then Sell(); } If sTime == 150300 Then { ExitLong(); ExitShort(); }
프로필 이미지
기심필득
2013-12-01
206
글번호 69994
시스템
답변완료

문의드립니다...

아래식을 검증하는데 오류가 떠서 작동이 안됩니다... 선언되지 않은 EntriesToday가 사용되어서 그렇다는데...잘 모르겠습니다 --------------------------------------------- Input: ProfitPt(5), TrailBar(30), entryCount(1), P1(40), P2(160), P3(110); Vars: Pivot(0), Support1(0), Support2(0), Support3(0), Resistance1(0), Resistance2(0), Resistance3(0), BearMarket(false) , BullMarket(false); // Calculation of Pivot, support and resistance points Pivot = ( dayLow(1) + dayHIgh(1) + dayClose(1) ) / 3; Resistance1 = ( Pivot * 2 ) - dayLow(1); Resistance2 = Pivot + (dayhigh(1)-dayLow(1)); Resistance3 = Resistance1 + (dayhigh(1)-dayLow(1)); Support1 = ( Pivot * 2 ) - dayHIgh(1); Support2 = Pivot - (dayhigh(1)-dayLow(1)); Support3 = Support1 - (dayhigh(1)-dayLow(1)); // Determination of market character BullMarket = ma( Close , P1 ) > ma( Close , P2 ) AND ma( Close , P2 ) > ma( Close , P3 ); BearMarket = ma( Close , P1 ) < ma( Close , P2 ) AND ma( Close , P2 ) < ma( Close , P3 ); // Placement of long orders if EntriesToday(date) < entryCount then begin If BullMarket then Begin Buy ("Bull R2", atstop,Resistance2 ) ; Buy ("Bull R3", atstop, Resistance3) ; end; // Placement of short orders If bearmarket then begin Sell ("Bear S2", atstop, Support2) ; Sell ("Bear S3", atstop, Support3) ; end; end; // Exit at first Profitable Open If MarketPosition == 1 and NextBarOpen > EntryPrice + ProfitPt then ExitLong ("Long Profit", AtMarket); If MarketPosition == -1 and NextBarOpen < EntryPrice - ProfitPt then ExitShort ("Short Profit", AtMarket) ; // Exit with trailing stops ExitLong("EL", atstop,Lowest( Low , TrailBar )) ; ExitShort("ES", atstop, Highest( High , TrailBar )) ; SetStopEndofday(150000);
프로필 이미지
머니사이언스
2013-11-30
303
글번호 69993
시스템
답변완료

수식문의

안녕하세요~ 예스 트레이더 초보 사용자입니다. 검색을 해보아도..적당한게 없기에 문의드립니다. 1. 10분 이내에.. 2프로 이상의 급락이 있었고.. 2. 큰 매수 물량이 들어왔고.. (1만주 등등 설정 가능) 3. 매도호가 10 이내에.. 큰 매도 물량(3만주 이상등 설정 가능)이 있는 경우 (이건 예스스팟에 있는거 같습니다만.. 예스랭귀지로도 가능한지 모르겠습니다. ) 매수 와 같이 해보고 싶습니다. 수식 가능한지? 가능하면..예제 부탁드립니다. 감사합니다.
프로필 이미지
빛똥
2013-11-30
204
글번호 69992
시스템
답변완료

종목코드표좀 부탁드립니다.

종목코드표를 목록으로라도 올려 주시면 좋겠습니다 또한 수식에서 input : 이름('종목코드')를 넣으면 차트에 라인과 가격변화가 표시될 수 있었으면 참 좋겠습니다
프로필 이미지
금강조호
2013-11-30
221
글번호 69991
검색
답변완료

수식문의

안녕하세요 친절한답변에 감사드립니다 아래식에서 당일거래중 0.8포인트 수익나거나 또는 1포인트 손실일때 바로거래중지 되게해주시고 , 또다른식은 당일50만원 수익이거나 60만원 손실일때 바로 거래정지 되게부탁드립니다 감사합니다 If stime < 150000 Then{ if stime >= 090000 then{ If MarketPosition==0 then{ buy("매수",Atstop,DayOpen+0.8); sell("매도",Atstop,DayOpen-0.8); } if MarketPosition == -1 Then buy("역매수",Atstop,lowest(low,BarsSinceEntry+1)+0.9); if MarketPosition == 1 Then sell("역매도",Atstop,highest(high,BarsSinceEntry+1)-0.9); } }
프로필 이미지
민선생1
2013-11-30
181
글번호 69990
시스템
답변완료

시스템식

시스템식 부탁합니다. 1. 매수:오픈닝 시장가 매수 매도:클로징 시장가 매도 2. 매수: 오픈닝 시가에서 0.15% 가격이 오르면 매수 매도: 클로징 시장가 매도
프로필 이미지
erwe343
2013-12-01
200
글번호 69989
시스템

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2013-11-30
1
글번호 69988
시스템
답변완료

아래 식의 차이점이 무엇인지 궁금합니다.

두 식의 결과가 다르게 나옵니다. 어떤 차이가 있는지 궁금합니다. 감사합니다. ^^ 식1)--------------------------------------- If MarketPosition == 0 Then Begin If CrossUp(Close,DayOpen+0.5) Then Buy("매수",AtStop,DayOpen+0.5); End; 식2)---------------------------------------- If MarketPosition == 0 Then Buy("매수",AtStop,DayOpen+0.5);
프로필 이미지
다니엘87
2013-11-30
208
글번호 69987
시스템