커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5514
글번호 230811
답변완료
문의 드립니다
실행시키자마자 '한 번만' 현재가에 100주를 매수하고
그 뒤로는 비교식에 의해 매수, 매도하려면 어떻게 해야하나요?
2021-01-27
793
글번호 145883
답변완료
키움신호를 종목검색식으로 변환 부탁드립니다.
안녕하세요.
키움에서 사용중인 신호수식인데 예스랭귀지 종목검색식으로 변환 부탁드립니다.
미리 감사드립니다.
M=MACD(200,400)-eavg(MACD(200,400),9);
A=(if(eavg(c,20)>eavg(c,20,1)*(1.003),1,0)+ if(eavg(c,21)>eavg(c,21,1)*(1.003),1,0)+ if(eavg(c,22)>eavg(c,22,1)*(1.003),1,0)+ if(eavg(c,23)>eavg(c,23,1)*(1.003),1,0)+ if(eavg(c,24)>eavg(c,24,1)*(1.003),1,0)+ if(eavg(c,25)>eavg(c,25,1)*(1.003),1,0)+ if(eavg(c,26)>eavg(c,26,1)*(1.003),1,0)+ if(eavg(c,27)>eavg(c,27,1)*(1.003),1,0)+ if(eavg(c,28)>eavg(c,28,1)*(1.003),1,0)+ if(eavg(c,29)>eavg(c,29,1)*(1.003),1,0)+ if(eavg(c,30)>eavg(c,30,1)*(1.003),1,0)+ if(eavg(c,31)>eavg(c,31,1)*(1.003),1,0)+ if(eavg(c,32)>eavg(c,32,1)*(1.003),1,0)+ if(eavg(c,33)>eavg(c,33,1)*(1.003),1,0)+ if(eavg(c,34)>eavg(c,34,1)*(1.003),1,0)+ if(eavg(c,35)>eavg(c,35,1)*(1.003),1,0))/16*100;
B=(if(eavg(c,20)>eavg(c,20,1)*(0.997),1,0)+ if(eavg(c,21)>eavg(c,21,1)*(0.997),1,0)+ if(eavg(c,22)>eavg(c,22,1)*(0.997),1,0)+ if(eavg(c,23)>eavg(c,23,1)*(0.997),1,0)+ if(eavg(c,24)>eavg(c,24,1)*(0.997),1,0)+ if(eavg(c,25)>eavg(c,25,1)*(0.997),1,0)+ if(eavg(c,26)>eavg(c,26,1)*(0.997),1,0)+ if(eavg(c,27)>eavg(c,27,1)*(0.997),1,0)+ if(eavg(c,28)>eavg(c,28,1)*(0.997),1,0)+ if(eavg(c,29)>eavg(c,29,1)*(0.997),1,0)+ if(eavg(c,30)>eavg(c,30,1)*(0.997),1,0)+ if(eavg(c,31)>eavg(c,31,1)*(0.997),1,0)+ if(eavg(c,32)>eavg(c,32,1)*(0.997),1,0)+ if(eavg(c,33)>eavg(c,33,1)*(0.997),1,0)+ if(eavg(c,34)>eavg(c,34,1)*(0.997),1,0)+ if(eavg(c,35)>eavg(c,35,1)*(0.997),1,0))/16*100;
Y=(if(eavg(c,20)>eavg(c,20,1)*(1.0005),1,0)+ if(eavg(c,21)>eavg(c,21,1)*(1.0005),1,0)+ if(eavg(c,22)>eavg(c,22,1)*(1.0005),1,0)+ if(eavg(c,23)>eavg(c,23,1)*(1.0005),1,0)+ if(eavg(c,24)>eavg(c,24,1)*(1.0005),1,0)+ if(eavg(c,25)>eavg(c,25,1)*(1.0005),1,0)+ if(eavg(c,26)>eavg(c,26,1)*(1.0005),1,0)+ if(eavg(c,27)>eavg(c,27,1)*(1.0005),1,0)+ if(eavg(c,28)>eavg(c,28,1)*(1.0005),1,0)+ if(eavg(c,29)>eavg(c,29,1)*(1.0005),1,0)+ if(eavg(c,30)>eavg(c,30,1)*(1.0005),1,0)+ if(eavg(c,31)>eavg(c,31,1)*(1.0005),1,0)+ if(eavg(c,32)>eavg(c,32,1)*(1.0005),1,0)+ if(eavg(c,33)>eavg(c,33,1)*(1.0005),1,0)+ if(eavg(c,34)>eavg(c,34,1)*(1.0005),1,0)+ if(eavg(c,35)>eavg(c,35,1)*(1.0005),1,0))/16*100;
Z=(if(eavg(c,20)>eavg(c,20,1)*(0.99995),1,0)+ if(eavg(c,21)>eavg(c,21,1)*(0.99995),1,0)+ if(eavg(c,22)>eavg(c,22,1)*(0.99995),1,0)+ if(eavg(c,23)>eavg(c,23,1)*(0.99995),1,0)+ if(eavg(c,24)>eavg(c,24,1)*(0.99995),1,0)+ if(eavg(c,25)>eavg(c,25,1)*(0.99995),1,0)+ if(eavg(c,26)>eavg(c,26,1)*(0.99995),1,0)+ if(eavg(c,27)>eavg(c,27,1)*(0.99995),1,0)+ if(eavg(c,28)>eavg(c,28,1)*(0.99995),1,0)+ if(eavg(c,29)>eavg(c,29,1)*(0.99995),1,0)+ if(eavg(c,30)>eavg(c,30,1)*(0.99995),1,0)+ if(eavg(c,31)>eavg(c,31,1)*(0.99995),1,0)+ if(eavg(c,32)>eavg(c,32,1)*(0.99995),1,0)+ if(eavg(c,33)>eavg(c,33,1)*(0.99995),1,0)+ if(eavg(c,34)>eavg(c,34,1)*(0.99995),1,0)+ if(eavg(c,35)>eavg(c,35,1)*(0.99995),1,0))/16*100;
D1=dema(A,5);
T1=tema(A,5);
F1=eavg(tema(A,5),5);
D2=dema(B,5);
T2=tema(B,5);
F2=eavg(tema(B,5),5);
D3=dema(Y,5);
T3=tema(Y,5);
F3=eavg(tema(Y,5),5);
D4=dema(Z,5);
T4=tema(Z,5);
F4=eavg(tema(Z,5),5);
E1=countsince(M>0 and crossup(D3, max(T3,F3)), C>ma(c,5,단순) and C>O);
E2=countsince(M<0 and max(D3,T3,F3)==D3 and ((crossup(D3,50) and max(D4,T4,F4)<50) or
(crossdown(max(D4,T4,F4),50) and D3>50)),C>ma(c,5,단순) and C>O);
M>0
and
c>ma(c,60)
and
max(D1,T1,F1)==D1 and max(D2,T2,F2)==F2
and
BiWave(20,12,5,3)>0
and
HIGH - eavg(C,15)>0
and
Stochasticsslow(12,26)-eavg(Stochasticsslow(12,26),5)>0
and
(
crossup(M,0) or
crossup(c,ma(c,60)) or
crossup(D1,max(T1,F1)) or crossup(F2,max(D2,F2)) or crossup(BiWave(20,12,5,3),0) or
crossup(HIGH,eavg(c,15)) or crossup(Stochasticsslow(12,26),eavg(Stochasticsslow(12,26),5))
)
and
(
if(max(T3,F3)>D3,0,if(E1(1)==1,0,E1==1))
or
if(max(T3,F3)>D3,0,if(E2(1)==1,0,E2==1))
)
2021-01-27
1386
글번호 145882
답변완료
분봉의 중심선 긋기
항상 도움주심에 감사합니다^^
시간봉(60분봉)의 분봉 중심값을 차트에 라인과 텍스트를 표시하고 싶습니다.
제가 지금 사용하는 지표는 아래와 같은데 라인이 이전봉 뒤로 선이 길게 표시되는데
직전봉의 중심값에서 부터 우측으로 표시되게하고 차트 여백에 텍스트로 수치를 표시
할 수 있으면 좋겠습니다.
1.라인과 수치 표시
2.150틱 이상만 표시되게(시가와 종가의 틱수가 150틱 미만일때는 이전 150틱에 표시)
3.시가와 종가의 중간에 표시(고가와 저가는 카운팅 제외), 텍스트 표시는 작게
input : N(150);
if Bdate != Bdate[1] Then{
TL_Delete(var4);
var1 = sdate[1];
var2 = stime[1];
}
if abs(C-O) >= PriceScale*N Then{
var3 = (C+O)/2;
TL_Delete(var4);
var4 = TL_New(var1,var2,var3,sdate,stime,var3);
TL_SetExtRight(var4,true);
}
2021-01-27
1413
글번호 145881
답변완료
예스트레이더코인 수식작성문의
예스트레이더 코인 수식작성 문의 드립니다.
예스트레이더에서 정상 작동 되는데 코인에서는 오류 뜨더라고요 수식 수정좀 부탁드리겠습니다.
매수 조건 : 이동평균선 120 이동평균선 골드크로스 상태에서 + Aroon 10 매수 신호 발생시 매수
매도 조건 : 이동평균 120 이동평균선 데드크로스, 또는
Aroon 10 매도 신호발생
둘중 먼저 매도 신호가 발생하면 매도 수식추가 부탁드리겠습니다.
감사드립니다~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식작성문의
>
안녕하세요
예스스탁입니다.
input : P(120),Period(10);
var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ;
var : mav(0);
mav = ma(C,120);
Lowval= Lowest(Low, Period+1);
Highval = Highest(High, Period+1);
For counter= 0 To Period {
If Low[counter] == Lowval Then
DownVel = counter;
If High[counter] == highval Then
UpVel = counter;
}
UpAroon = 100*(Period-UpVel)/Period;
DnAroon = 100*(Period-DownVel)/Period;
if c > mav Then
{
if crossup(UpAroon,DnAroon) Then
buy("Aroon_LE");
if CrossDown(UpAroon,DnAroon) Then
sell("Aroon_SE");
}
2021-01-27
1204
글번호 145880
답변완료
성능보고서 문의
안녕하세요?
이제 예스랭귀지 공부를 시작하려고 각종 샘플을 따라하고있습니다.
그런데 시스템 샘플을 차트에 적용하고 성능보고서를 보면
매수진입/청산시 청산과 동시에 매도진입이 이루어 지고, 매도청산시
매수진입이 동시에 실행되고 계속 이렇게 거래가 진행되는데
샘플 시스템의 로직설명은 그렇지가 않습니다.
성능보고서 한개를 첨부합니다.
상세한 설명 부탁드리겠습니다.
감사합니다.
2021-01-27
914
글번호 145879
답변완료
주식선물 1분봉 데이터 다운로드
모든 개별 주식선물 종목의 최대 조회가 가능한 1분봉 데이터(open,high,low,close)를
다운 받으려하는데
print("C:UsersUserDesktodata.csv","시가,%.2f,고가,%.2f,저가,%.2f,종가,%.2f,거래량,%.0f", open,high,low,close,v);
여기서 저장 파일이름을 해당종목으로 되게끔 코딩이 가능한지 궁금합니다.
혹은 일일이 종목을 열어서 지표적용을 하지않고 모든종목의 데이터를 한번에 받을 수 있는 코딩이 되는지도 궁금합니다.
2021-01-27
1785
글번호 145877
브라이안 님에 의해서 삭제되었습니다.
2021-01-27
0
글번호 145876
답변완료
수식부탁드립니다
안녕하세요
아래수식을 이용해서 첨부그림의 내용으로 수식을 수정부탁드립니다
# 지 표 명 : 고저라인 지그재그 파동선
# 버 전 : 1.2
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
# 업데이트 : 2017-03-10
#==========================================#
Input:length(2),종가사용여부(0),파동선두께(5),수치표시수(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),Text2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 수치표시수 == 1 Then
{
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text2, 2, 1);
Text_SetColor(Text2,RED);
Text_SetSize(Text2, 20);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 수치표시수 == 1 Then
{
Text2 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text2, 2, 0);
Text_SetColor(Text2,BLACK);
Text_SetSize(Text2, 20);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2021-01-27
1296
글번호 145875
답변완료
수식 문의
기존 수식이 있다는 전제하에
매매시간만 정하는 수식입니다.
신규진입은 오전 10시 50분 ~ 오후 3시 30분 사이
이후로는 진입없이 청산만 작동케 하는 것인데요
시뮬해보니 진입 조건 되면 아무때나 진입을 합니다.
수식에 문제가 무얼까요?
input :............................... ;
input : StartTime(105000),EndTime(153000);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
진입조건 수식..................
2021-01-27
973
글번호 145874