커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

코스피지수 80년부터

볼수 없나요. 그리고 해외지수도 자료양이 부족한데 더 볼수 있는 방법이 있나요.
프로필 이미지
회원
2008-12-25
883
글번호 19009
검색
답변완료

현재봉에서 당일 고저 위치를 표현 해주세요..

NthHighestBar(1,h,DayIndex()+1); NthLowestBar(1,l,DayIndex()+1); 이를 이용하면 현재 봉에서 고가,저가 위치(갯수)를 나타내 주는데요. 예를 들어 현재봉이 당일 10번째 봉이라 하면 당일고점이 2번째,5번째에서 일어났다면,NthHighestBar(1,h,DayIndex()+1) 이 지표값을 쓰면,지표값은 5로 나옵니다. 그런데 예를 들고 이전고점이 같으면 이전 고점 봉수치로 표현하고 싶습니다. 위 지표값을 사용하면 지표값 7로 나타내려고 합니다. 그런데 기본 함수는 현재봉에서 가장 가까운 봉으로 계산에서 봉의 위치를 표현하더라구요. 저는 당일의 고점,저점 들이 같다면,가장 긴 봉값을 원하거든요. 예를 들어 같은 고점,저점 값이면 현재봉에서 가장 멀리 떨어져 있는 위치(봉갯수)를 구현하고 싶습니다. 수정 부탁 드립니다. 메리 크리스마스~~~~~
프로필 이미지
천장지구
2008-12-24
834
글번호 19006
지표

반포동 님에 의해서 삭제되었습니다.

프로필 이미지
반포동
2008-12-24
9
글번호 19002
시스템

반포동 님에 의해서 삭제되었습니다.

프로필 이미지
반포동
2008-12-24
1
글번호 19001
시스템
답변완료

[재질문]종가저장방법 등

수고가 많으십니다. 저의 무지로 질문을 쉽게 못했나 봅니다. (하기 참조) <<재질문1>> array: CloseV[1000](0); for Value1 = 0 to 1000 { CloseV[Value1] = C[Value1]; } 은 현재봉부터 과거 1000까지의 종가값을 각 배열방에 저장하는 식이 맞습니다. 라고 하셨습니다. 그래서 array: CloseV[1000](0); for Value1 = 0 to 2000 { CloseV[Value1] = C[Value1] ; } if index == 0 Then value5=CloseV[0]; Else value5=0; plot1(value5); 위것은 현재 종가를 index개 0인 자리에 plot를 한다고 생각됩니다. 쉽게보기위해 막대그래프로 속성을 주어도 전혀 나타나지가 않습니다. 그래서 index == 100을 설정해 보아도 그렇네요. 말씀대로라면 plot이 되어야 할 것같습니다만 조언을 부탁드립니다. <<재질문2>> index 예약어는 차트상 봉의 갯수를 가져오는 함수입니다. 차트의 첫봉을 0으로 1씩 증가합니다. 그러므로 plot1(index+1); 과 같이 지표를 그리게 되면 마지막 봉값이 2005면 2005라는 수치값을 보실 수 있습니다. 라고 하셨는데.... 저의 질문은 "...인덱스값(예.2005)를 얻을 수 있는 간단한 방법이 있을까요?"였습니다. plot으로 보는 것이 아니구요. 즉 현재봉의 종가 index값을 변수에 저장한 후 활용하기 위함입니다. 부탁합니다. <<질문3>> if index == 563 Then { for value1 = 0 to 10 { if C[Value1]>=C[value1+1] then { value1=C;} Else value1=0; plot1(value1); 위와 같은 if~ // for문 식은 루프내에서 계속 도는 것 같습니다. 30분을 그대로 두어도 못 빠져나오더군요. 그래서 강제종료를 하여 예스트레이더를 종료시킵니다. 강제종료(랭귀지내에서 실행 중 종료키가 없다고 했으므로)하면 거의 챠트저장 파일이 깨져버리거나 심한 경우 다시 예스를 깔아야 합니다. (무서버서 위 식이 그런 식 같은데 질문에 올리기 전에 다시 한번 확인할 수가 없네요ㅜ) if문 다음 for문(0to10이면 부담은 없을 듯 함)을 쓰면 이런 증세(5분간 돌다가 나오는 경우도 있음)가 나오는 이유는 뭔가요? 가능하시면 위식도 한번 테스트 부탁합니다. 인덱스값도 변수로 주고 for문 내도 변수를 주어 만족하면 그 index에 plot을 하고 싶은데 안되네요. 질문이 장황했습니다만 무지하여 몇 일간 밤낮을 씨름해도 아니되어 여쭙니다. (눈도 아프고 스트레스가 이만저만이 아니네요....) 감사합니다. ============================ 안녕하세요 예스스탁입니다. 1. 수식은 시세 수신시에 한번씩 읽어 들어가게 됩니다. 그러므로 해당봉의 종가수신시에 한번 루프를 돌리는 것은 가능하지 않습니다. array: CloseV[1000](0); for Value1 = 0 to 1000 { CloseV[Value1] = C[Value1]; } 은 현재봉부터 과거 1000까지의 종가값을 각 배열방에 저장하는 식이 맞습니다. 다만 0~1000까지는 1001개의 공간이 필요하므로 선언시 array: CloseV[1001](0); 로 선언하거나 for value1 = 0 to 999까지 돌게 작성하셔야 합니다. 2. index 예약어는 차트상 봉의 갯수를 가져오는 함수입니다. 차트의 첫봉을 0으로 1씩 증가합니다. 그러므로 plot1(index+1); 과 같이 지표를 그리게 되면 마지막 봉값이 2005면 2005라는 수치값을 보실 수 있습니다. 일봉으로 5000봉이 안되는 종목의 경우 상장일 이후 부터 현재봉까지 조회됩니다. 즐거운 성탄절 되시길 바랍니다. > CJ_chem44 님이 쓴 글입니다. > 제목 : 종가저장방법 > 수고하십니다. 늘 성실한 답변에 감사드립니다. array: CloseV[1000](0); for Value1 = 0 to 1000 { CloseV[Value1] = C[Value1]; } 목적은 배열변수에 분봉이나 일봉의 종가(현재종가기준하여과거종가저장, 즉, 오늘 종가기준하여 과거 1000봉정도까지 저장)를 저장하고자 한데 잘 안되는 것 같습니다. (이평을 그려보면 매번 각 봉들을 종가로 해서 계산 후 쭉~ 그리지만 오늘 종가를 기준하여 뭔가 한번만 돌리겠다는 것과 비슷한 개념입니다) 또 궁금한 점은 보통 VB에서 사용하는 for문하고 예스랭귀지 밑에서 뭔가 구동하는 로직(C(종가), O(시가)이런것과 함께 사용시)과는 좀 다른 듯 하네요.ㅜ 그리고 새로 상장한 회사의 경우 일봉으로 index가 5000개가 안되는데, 이 때 오늘 종가 기준으로 이 회사의 index가 2005라면 이 2005를 얻을 수 있는 간단한 방법이 있을까요? 감사합니다.
프로필 이미지
회원
2008-12-24
835
글번호 18997
지표
답변완료

이런것도 가능할까요?

수고하십니다. 진입조건과 청산조건이 전혀 다른 특성을 가지고 할때 예를들면 진입조건은 피봇라인을 이용한거고 청산조건은 이평골든데드크로스,또는 목표수익달성이라할때 청산시 이평이 아닌 목표수익 달성으로 청산이 이루어지면 그다음 진입조건인 피봇라인으로 바로 진입하지 않고 정상적인 청산조건인 이평골,데드크로스가 나온후에 진입조건인 피봇으로 진입하게 할수 있을까요? 목표수익 달성으로 청산되면 아직 정상적인 청산조건(피봇라인)이 나오지 않았는데도 신규진입(이평)이 또 나와서 질문드립니다.
프로필 이미지
저은아빠
2008-12-24
808
글번호 18996
시스템
답변완료

수식 가능한가요?

수고 많으십니다. 차트는 일봉차트하나 분봉차트 4개(서로다른 기간으로 설정)로 해서 봅니다. 총 5개차트 문의드리고 싶은것은... 진입시점에 서로다른 기간의 스토캐스틱 지표값을 체크해야 하는데 가능한지요. 가령 1분차트로 진입한다고 하면 진입시점에 일봉, 나머지 분봉차트들에 설정된 스토캐스틱 지표방향을 읽어서 조건으로 설정을 해야 하거든요. 1분차트에 서로 다른 기간의 차트의 지표나 봉들을 표현하고 수식을 작성 하는건가요? 가능하다면 간략하게 수식 부탁 드리겠습니다.
프로필 이미지
sksore
2008-12-24
952
글번호 18994
지표
답변완료

매수조건 관련 주문

밑에 제가 글쓴거 답변이 좀 모호해서요^^;; var : cnt(0),count(0), value(0); setstopendofday(1500); setstoptrailing(0.4,1.3,pointstop); count = 0; for cnt = 0 to 10{ if sdate == EntryDate(cnt) Then count = count+1; } ##당일 첫진입 if MarketPosition() == 0 and count == 0 Then{ if stime >=093000 and ma(C,4) > ma(C,20) then buy("b"); if stime >=093000 and ma(C,4) < ma(C,20) then sell("s"); } ##청산 if MarketPosition() != 0 Then{ if stime >=093000 and ma(C,4) > ma(C,20) then ExitShort(); if stime >=093000 and ma(C,4) < ma(C,20) then exitlong(); } ##당일 첫진입 이후 if MarketPosition() == 0 and count >= 1 Then{ if BarsSinceExit(1) == 2 and MarketPosition(1) == -1 then buy("b1"); if BarsSinceExit(1) == 2 and MarketPosition(1) == 1 then sell("s1"); } 수정해주신식입니다 트레일스탑을 안넣은경우 매수/매도 조건 미완성시 주문이 안나갑니다 첫번째화면 그러나 트레일링스탑을 넣은경우 매수/매도 조건 미완성시에도 주문이 나갑니다 두번째화면 4일이평 20일이평 골든 매수 데드 매도 이식인데요 두번째 화면에서 4일선이 20일선 아래 있는데도 b1 매수 주문이 나갑니다 허나 고쳐준 식에서도 이건 안고쳐져서요^^;; 모가 문제일까요?^^;;; 바쁘신데 답변 주셔서 감사합니다~^^
프로필 이미지
반포동
2008-12-24
827
글번호 18989
시스템
답변완료

시스템식 질문입니다

일딴 메리크리스마스요 ㅋ 시스템식 질문입니다 간단하게 단기 5 20 크로스에서 macd가 0선위에 있다는 and를 붙여서 해봤습니다 그런데 for문이나 while문을 써서 먼저 5 20 평선 크로스와 좀 늦게 발생 혹은 그전에 발생한 macd 0선값을 필터링 할려면 식을 어떤식으로 짜야되나요? for문 while문의 예제좀 부탁드립니다.
프로필 이미지
부산사나이
2008-12-24
887
글번호 18988
시스템