커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1386
글번호 230811
답변완료
문의
늘 감사드립니다.
옵션 관련해서
data2부터 data3, data4가 있다면
data2의 가격과 data3의 가격이 처음 딱 만나는 가격(같은 가격)
data2의 가격과 data4의 가격이 처음 딱 만나는 가격(같은 가격)에 라인이 그려지게 가능할까요?
2024-07-24
800
글번호 181832
답변완료
예스트레이더 종목검색으로 요청합니다...
아래 수식은 키움에서 작성한 신호수식인데, 이것을 예스트레이더 종목 검색으로
변환요청 합니다...
x=sum((h+l+c)/3*v);
z=valuewhen(1, date !=date(1), x(1));
x1=sum(v);
z1=valuewhen(1, date !=date(1), x1(1));
VWAP=(x-z)/(x1-z1);
RSI_VWAP=
sum(if(VWAP-VWAP(1)>0, VWAP-VWAP(1),0),17)/sum(if(VWAP-VWAP(1)>0,VWAP-VWAP(1),VWAP(1)-VWAP),17)*100;
Crossup(RSI_VWAP, 20)
2024-07-24
921
글번호 181831
답변완료
지표변환 부탁드립니다
수식1
if((high+low)/2<=close,volume,0)
수식2
A1=(high-close)/(high-low);
if((high+low)/2<=close,volume*A1,0)
수식3
if((high+low)/2>close,volume,0)
수식4
B1=(close-low)/(high-low);
if((high+low)/2>close,volume*B1,0)
2024-07-24
844
글번호 181830
답변완료
문의드립니다.
늘 고맙습니다.
식을 만드는데 도저히 해결이 안되는 부분이 있습니다. 꼭 해결방법 부탁드립니다.
#1. 시스템식에서 조건을 변경을 해도 신호가 나오는 것이 똑같은 경우가 꽤 있습니다. 식이 틀렸나 하고 다시 작성하거나 로그인 다시해도 전혀 바뀌지를 않습니다. 전에 접속하셔서 해결해주셨는데 어떻게 해야하는지 잘 모르겠습니다. 부탁드립니다.
#2. 위 1번 질문의 한 예입니다. 현재 해결을 못하고 있습니다.
제 차례가 다가오는 것 같아 다시 수정해서 돌려보니 전혀 다른 자리에 선긋기가 되고 있습니다. 식을 수정하고 뭔가 다른 조치를 취해야 되는 것 같네요. ㅠㅠ
input : StartTime1(170000),EndTime1(190000);
input : StartTime2(190000),EndTime2(240000);
input : StartTime3(240000),EndTime3(040000);
input : StartTime4(040000),EndTime4(060000);
var : Tcond1(false),Tcond2(false),Tcond3(false),Tcond4(false);
#############################################################################
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond1 = true;
}
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
{
Tcond1 = False;
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime2) or
(sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then
{
Tcond2 = true;
}
if (sdate != sdate[1] and stime >= EndTime2) or
(sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then
{
Tcond2 = False;
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime3) or
(sdate == sdate[1] and stime >= StartTime3 and stime[1] < StartTime3) Then
{
Tcond3 = true;
}
if (sdate != sdate[1] and stime >= EndTime3) or
(sdate == sdate[1] and stime >= EndTime3 and stime[1] < EndTime3) Then
{
Tcond3 = False;
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime4) or
(sdate == sdate[1] and stime >= StartTime4 and stime[1] < StartTime4) Then
{
Tcond4 = true;
}
if (sdate != sdate[1] and stime >= EndTime4) or
(sdate == sdate[1] and stime >= EndTime4 and stime[1] < EndTime4) Then
{
Tcond4 = False;
}
if tcond2 and 조건1 and 조건2 then
{
a1=1;
a1i1=index;
a1매수=O;
}
if a1==1 and index-a1i1<50 and tcond3 and L<a1매수 then
{
a1=2;
buy("a1매수",atlimit,a1매수);
# 위를 저장하고 아래와 같이 실행을 해보면 차트전체가 모두 노란줄이 그어집니다.
# 또 tcond2 대신에 tcond3으로 바꾸면 아무줄도 생기지 않습니다.
# 13개를 다른 시간대로 설정했는데 2와 3 두개만 이상한 현상이 생깁니다.
if tcond2 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Yellow);
TL_SetSize(Value98,1);
}
#3. 5분봉으로 본장 시작전과 후의 봉을 저장하려고 합니다.
sTime을 사용해보니 아래 선긋기가 나오지 않습니다.
Time을 사용하니 선긋기는 나옵니다.
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Yellow);
TL_SetSize(Value98,1);
그러면 Time을 써서 아래와 같이 식을 작성하면 괄호안의 내용들을 그 캔들 번호에 저장이 되는건가요?
if Time == 083000 Then
{
진폭프리장=DayHigh-DayLow; #당일 프리장까지의 진폭
저점프리장=DayLow; #당일 프리장까지의 저점
고점프리장=DayHigh; #당일 프리장까지의 고점
O프리장=O; #프리장 마지막 캔들의 시가
C프리장=C; #프리장 마지막 캔들의 종가
}
if Time==083500 and 조건1 Then
{
b14=1;
b14i1=Index;
}
if b14==1 and Time==083500 and 조건2 Then
{
b14=2;
b14i2=Index;
b14매수=저점프리장-진폭프리장; #프리장저점부터 프리장진폭만큼 빠진 자리.
}
if b14==2 and Index-b14i2<=5 and L<b14매수 Then
{
b14=3;
#이 자리에서 선긋기를 하면 선긋기는 되는데 매수 실행이 안되는 경우가 있습니다.
이유가 'L<b14매수'가 완성된 종가 이후 다시 그 자리에 가지 않아서인가요? 바로 진
입이 되게 하려면 'L<b14매수'를 넣으면 안되는건가요?
Buy("b14매수",AtLimit,b14매수);
}
2024-07-25
791
글번호 181829
답변완료
문의 드립니다
안녕하세요
다음 키움지표을 예스로 전환하고자합니다
타점신호매수
m=tema(c,k);
a=if(m(1)<m,m,0);
aa=if(m(2)>m(1),m(1),0);
c>m && ((a && aa) or (a(1) && aa(1)))
==================================
타점신호매도
m=tema(c,k);
a=if(m(1)>m,m,0);
aa=if(m(2)<m(1),m(1),0);
c<m && ((a && aa) or (a(1) && aa(1)))
===========================
지표설정
k 10
감사합니다
2024-07-24
880
글번호 181828
답변완료
질문 3가지 드립니다
질문 1)
input : P(5);
var: cnt(0), a1(0) , a2(0);
a1 = 0;
For cnt = 0 to P-1
{
if a1 == 0 or (a1 > 0 and DayLow(cnt) < a1) Then
a1 = DayLow(cnt);
}
이 식은 분봉에서 daylow 를 구하는 식인데 반대로 dayhigh 를 구하려면 식을 어떻게 작성하면 될까요?
a2=0;
For cnt = 0 to P-1
{
if a2 == 0 or (a2 > 0 and dayhigh(cnt) < a2) Then
a2 = dayhigh(cnt);
}
이렇게 해봤는데 제대로 나오지가 않네요
수식에 대해서 이해도가 없어서 응용이 안되는데 간략하게 로직을 설명을 해주실 수 있을까요
a1=0;
For cnt = 0 to P-1
{if a1 == 0 or (a1 > 0 and DayLow(cnt) < a1) Then
a1 = DayLow(cnt);}
cnt =0 to p-1 이 부분은 봉을 세는 수식인가요?0 부터 5-1=4 까지 5봉이라는 의미인거 같고
if 문에서 부터 몇 번 읽어봐도 잘 해석이 안됩니다
질문2)
위의 식을 편집기에서 고치고 "검증"을 눌러 바로 반영되게 하려고 하는데요, input 에서 선언된 변수들은 수정해도 반영이 안되고 차트상에서 변수 편집을 해야되네요.
편집기에서 바로 반영 하려면 var1=5; 을 선언하고 하니까 되는데 이 방법말고 input 에는 p(5) 라고 해놓고 별도로 p=10; 이라고 값을 다시 정의하면 "값을 대입할 수 잇는 변수나 배열의 요소가 와야합니다" 라고 에러가 나옵니다. input 에서 선언된 변수는 이런식으로는 수정 후 반영이 안되나요?~
질문3)
분봉에서 혹시 틱 단위 (체결 횟수)를 설정하고 틱 갯수를 표현하는 식을 작성 할 수 있나요?
예를 들면 분봉차트 일정 구간에서 (3일동안) 100틱의 총갯수가 50개 이하로 나온 구간을 찾고 그 3일간의 최고가를 불러오는 식으로 만들고 싶은데 구현이 가능할까요??
답변 주시면 감사하겠습니다 ~
2024-07-24
843
글번호 181827
답변완료
거래량 음봉 돌파
거래량(음봉)의 고점을 거래량(양봉)이 돌파했을 때 진입하는 수식 요청드립니다.
1. 선행조건1 : 거래량(음봉) 연속 2개 발생 (only 2개)
2. 선행조건2 : 거래량(양봉) 연속 2개 발생 (only 2개)
* 음봉음봉양봉양봉(4개)만 해당
3. 진입조건 : 양봉에서 작은 봉의 고점 > 음봉에서 큰 봉의 고점
if 선행조건1 and 선행조건2 and 진입조건 then
buy();
*당일 발생봉부터 계산한다는 조건을 포함해 주십시요.(전일발생봉 배제)
항상 고맙습니다.
2024-08-01
988
글번호 181826
답변완료
파라볼릭 쌍바닥 조건
Input : af(0.02), maxAF(0.2);
var :cSarv(0), T(0),B(0),S(0),tx(0),HH(0),LL(0),box(0),TL(0);
var : Z(0),dd(0),tt(0);
var1 = CSar(af,maxAF);
plot1(var1, "CSAR",IFF(c>var1,Red,Blue));
cSarv = csar(af,maxAF);
If crossup(c,cSarv) Then
{
var1 = cSarv;
Var2 = var1[1];
if var1 <= var2+PriceScale*2 and var1 >= var2-PriceScale*2 and var2 > 0 Then
{
Tx = Text_New(sDate,sTime,var1-0.05,"●");
Text_SetColor(Tx,Magenta);
Text_SetStyle(Tx,2,2);
Text_SetSize(Tx,15);
}
}
If CrossDown(c,cSarv) Then
{
var3 = csarv;
Var4 = var3[1];
if var3 <= var4+PriceScale*1 and var3 >= var4-PriceScale*1 and var4 > 0 Then
{
Tx = Text_New(sDate,sTime,var3+0.05,"●");
Text_SetColor(Tx,Blue);
Text_SetStyle(Tx,2,2);
Text_SetSize(Tx,15);
}
}
var5 = CSar(af,maxAF);
if CrossUp(C,var5) Then
{
T = 1;
B = var5;
HH = H;
dd = sDate;
tt = sTime;
box = Box_New(sDate,sTime,B,NextBarSdate,NextBarStime,HH);
}
if CrossDown(C,var5) Then
{
T = -1;
S = var5;
LL = L;
dd = sDate;
tt = sTime;
box = Box_New(sDate,sTime,S,NextBarSdate,NextBarStime,LL);
}
if T == 1 Then
{
if var5 < B Then
{
B = var5;
box_SetBegin(box,dd,tt,S);
}
if H > HH Then
HH = H;
Box_SetEnd(box,NextBarSdate,NextBarStime,hh);
if HH < B+0.6 Then
{
Box_SetColor(box,Orange);
Box_SetFill(box,true,120);
}
Else if HH >= B+0.6 and HH < B+0.8 Then
{
Box_SetColor(box,Gray);
Box_SetFill(box,true,80);
}
Else if HH >= B+0.8 and HH < B+1.3 Then
{
Box_SetColor(box,Magenta);
Box_SetFill(box,true,60);
}
Else if HH >= B+1.3 and HH < B+1.9 Then
{
Box_SetColor(box,Gray);
Box_SetFill(box,true,60);
}
Else
{
Box_SetColor(box,Pink);
Box_SetFill(box,true,90);
}
}
if T == -1 Then
{
if var5 > S Then
{
S = var5;
box_SetBegin(box,dd,tt,S);
}
if L < LL Then
LL = L;
Box_SetEnd(box,NextBarSdate,NextBarStime,LL);
if LL > S-0.6 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,150);
}
Else if LL <= S-0.6 and ll > S-0.8 Then
{
Box_SetColor(box,Yellow);
Box_SetFill(box,true,150);
}
Else if LL <= S-0.8 and ll > S-1.3 Then
{
Box_SetColor(box,Lime);
Box_SetFill(box,true,120);
}
Else if LL <= S-1.3 and ll > S-1.6 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,90);
}
Else if LL <= S-1.6 and ll > S-1.9 Then
{
Box_SetColor(box,Blue);
Box_SetFill(box,true,30);
}
Else
{
Box_SetColor(box,Yellow);
Box_SetFill(box,true,120);
}
}
쌍바닥 쌍봉 수식에 단순하게 박스 수식을 더했더니, 쌍바닥에 오류가 많이 나옵니다.
수정 부탁 드립니다.
추가로 쌍바닥 쌍봉 조건을,
직전 100개 봉의 최고가에서, 0.8 아래에서만 동그라미 표시로 수정. (H100-0.8)
쌍봉은 반대로 직전 100개 봉의 최저가에서, 0.8 위에서만 쌍봉일 때 표시. 감사합니다.
2024-07-24
955
글번호 181825
답변완료
Data2 혼용시 텍스트 출력함수 문의드립니다.
안녕하세요! ㅇ ㅅㅇ//
사진첨부 내용과 같이
기본차트 : 60틱
Data2 : 1분
<틱차트&분차트>가 혼용된 상태에서 문서상 "Data2"를 사용하면 ,
2번사진과 같이 [ text_delete( ) ]에 대한부분이 이상해져서 문의 드립니다.
참조데이터(Data2)를 사용 하더라도
1번사진과 같이
"예문"을 가장 최근캔들에만 나오게 하려면
어떻게 문서를 작성하여야 하는지 궁금합니다!
매번 도움 주셔서 감사합니다! ㅠ ㅅㅠ //
#------------------↓사용된지표식↓------------------#
var : 가정a(0);
가정a = C;
/*
var : 가정a(0,Data2);
가정a = Data2(C);
*/
var : tx(0);
text_delete(tx);
tx = text_New( Sdate , Stime , c , "예문" );
Text_SetStyle( tx , 0, 0); //←글자위치
Text_SetSize( tx , 12); //←폰트크기
Text_SetBold( tx , 1); //←폰트굵기
Text_SetColor( tx , Black ); //←문자색깔
#------------------↑사용된지표식↑------------------#
2024-07-24
776
글번호 181824