커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8207
글번호 230811
답변완료
부탁드립니다.
현물 1분봉 입니다.
<매수조건>
-전일 종가가 5일선(일봉) 이격도 108 이상이고
-오늘 매수가 한 번이라도 되었다면, 익일부터 매수 금지(모두 청산된 후에 매수 가능)
-오늘 청산이 한 번이라도 되었다면, 오늘 중에는 매수 금지
<매수>
-5일(일봉) 이격도 105.5미만~104이상이면 오늘 1번만 매수
-5일(일봉) 이격도 104미만~102.5이상이면 오늘 1번만 매수
-5일(일봉) 이격도 102.5미만~101이상이면 오늘 1번만 매수
-20일(일봉) 이격도 106미만~104이상이면 오늘 1번만 매수
-20일(일봉) 이격도 104미만~102이상이면 오늘 1번만 매수
-20일(일봉) 이격도 102미만~100이상이면 오늘 1번만 매수
<매수 당일 청산>
-평균매수가 대비 5% 상승시 청산
<매수 +1일 청산>
-평균 매수가 대비 7% 상승시 청산
-당일 저가대비 10% 상승시 청산
<매수 +2일 청산>
-평균 매수가 대비 8% 상승시 청산
-당일 저가대비 10% 상승시 청산
<매수 +3일 청산>
-평균 매수가 대비 9% 상승시 청산
-당일 저가대비 10% 상승시 청산
<매수 +4일 청산>
-평균 매수가 대비 10% 상승시 청산
-당일 저가대비 10% 상승시 청산
-09:45시에 청산
2014-01-07
194
글번호 71143
답변완료
시스템식 문의드립니다.
안녕하세요 ^^
질문있습니다.
질문이 두개입니다.
1. 시스템 매매 하다가 한번이라도 손절시 매수 금지 식 만들어 주실수있으세요?
예) 1000원 수익 중 한번이라도 손절매도 한다면
2. 시스템 매매 하다가 매매 중 예) 500 원 수익중 -600 손실로 원래 자신의 원금 손실시 매수 금지
2014-01-07
192
글번호 71141
답변완료
안녕하세요
반갑습니다.늑대소년이되엇습니다
아래식은 전번에 만들어진것입니다
이걸현재챠트로
1)현재챠트 2)2배수챠트 3)4배수챠트
3개동시만족시:매수
반대면:매도
감사합니다
var1 = C-O;#몸통크기
value1 = accumn(var1,2);
value2 = accumn(var1,3);
var77 = BarInterval*36;
var78 = TimeToMinutes(stime)%var77;
if dayindex ==0 or ( var78 < var78[1] and stime > stime[1]) Then{
var79 = O;#두배수 분봉 시가
}
Buy();
if C < var79 and
value1 < 0 and value2 < 0 and
if C > var79 and
value1 > 0 and value2 > 0 and
ma(c,1) > ma(c,2) Then
ma(c,1) < ma(c,2) Then
Sell();
2014-01-07
192
글번호 71136
답변완료
강조식 부탁합니다.
한봉의 길이가 0.50 이상인 경우 강조식 좀 만들어 주십시오.
음봉과 양봉의 색상을 달리 할 수 있도록 부탁 드립니다.
2014-01-07
190
글번호 71135
답변완료
문의드립니다.
선물 2분봉 기준
1.
9시 30분 기준 개인 코스피 순매수, 선물 순매수 일경우
볼린져밴드(12,2) 상단에 시장가로 매도 진입 종가청산
9시 30분 기준 개인 코스피 순매도, 선물 순매도 일경우
볼린져밴드(12,2) 하단에 시장가로 매수 진입 종가청산
손절은 진입가 대비 10틱
2.
9시 30분 기준 개인 코스피 순매수, 선물 순매도 혹은 코스피 순매도, 선물 순매수일때
볼린져밴드(12.2)의 상하단선에 먼저 닿는 쪽에서 시장가로 매수, 매도 진입(상단에 먼저 닿으면 매도 진입, 하단에 먼저 닿으면 매수진입) 반대쪽 밴드에 닿을때 청산 및 스위칭
14시 50분 청산 및 거래 중지
손절은 5틱
2014-01-07
196
글번호 71134
답변완료
수식 문의 드립니다.
안녕하세요? 수식을 문의 드립니다.
일봉 차트입니다. 다음 글들을 수식으로 표현하고 싶습니다.
1) 현재봉은 '그 달의 마지막 거래 일봉'으로부터 10봉 이내에 있다.
2) 현재봉은 '그 달의 첫 거래 일봉'으로부터 3봉이내에 있다.
3) 현재봉의 전환선은 '그 달의 전환선 값' 중에서 최저값이다.
4) 현재봉의 종가는 '그 달의 최고 종가'의 95%보다 작다.
5) 1봉전 봉의 종가는 '그 달의 종가' 중에서 최저값이다.
6) 현재봉의 전환선은 '현재봉부터 19봉전봉까지'에서 최저값이다.
감사합니다. 건승하세요.
-----------------------
2014-01-07
199
글번호 71133
답변완료
문의 드립니다
안녕하세요 먼저 감사인사 드립니다. ^^ 다름이 아니오라 이번에 필요한 지표양식문의드립니다.
1. 옵션행사가별 미결제 약정수량에서 현재가격을 적용한 미결제 약정대금을 알고싶은데
요
가능할런지요.?
각각 행사가 마다 틀리니. 지정한 행사가격의 미결제 수량은 나오니. 그수량에대한
금액입니다.
2. 옵션행사가를 설정 (예를들면 전체 행사가격)에서의 각가 미결제약정의 전체금액을
한눈으로 보는 수식이 가능할까요..?
수량만보다보니.한눈엔 들어오나 일일히 금액으로따져볼려니 계산을해야하는
번거로움 이 있어 수식 문의드립니다.
^^ 좋은 하루되시고요. 미리 감사드립니다. ~
2014-01-06
203
글번호 71132
답변완료
수식 문의드립니다.
아래 수식은 지난 1월3일자 34184번 게시물에 답변 주신 내용인데 이 수식에
게시물 21844번(11.12.02) 답변에 있는 plot2를 추세선 함수를 이용하여 구현하는 것과
시스템식을 적용해 주실 수 있으신지요?
신년을 맞아 귀사의 발전과 담당자님의 건승을 기원드립니다. 감사합니다.
######### 이하 34184번(14.01.03) 게시물 답변 ########
안녕하세요
예스스탁입니다.
식을 수정해 보았습니다.
#==========================================#
# 지 표 명 : 파동선 및 추세선
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
#==========================================#
Input:atrLength(14),multi(1);
Var:j(0),dayATR(0),sum(0),upTr(100),dnTr(-100),trnd(0),
date11(0),date12(0),time11(0),time12(0),TL1(0),
date21(0),date22(0),time21(0),time22(0),TL2(0),
date31(0),date32(0),time31(0),time32(0),TL3(0);
Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0);
//hiVal[1]은 전고점, hiVal[2]는 전전고점, hiVal[3]은 전전전고점
//hiVal[0]은 변곡점 이후 현재봉까지의 고점. 현재 고점은 진행중이므로 계속 바뀐다.
//loVal[0]은 반대 개념
sum = 0;
for j = 1 to atrLength {
sum = sum + Max(C[j+1],H[j]) - Min(C[j+1],L[j]);
}
dayATR = sum/atrLength; //일봉기준으로 ATR 산출
for j = 1 to 9 { //전고,전저점을 9개까지 보관
loBar[j] = loBar[j] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리
hiBar[j] = hiBar[j] + 1; //전고점의 위치
}
if hiVal[0] <= H or hiVal[0] == 0 then { //전고,전저점 이후 현재까지의 고점
hiVal[0] = H; //0을 체크한 이유는 초기에 값이 없는 구간이 생기기 때문
hiBar[0] = 0; //현재 고점의 위치가 0이란 것은 현재봉의 고가가 구간 고점이라는 의미
}
else {
hiBar[0] = hiBar[0] + 1; //현재 고점의 위치
}
if loVal[0] >= L or loVal[0] == 0 then { //전고,전저점 이후 현재까지 저점
loVal[0] = L;
loBar[0] = 0;
}
else {
loBar[0] = loBar[0] + 1; //현재 구간 저점의 위치
}
if trnd != dnTr && hiVal[0] > H && hiVal[0] - (dayATR * multi) > L then trnd = dnTr;
//저가가 고가 대비 변동률보다 밑으로 떨어지면 하락추세로 설정
//단, 현재봉의 고가가 변곡점 이후 최고가이면 상승 추세가 진행중이라고 본다.
//그래서 현재봉의 고가가 hiVal[0]보다 작다는 조건이 추가되었다.
else if trnd != upTr && loVal[0] < L && loVal[0] + (dayATR * multi) < H then trnd = upTr;
//고가가 저가 대비 변동률보다 높으면 상승추세로 설정
if trnd[1] == upTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면
for j = 8 downto 1 { //새로운 전고점이 생기는 것이므로
hiVal[j+1] = hiVal[j]; //전고점을 하나씩 뒤로 보낸다.
hiBar[j+1] = hiBar[j]; //전고점은 전전고점이 되고, 전전고점은 전전전고점이 된다.
}
hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입
hiBar[1] = hiBar[0];
hiVal[0] = H; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
//전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다.
date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜
time12 = stime[hiBar[1]]; //추세선 종료시간
Value12 = hiVal[1]; //추세선 종료가격
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
//TL_New는 신규 추세선을 그려주는 함수
}
if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데
hiVal[1] < hiVal[0] then { //전고점보다 더 높은 고점이 출현했다면
if loVal[1] <= loVal[0] then { //전저점은 갱신되지 않았다면
hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다.
hiBar[1] = hiBar[0];
hiVal[0] = H;
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
//전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다.
date12 = date[hiBar[1]]; //추세선 종료일
time12 = stime[hiBar[1]];
Value12 = hiVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
//TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다.
//TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다.
}
else { //전저점도 갱신되었다면
for j = 8 downto 1 { //전고점, 전저점을 새로이 추기
hiVal[j+1] = hiVal[j]; //전고점을 하나씩 뒤로 보낸다.
hiBar[j+1] = hiBar[j]; //전고점은 전전고점이 되고, 전전고점은 전전전고점이 된다.
loVal[j+1] = loVal[j]; //전저점을 하나씩 뒤로 보낸다.
loBar[j+1] = loBar[j]; //전저점은 전전저점이 되고, 전전저점은 전전전저점이 된다.
}
hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입
hiBar[1] = hiBar[0];
loVal[1] = loVal[0]; //새로운 전저점에 현재 저점을 대입
loBar[1] = loBar[0];
hiVal[0] = H; //전고점 이후 최고가는 현재봉의 고가
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
//전저,전고점이 새로 생긴 것이니까 전전고점에서 전저점까지
//그리고 전저점에서 전고점까지 추세선 2개를 생성한다.
date11 = date[hiBar[2]]; //추세선 시작일. 전전고점의 날짜
time11 = stime[hiBar[2]]; //추세선 시작시간
Value11 = hiVal[2]; //추세선 시작가격
date12 = date[loBar[1]]; //추세선 종료일. 전저점의 날짜
time12 = stime[loBar[1]]; //추세선 종료시간
Value12 = loVal[1]; //추세선 종료가격
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetSize(TL1,2);
date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜
time12 = stime[hiBar[1]]; //추세선 종료시간
Value12 = hiVal[1]; //추세선 종료가격
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
}
}
if trnd[1] == dnTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우
for j = 8 downto 1 {
//이전저점은 전전저점으로, 전전저점은 전전전저점으로 번호를 부여
loVal[j+1] = loVal[j];
loBar[j+1] = loBar[j];
}
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
date11 = date[hiBar[1]]; //전저점이 새로이 생긴 것이므로 시작점은 전고점이 된다.
time11 = stime[hiBar[1]];
Value11 = hiVal[1];
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
}
if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데
loVal[1] > loVal[0] then { //전저점보다 낮은 저가가 출현했다면
if hiVal[1] >= hiVal[0] then { //고점 갱신이 되지 않았다면
loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다.
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
}
else { //고점도 이전고점보다 높다면
for j = 8 downto 1 { //전고점,전저점을 새로이 생성
hiVal[j+1] = hiVal[j];
hiBar[j+1] = hiBar[j];
loVal[j+1] = loVal[j];
loBar[j+1] = loBar[j];
}
hiVal[1] = hiVal[0];
hiBar[1] = hiBar[0];
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
date11 = date[loBar[2]]; //시작점이 전전저점
time11 = stime[loBar[2]];
Value11 = loVal[2];
date12 = date[hiBar[1]]; //종료는 전고점
time12 = stime[hiBar[1]];
Value12 = hiVal[1];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetSize(TL1,2);
date11 = date[hiBar[1]]; //2번째 시작은 전고점이 된다.
time11 = stime[hiBar[1]];
Value11 = hiVal[1];
date12 = date[loBar[1]]; //2번째 종료는 전저점
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
}
}
if loVal[2] < loVal[1] then {
if loBar[2][1] + 1 != loBar[2][0] then {
date21 = date[loBar[2]];
time21 = stime[loBar[2]];
Value21 = loVal[2];
date22 = date[0]; //추세선이므로 현재 봉까지 그려준다.
time22 = stime[0];
Value22 = (loVal[1]-loVal[2])/(loBar[2]-loBar[1])*loBar[2]+LoVal[2];
//종료시점의 가격은 직선의 기울기와 절편을 계산해서 구한다.
TL2 = TL_New(date21,time21,Value21,date22,time22,Value22);
}
else {
//전전저점이 바뀌지 않았다면 종료시점만 변경하면 된다.
date22 = date[0];
time22 = stime[0];
Value22 = (loVal[1]-loVal[2])/(loBar[2]-loBar[1])*loBar[2]+LoVal[2];
TL_SetEnd(TL2, date22,time22,Value22);
//TL_SetExtRight 함수는 추세선을 오른쪽으로 연장하는 함수인데
//이 함수를 사용하면 모든 추세선이 현재봉까지 연장되어 알아볼 수가 없다.
}
}
if hiVal[2] > hiVal[1] then {
if hiBar[2][1] + 1 != hiBar[2][0] then {
date31 = date[hiBar[2]];
time31 = stime[hiBar[2]];
Value31 = hiVal[2];
date32 = date[0];
time32 = stime[0];
Value32 = (hiVal[1]-hiVal[2])/(hiBar[2]-hiBar[1])*hiBar[2]+hiVal[2];
TL3 = TL_New(date31,time31,Value31,date32,time32,Value32);
}
else {
date32 = date[0];
time32 = stime[0];
Value32 = (hiVal[1]-hiVal[2])/(hiBar[2]-hiBar[1])*hiBar[2]+hiVal[2];
TL_SetEnd(TL3, date32,time32,Value32);
}
}
if trnd == upTr and loVal[2] > loVal[1] then
TL_SetColor(TL1,BLUE);
else if trnd == dnTr and hiVal[2] < hiVal[1] then
TL_SetColor(TL1,RED);
else
TL_SetColor(TL1,BLACK);
TL_SetSize(TL1,2);
TL_SetColor(TL2,RED);
TL_SetColor(TL3,BLUE);
2014-01-06
279
글번호 71131
답변완료
질문드립니다~
매도1호가/매수1호가에 쌓여있는 수량과 건수를 나타내는 함수가 있나요?
bids/asks는 호가총수량이고
호가총건수는 참조데이터로 넣을수 있던데
매도1호가/매수1호가 수량과 건수는 찾질 못했네요
2014-01-06
186
글번호 71130