커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

시스템식 문의 드립니다

복합 1분 차트에서 시가 매수,시가+4.0매도 시가 매도,시가-4.0매수 감사합니다
프로필 이미지
회원
2015-09-02
165
글번호 89988
시스템
답변완료

질문 드립니다

오늘도 수고 많으십니다. 이평선 골든 크로스 데드크로스 시에 최저점 과 최고점을 알려합니다. 예를 들어 5일선이 10일선을 골든 크로스 하면 골든 크로스 時 최저점을 표시 하고 데드크로스 時 최고점을 표시 하는 수식입니다. 수식 부탁 드리면서 오늘도 좋은 하루 되세요.
프로필 이미지
루키11
2015-09-02
126
글번호 89987
지표
답변완료

질문 드립니다

오늘도 수고 많으십니다. 이평선 골든 크로스 데드크로스 시에 최저점 과 최고점을 알려합니다. 예를 들어 5일선이 10일선을 골든 크로스 하면 골든 크로스 時 최저점을 표시 하고 데드크로스 時 최고점을 표시 하는 수식입니다. 수식 부탁 드리면서 오늘도 좋은 하루 되세요.
프로필 이미지
루키11
2015-09-02
117
글번호 89986
지표

9회말2아웃 님에 의해서 삭제되었습니다.

프로필 이미지
9회말2아웃
2015-09-02
7
글번호 89983
지표

싱글 님에 의해서 삭제되었습니다.

프로필 이미지
싱글
2015-09-02
13
글번호 89982
시스템
답변완료

지표와 검색식가 불일치합니다.

아래는 지표와 검색식입니다. 조건을 만들어 지표를 만들고 그 지표가 0선 돌파, 반전하는 종목 검색식입니다. 그런데 검색 결과를 차트로 확인해보면 그렇지가 않습니다. 왜 그럴까요. 무언가 착각이 있나요? 그림 첨부합니다. input : sto1(5),sto2(3),Period1(7),Period2(7),VV(7); var : K(0),S(0),T(0); K=(StochasticsK(sto1,sto2)+MFI(Period1)+RSI(Period2))/3; S = ema(K,VV); T= S[0]-S[1]; plot1(T); input : sto1(5),sto2(3),Period1(7),Period2(7),VV(7); var : K(0),S(0),T(0); K=(StochasticsK(sto1,sto2)+MFI(Period1)+RSI(Period2))/3; S = ema(K,VV); T= S[0]-S[1]; if crossup(T,0) Then find(1); input : sto1(5),sto2(3),Period1(7),Period2(7),VV(7); var : K(0),S(0),T(0); K=(StochasticsK(sto1,sto2)+MFI(Period1)+RSI(Period2))/3; S = ema(K,VV); T= S[0]-S[1]; if T > T[1] and T[1] < T[2] Then find(1);
프로필 이미지
이평
2015-09-02
127
글번호 89981
종목검색
답변완료

부탁 드립니다.

아래수식을 해선 영업시간(07:00~익일06:00)으로 지표가 표시 되도록 부탁 드립니다. 미리 감사 드립니다. 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");
프로필 이미지
yes
2015-09-02
190
글번호 89977
지표
답변완료

키움수식 변경 좀 부탁드리니다

수식1 A=MACD(short,long); B=wavg(MACD(short,long),signal); if(A>B,A,B) 수식2 if(A<B,A,B) 수식3 B
프로필 이미지
장군777
2015-09-02
228
글번호 89976
지표
답변완료

질문 드립니다.

항상 정확한 답변 감사합니다. 1. 함수 NthHighestBar는 'Length 기간 동안 value값 중 N번째 큰 값의 위치'로 알고 있는데요, 1번째로 큰 값 위치를 원하는데 기간 중 그 값이 2번 이상 존재하는 경우(최고가 같은 쌍봉 등) 어떻게 되나요? 현시점에서 제일 가까운 값이 할당되나요? 2. 예스스팟 질문입니다. 1계약 수준의 증거금만으로 운용하려 할 때입니다. 포지션이 있는 상태에서 반대 포지션의 신호가 날때 청산-신규진입을 시장가로 하면 포지션 전환이 될 수 있을 텐데요, 그러면 '청산주문-증거금확인-증거금있으면-신규주문'의 방식으로 수식을 짜면 되는 건가요? 아니면 시장가는 0.001초 내에 즉시 체결되므로 '청산주문-신규주문'으로 중간을 생략해도 가능한가요? 3. 랭귀지 시스템에서 발생한 신호를 이벤트로 받아 주문 내는 걸 가정했을때 2번 '주문 파트'에 대해서만 수식을 부탁드려도 될까요.
프로필 이미지
로봇짱
2015-09-02
150
글번호 89975
시스템