커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4562
글번호 230811
답변완료
수식부탁드립니다.
안녕하세요. 더운데 수고가 많으십니다.
수식질문 좀 드리려 합니다.
MACD 다이버전스 수식을 만들려고 합니다.
첨부파일과 같은 상승다이버전스와 그 반대의 하락다이버전스의 경우도
화살표로 표시되었으면 합니다.
(첨부파일차트는 키움증권차트입니다. 원하는 수식은 예스랭귀지입니다.)
2016-08-05
228
글번호 100738
답변완료
부탁드립니다
수고하십니다
종목검색 부탁드립니다
1. 5분차트에서 5분봉이 연속해서 5 이평선 위로 돌파되면서
전일 같은 시간대보다 거래량이 100%이상 종목
2. 장시작후 30분봉이 5 이평선을 돌파하는 검색식
3. 장시작전 갭상승 10% 이상인 종목을 검색하는
4. 거래량 100만주 이상 이면서 가격이 2천원 이상인 종목 검색하는식 부탁드립니다
2016-08-05
122
글번호 100737
답변완료
주중 최고가와 최저가 선 관련 문의입니다.
검색을 해보니 주중 최고가와 최저가를 알려주는 수식이 있더군요.
-----------------------------------------------------------
var : WH(0),WL(0);
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{
WH = H;
WL = L;
}
if H > WH Then
WH = H;
if L < WL Then
WL = L;
plot1(WH);
plot2(WL);
----------------------------------------------------------
유용하게 잘 사용하고 있습니다.
그런데 위의 수식에 "월요일"만, 전주의 "금요일"을 포함한 최고가와 최저가를 나타내고
화요일부터는 금주의 최고가 최저가를 나타내고 싶습니다.
식을 만들고 싶은데....
가능 할까요? 부탁드리겠습니다.
2016-08-04
118
글번호 100736
답변완료
챠트 만들다 너무 힘들어서!
키움에서 만든 챠트 입니다
똑같은 챠트를 만들어 보고 싶습니다
MACD 강세 약세장에 배경과 보조지포를 사용해서 만든 것입니다.
수식은 일반적인걸로 넣어주세요
1. 강세 약세장
2. 진입 신호
3. MACD로 바탕 배경을 만든것 같군요
꼭 좀 부탁그립니다
2016-08-04
271
글번호 100735
답변완료
48918 관련 재질문 드립니다
안녕하세요. 수고가 많으십니다. 보내주신데로 아래와 같이 적용했는데 그런데 또 문제가 있네요. 첨부파일 참고하셔서 수정 부탁드립니다. 감사합니다 ^^
* 시스템식에 있는 변수와 겹쳐서 var1 ==> var21, var2 ==>var22로 변경
* if index ==5 then sell(); ==> 적용않함
* 수익틱 구간을 10틱으로 재조정
==============
var : tx(0);
//if index == 5 Then
// sell();
if MarketPosition != 0 Then{
var21 = MaxPositionProfit/PriceScale;
var22 = MaxPositionLoss/PriceScale;
#수익
if var21 >= 10 and var21[1] < 10 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"10틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 20 and var21[1] < 20 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"20틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 30 and var21[1] < 30 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"30틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 40 and var21[1] < 40 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"40틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 50 and var21[1] < 50 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"50틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 60 and var21[1] < 60 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"60틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 70 and var21[1] < 70 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"70틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 80 and var21[1] < 80 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"80틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 90 and var21[1] < 90 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"90틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 100 and var21[1] < 100 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"100틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 110 and var21[1] < 110 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"110틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 120 and var21[1] < 120 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"120틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 130 and var21[1] < 130 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"130틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 140 and var21[1] < 140 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"140틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}if
if var21 >= 150 and var21[1] < 150 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"150틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 160 and var21[1] < 160 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"160틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 170 and var21[1] < 170 Then{
Condition7 = true;
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"170틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 180 and var21[1] < 180 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"180틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 190 and var21[1] < 190 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"190틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 200 and var21[1] < 200 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"200틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 250 and var21[1] < 250 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"250틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 300 and var21[1] < 300 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"300틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 350 and var21[1] < 350 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"350틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
if var21 >= 350 and var21[1] < 350 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,H,L),"350틱수익");
Text_SetColor(tx,yellow);
Text_SetStyle(tx,2,2);
}
#손실
if var22 <= -10 and var22[1] > -10 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,L,H),"10틱손실");
Text_SetColor(tx,blue);
Text_SetStyle(tx,2,2);
}
if var22 <= -20 and var22[1] > -20 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,L,H),"20틱손실");
Text_SetColor(tx,blue);
Text_SetStyle(tx,2,2);
}
if var22 <= -30 and var22[1] > -30 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,L,H),"30틱손실");
Text_SetColor(tx,blue);
Text_SetStyle(tx,2,2);
}
if var22 <= -40 and var22[1] > -40 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,L,H),"40틱손실");
Text_SetColor(tx,blue);
Text_SetStyle(tx,2,2);
}
if var22 <= -50 and var22[1] > -50 Then{
tx = Text_New(sdate,stime,iff(MarketPosition==1,L,H),"50틱손실");
Text_SetColor(tx,blue);
Text_SetStyle(tx,2,2);
}
}
2016-08-04
196
글번호 100734
답변완료
당일시가 진입이후
아래와 같은 조건에 맞는 수식을 부탁드립니다.
그림1은
임의의 이평선을 var1 이라하면
현재가가 var1을 초과하면 매수진입 var1을 하위하면 매도진입인 수식에 의한 것입니다.
이때 위 조건에 의하여 영업일 당일 시가에 의한 진입(S 진입) 을 제외한
1.영업일 당일 b2, s2 이후에서 s2 매도진입에 의한 매도포지션 상태에서 직전의 b2 매수진입 이후 var1을 초과한 b3 현재가가 최고가이면 매수진입하고
2.영업일 당일 b2, s2 이후에서 b3 매수진입에 의한 매수포지션상태에서 직전의 s2 매도진입이후 var1을 하위한 s3 현재가가 최저가이면 매도진입 하는 조건을 수식에 추가 하고자 합니다.
즉 영업일 당일시초가에의한 진입 외에
현재 매도포지션 이면 직전의 매수 포지션이후 var1을 초과하는 최고가이면 매수진입 하고
현재 매수포지션 이면 직전의 매도포지션이후 var1을 하위하는 최저가이면 매도진입하는 조건 입니다
*피라미딩 설정(중복진입) 허용 안함.
2016-08-05
172
글번호 100733
답변완료
문의드립니다.
안녕 하세요.
무더운 날시에 고생들 많으십니다.
가르쳐 주신 수식으로 예스지표차트를 만들어 보앗습니다.^^
지표에 나오는대로 선으로 나오는 지표를 겹치기 한후 점또는 원으로 지표설정 하였습니다.
점으로 표시된부분이 최고점 또는 최저점 중간 중간 고점과 저점 이렇게 나오는데영
점으로 나오는 부분에 <<점대신 또는 점과함께 매수신호와 매도신호를 표시>>해
주시면 실제 차트를 보면서 매매 하는데 큰 도움이 되기때문입니다.^^
시스템매매신호를 넣어두면 차트를 보며 수동 매매 하는데 있서서 눈에 엄청 잘들어 옵니다.
차트에 표시되는 최고점 점선과 중간 중간 나오는 부분에 매수청산 매도 진입 하고
차트에 나오는 최저점과 중간 중간 나오는 분홍색부분에 동그라미 부분에서 매도청산 매수진입 하는 신호를 넣고 싶습니다.
아래 1번부터 4번까지 화살표 나오는 매수 매도신호를 넣어 주시면 감사하겠습니다.^^
아래 4가지 수식중 신호가 제일 낳은 부분을 골라서 수동매매에 적용해볼라합니다.^^
1번 input : Period(12);
var : TRIXV(0);
TRIXV = TRIX(0);
if crossup(TRIXv,0) Then
var1 = H;
if H > var1 Then
var1 = H;
if CrossDown(TRIXv,0) Then
var2 = H;
if L < var2 Then
var2 = L;
plot1(var1);
plot2(var2);
2번
var1 = Ma(c,0);
var2 = ma(C,0);
if crossup(var1,var2) or CrossDown(var1,var2) Then
value1 = var2;
if value1 < C Then
value2 = value1;
Else
value2 = var2;
plot1(value1);
plot2(value2);
3번
var1 = Ma(c,0);
if var1 >= var1[1] Then
value1 = var1;
if var1 < var1[1] Then
value2 = var1;
plot1(value1);
plot2(value2);
4번
input : period(10);
var1 = trix(0);
if crossup(var1,0) Then
value1 = h;
if H > value1 Then
value1 = H;
if CrossDown(var1,0) Then
value2 = L;
if L < value2 Then
value2 = L;
plot1(value1);
plot2(value2);
감사합니다.^^
2016-08-05
158
글번호 100732
답변완료
문의드립니다
input : short(2),long(20),P(20);
var : MACDV(0),MAV(0),LL(0),HH(0);
MACDV = MACD(short,long);
MAV = ma(C,P);
if crossup(MACDV,0) Then
HH = MAV;
if MAV > HH Then
HH = MAV;
if CrossDown(MACDV,0) Then
LL = MAV;
if MAV < LL Then
LL = MAV;
if HH > mav Then
var1 = HH;
Else
var1 = mav;
if LL < mav Then
var2 = LL;
Else
var2 = mav;
plot1(var1);
plot2(var2);
위 수식으로인한 시스템 수식을 부탁드립니다
사진첨부합니다
1. 이격벌어지는 구간에서 매수,매도 신호발생
2. 신호발생후 이격이 합쳐지는 구간에서 청산신호발생
2016-08-04
191
글번호 100731
답변완료
시스템 프로그램 작성 문의드립니다.
안녕하세요.
항상 친절하고 정확한 답변 감사드립니다.
아래와 같이 프로그램을 짠 후,
시스템 성능보고서를 확인하면...
위의 그림처럼 2번 매수하고 각각 따로 2번 매도한 것으로 표현됩니다...
시스템 성능보고서 상에서 실제 HTS 처럼,
2회의 매수가가 평균단가로 표현되고,
2개의 수량을 한 번에 매도하는 것으로 출력될 수 있도록 하는 방법은 없을까요??
감사합니다.
----------------------------------------------------------------
var : Dayx(0);
var : buyday(0), buyprice(0), CDCav10dday(0), chumae(0);
if date != date[1] Then
Dayx = Dayx+1;
if MarketPosition == 0 and CrossDown(C, Ema(c,10))
Then {
Buy("10일선 dead");
buyday = dayx;
buyprice = C;
ExitLong("", AtLimit, buyprice*1.05);
}
if MarketPosition == 1 and CrossDown(C, Ema(c,20)) and Chumae == 0
Then {
Buy("20일선 dead 추매");
buyday = dayx;
buyprice = (buyprice+C)/2;
Chumae = 1;
ExitLong("", AtLimit, buyprice*1.05);
}
if MarketPosition == 1 and buyday+6 >= dayx Then {
ExitLong("7일이내 5%", AtLimit, buyprice*1.05);
Chumae = 0;
}
if MarketPosition == 1 and buyday+7 == dayx Then {
ExitLong("8일 포기");
Chumae = 0;
}
2016-08-04
146
글번호 100730