커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1664
글번호 230811
답변완료
요청 드립니다.
키움증권 사용중인 수식을 예스랭귀지로 변환하려 합니다.
다바스 박스 수식 입니다.
-박스상단-
TOP=HIGHEST(H,기간);
LO=LOWEST(L,기간);
DOUBLE=VALUEWHEN(1,H>TOP(1),H);
VALUEWHEN(1,BARSSINCE(H>TOP(1))==(기간-R),DOUBLE)
-박스하단-
TOP=HIGHEST(H,기간);
LO=LOWEST(L,기간);
DOUBLE=VALUEWHEN(1,H>TOP(1),H);
VALUEWHEN(1,BARSSINCE(H>TOP(1))==(기간-R),LO)
기간 45
R 2
이렇게 다바스 박스를 사용중입니다. 예스트레이더에도 적용할수 있도록 변환부탁드리며
또한 박스 상단을 돌파하는 검색식으로도 자료 요청 부탁드립니다.
항상 감사드립니다.
2021-09-14
1148
글번호 152232
답변완료
추가 질문입니다(보유 주식 평가손 일경우)
안녕하세요.
아래 식을 제가 일봉 기준으로 거래 하고 있는데
보유 주식이 평가이익이 날 경우는 매도 신호가 나오면 그냥 매도 하면 되는데
보유 주식이 평가 손이 날경우에는 처분하고 싶지 않아서요.
그래서 처분하지 않고 매수신호가 추가로 뜨면 추가 매수하다가
그 이후에 평가 이익이 나면 매도 신호가 뜨면 매도 하게끔 하려고 합니다
그런데 계속 보유하다가 결국 파라볼릭이 주봉기준으로 크로스다운으로 나면
평가 손이 나도 어쩔수 없이 전부 매도 처분하는 식을 짜고 싶습니다.
맘대로 안돼서 도움 요청 드려요.부탁드립니다
-------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
Input : short(12), long(26), signal(9);
input : period(14);
input : af(0.02),maxaf(0.2);
var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0);
Var : MACDv(0), MACDs(0),macdo(0) ;
var : adxv(0),para(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
adxv = adx(period);
para = Sar(af,maxaf);
if C > max(선행스팬1,선행스팬2) and
MACDO > macdO[1] and
adxv >= 30 and adxv > adxv[1] and CrossUp(c,para) Then
Buy();
if MarketPosition == 1 Then
{
if CrossDown(c,para) Then
ExitLong();
if adxv < adxv[1] Then
ExitLong();
}
즐거운 하루되세요
> 머니사이언스 님이 쓴 글입니다.
> 제목 : 문의 드립니다(ADX 와 para)
> 매수
1.주식 종가가 일목 균형의 구름 상단에 위치해 있고
2. MACD 오실에이터는 상승인 상태에서
ADX가 20선을 크로스업 하고,ADX가 상승하고 현재가가 파라볼릭보다 높을때
또는
1.주식 종가가 구름 상단에 위치해 있고
2. MACD 오실에이터는 상승인 상태에서
ADX가 30이상이고 , ADX가 상승중이고 , 현재가가 파라볼릭을 크로스업 할때
이렇게 2가지 경우에 해당할 경우 주식 매수에 들어 가고요
매도
현재가가 파라볼릭을 크로스 다운 하거나
ADX가 하락으로 반전할 경우
가지고 잇는 주식을 매도 처분하려 합니다
변수는 일반 세팅되어 있는 변수로 하시면 되구요.
식을 만들어 봤는데 자꾸 엉뚱한 곳에서 매수가 되질 않나 에러가 나서 문의 드립니다.
부탁 드립니다.
2021-09-13
853
글번호 152223
답변완료
문의드립니다
1,오후2시이후에 그이전보다 거래량이 50%이상 늘어난 종목을 찾고싶습니다
2,당일 진폭이 3% 이하인종목을찾고싶습니다
3,5분봉으로 봤을때 일봉이평 5일,20일이평이 크로스업되는 종목을 찾고싶습니다
2021-09-13
816
글번호 152222
답변완료
지표 질문입니다
1. 일봉에서 5ma 를 틱 차트에서 표시하는 수식 부탁드립니다. 감사합니다
2.일봉에서 5ma 하락에서 상승 전환 위치를 틱 차트에서 표시하는 수식 부탁드립니다.
3.일봉에서 5ma 상승에서 하락 전환 위치를 틱 차트에서 표시하는 수식 부탁드립니다.
감사합니다
2021-09-13
737
글번호 152218
답변완료
함수요청
안녕하세요?
해외선물 크루드 오일 5분봉으로 조회시
영업일 상 당일의 고가, 저가를 plot으로 표시하고 싶습니다.
일봉상으로 조회시의 값을 분봉상으로 조회시에도 똑같이 표기하고 싶은데
즉 현재가가 변해서 일봉상 고가와 저가가 갱신되면 그 값을 분봉상에도 동일하게 표시하고 싶습니다.
따라서 분봉으로 조회시 당일의 고가와 저가는 각각 1개씩만 같은 값으로 수평선으로 표시됩니다.
그때의 값은 일봉으로 조회시의 값과 동일합니다.
2021-09-13
698
글번호 152217
답변완료
종목검색 및 강조수식 부탁드립니다.
224 신고거래량 매매 전략
조건1. 최근 56봉 안에 1일지수이평 종가가 224봉 종가기준 지수이평을 상향돌파 1회 이상
조건2. 최근 28봉의 최고거래량이 발생한봉은 112봉 최고거래량이며, 224봉 지수이평 상향돌파 이후에 나와야 한다.
조건3. 112봉 최고거래량과 224지수이평 돌파가 동시에 나오는 것은 괜찮다.
조건4. 종가가 224지수이평 돌파이후 224지수이평 아래로 내려가면 안된다.
조건5. 현재가 기준 MACD(28, 112)는 기준값 0 이상이다.
조건6. 28일 동안 양봉의 최대거래량이 음봉 최대거래량보다 크다
조건7. 최고거래량이 발생한 봉의 거래량은 직전 56봉의 평균거래량의 10배 이상이다.
조건8. 최근 28봉의 누적거래량은 500억 이상이다.
조건9. 신고거래량이 발생한 봉 이후 신고거래량의 50%이하로 거래량이 발생한봉 2개 이상
조건10. 신고거래량 이후 3일차~8일차 까지는 15일 지수이평을 데드크로스 할때 매수
조건11. 신고거래량 발생 이후 9일차 부터는 33일 지수이평을 데드크로스 할때 매수
조건12. 56일 중 앞에서 매수를 한 경우는 더이상 매수를 하지 않는다.
종목검색과 강조식 부탁드립니다.
2021-09-13
538
글번호 152213
답변완료
시스템식 부탁드립니다.
안녕하세요.
항상 도움주셔서 감사합니다.
아래 조건에 맞는 시스템식 부탁드립니다.
만약에 2개 매수 포지션이 있을때 아래 함수를 사용하여
2개중 1개만 청산이 가능한지요?
SetStopProfittarget
그리고 IF문을 사용하여 위 함수를 IF 조건에
만족한 경우에만 실행할수 있는지요?
마지막으로 2개 포지션이 있을때 exitlong 함수를 사용하여
청산시 수량 지정이 없으면 2개 모두 한번에 청산 되는건가요?
또 포지션이 2개 있을경우 Setstopprofittarget 사용하면
2개 포지션이 모두 청산 되는건가요?
아직 개념이 부족해서요.
설명 부탁드립니다.
감사합니다.
2021-09-13
483
글번호 152211
음훼훼훼 님에 의해서 삭제되었습니다.
2021-09-12
28
글번호 152210
답변완료
lowest 함수 오작동 문의
아래와 같이 실행하면 var2와 var3의 값이 정상적으로 같은 값으로 출력되는 걸 확인(캡처1)했습니다.
------------------------------------------------------------------------------
var : n(5), HighBar(15);
var1 = HighBar - (n+1);
Var2 = Lowest(L, Var1)[6];
Var3 = Lowest(L, 9)[6];
MessageLog("var1 %.0f, var2 %.3f, Var3 %.3f", var1, Var2, Var3);
------------------------------------------------------------------------------
하지만, 아래와 같이 Swing하는 지표를 만들어 활용하게 되면 lowest()함수에 오류가 발생합니다.
첨부(캡처2)한 디버깅 내용을 확인해보시면 7/28일의 경우 tt 변수는 9로 계산됩니다.
t = lowest(L, 9)와 ttt = lowest(L, tt)의 값이 서로 다르게 계산됩니다.
7/28일의 t와 ttt의 값이 다른 이유를 알고 싶습니다.
US Dollar Index 일간 차트로 지표를 실행하였습니다.
Input : n(5), Tick(0.005), UnComplete(True);
Var : j(0), k(0), t(0), tt(0), ttt(0), S(0), HighPoint(0), LowPoint(0);
Array : HighPrice[20](0), LowPrice[20](0), HighBar[20](0), LowBar[20](0), HighIndex[20](0), LowIndex[20](0);
For j = 1 to 19 {
HighBar[j] = HighBar[j] + 1;
LowBar[j] = LowBar[j] + 1;
HighIndex[j] = Index - HighBar[j];
LowIndex[j] = Index - LowBar[j];
}
HighPoint = (o[n] + c[n]) / 2;
LowPoint = (o[n] + c[n]) / 2;
if Highest(h, n)[n+1] <= H[n] and h[n] > Highest(h, n) Then {
if UnComplete == True Then {
For j = 18 DownTo 1 {
HighPrice[j+1] = HighPrice[j];
HighBar[j+1] = HighBar[j];
HighIndex[j+1] = HighIndex[j];
}
HighPrice[1] = H[n];
HighBar[1] = n;
HighIndex[1] = Index - HighBar[1];
HighPoint = HighPrice[1] + Tick * 0.25;
if LowBar[1] > HighBar[2] Then {
For j = 18 DownTo 1 {
LowPrice[j+1] = LowPrice[j];
LowBar[j+1] = LowBar[j];
LowIndex[j+1] = LowIndex[j];
}
k = n + 1;
For j = n + 2 to HighBar[2] - 1 {
if L[k] > L[j] Then k = j;
}
tt = HighBar[2] - (n+1);
ttt = Lowest(L, tt)[6];
t = Lowest(L, 9)[6];
LowPrice[1] = L[k];
LowBar[1] = k;
LowIndex[1] = Index - LowBar[1];
LowPoint = LowPrice[1] - tick * 0.25; # 책에 없는 코드
}
}
if UnComplete == False Then {
if HighBar[1] > LowBar[1] Then
For j = 18 DownTo 1 {
HighPrice[j+1] = HighPrice[j];
HighBar[j+1] = HighBar[j];
HighIndex[j+1] = HighIndex[j];
}
if HighBar[1] > lowBar[1] or HighPrice[1] <=High[n] Then {
HighPrice[1] = h[n];
HighBar[1] = n;
HighIndex[1] = Index - HighBar[1];
HighPoint = Highprice[1] + tick * 0.25;
}
}
}
If Lowest(L, n)[n +1] >= L[n] and L[n] < Lowest(L, n) Then {
if UnComplete == True Then {
For j = 18 DownTo 1 {
Lowprice[j+1] = Lowprice[j];
LowBar[j+1] = Lowbar[j];
LowIndex[j+1] = LowIndex[j];
}
LowPrice[1] = L[n];
LowBar[1] = n;
LowIndex[1] = Index - LowBar[1];
LowPoint = LowPrice[1] - Tick * 0.25;
if HighBar[1] > LowBar[2] Then {
For j = 18 DownTo 1 {
HighPrice[j+1] = HighPrice[j];
HighBar[j+1] = HighBar[j];
HighIndex[j+1] = HighIndex[j];
}
k = n + 1;
For j = n + 2 to LowBar[2] - 1 {
if H[k] < H[j] Then k = j;
}
HighPrice[1] = H[k];
HighBar[1] = k;
HighIndex[1] = Index - HighBar[1];
HighPoint = HighPrice[1] + tick * 0.25;
}
}
if UnComplete == False Then {
If LowBar[1] > HighBar[1] Then {
For j = 18 DownTo 1 {
Lowprice[j+1] = LowPrice[j];
LowBar[j+1] = LowBar[j];
LowIndex[j+1] = LowIndex[j];
}
}
if LowBar[1] > HighBar[1] or LowPrice[1] >= L[n] Then {
LowPrice[1] = L[n];
LowBar[1] = n;
LowIndex[1] = Index - LowBar[1];
LowPoint = LowPrice[1] - Tick * 0.25;
}
}
}
if HighPoint > H[n] Then Plot1(HighPoint, "HighPoint", RED); # 점그래프, -n만큼 수평이동
if LowPoint < L[n] Then Plot2(LowPoint, "LowPoint", BLUE); # 점그래프, -n만큼 수평이동
if HighBar[1] == n and HighPrice[1] > 0 Then Plot3(HighPrice[1]); # 선그래프, -n만큼 수평이동
if LowBar[1] == n and LowPrice[1] > 0 Then Plot3(LowPrice[1]); # 선그래프, -n만큼 수평이동
if LowBar[1] == n and LowPrice[1] > 0 Then Plot4(LowPrice[1]); # 선그래프, -n만큼 수평이동
if HighBar[1] == n and HighPrice[1] > 0 Then Plot4(HighPrice[1]); # 선그래프, -n만큼 수평이동
MessageLog("HighPrice[1] %.3f, HighPrice[2] %.3f, LowPrice[1] %.3f, t %.3f, tt %.0f, ttt %.3f, HighBar[1] %.0f, HighBar[2] %.0f, LowBar[1] %.0f, s %.0f, k %.0f",
HighPrice[1], HighPrice[2], LowPrice[1], t, tt, ttt, HighBar[1], HighBar[2], LowBar[1], s, k);
2021-09-12
1077
글번호 152209