커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7484
글번호 230811
답변완료
안녕하세요?
시스템식 문의 드립니다.
If Data1(date!=date[1]) Then
cond= False;
If cond==False and C<= HH*0.15 and C>O and CountIF(CrossUp(mav1,mav2),250)==1 Then{
TT = H;
cond=True;
}
If cond==True and CrossUp(C,TT) Then{
Buy("1");
}
위 식에서 매수후 당일이든 다음날이든 청산을 했다고 가정할때
하루가 지나든 이틀이 지나든 위 조건이 만족한 상태가 이어지면서 + 또 다른 조건을 만족할때 다시 매수 하려 합니다.
즉 어떤 조건을 만족해서 이를 TT에 저장한후 저장한 날을 기준으로 며칠이 지나도
추가 조건을 넣어서 매수2,3,4 를 하려 합니다.
현재는 TT라고 저장한 조건은 맞지 않지만 전일에는 만족 했었고 또는 2일전에는 만족 했었고 ... 이런식이 되는겁니다.
설명을 제대로 했는지 모르겠습니다.
부탁드립니다.
2014-11-04
142
글번호 80091
답변완료
문의 드립니다
1. N일이내(N봉이내) 갭상승이발생하고 그 갭상승 캔들의 저가을 오늘(C) 돌파하는 종목검색식
2. N일이내(N봉이내) 갭하락이발생하고 그 갭하락 전캔들의 저가을 오늘(C) 돌파하는 종목검색식
1번 2번 자세히 보시면 수식의 개념의 차이가 있습니다 일봉기준으로 사용할겁니다
미리 감사 인사 드립니다 꾸벅
2014-11-04
191
글번호 80090
답변완료
비율표기 방법 문의 합니다.
var1 = H-L;
var2 = C-L;
var3 = var2/var1*100;
plot1(var3);
var4 = Text_New(sdate,stime,H+PriceScale,NumToStr(var3,2));
Text_SetStyle(var4,2,2);
위의 식이 일봉의 캔들에서 고가와 저가의 폭에서 종가의 위치를 비율로 표시하는 식으로 알고 있는데....
차트에서 마지막봉의 전봉에만 텍스트로 표시하는 식은 어떻게 되는지요...
차트가 너무 혼란스럽게 보여서요
2014-11-04
150
글번호 80089
답변완료
현재가 읽어들이기
var Data = [];
var Current = [];
function Main_OnStart()
{
Main.MessageLog("현재가, 시가총액 데이터 불러오기");
Start = 0;
for(var i=2; i<=152; i++)
{
Data[i] = Excel.GetData(1, "A"+i);
Current[i] = Data[i].current;
}
for(var i=2; i<=152; i++)
{
Excel.SetData(1,"B"+i,Current[i]);
}
Excel.Save();
Main.MessageLog("현재가, 시가총액 데이터 불러오기 완료");
}
엑셀에서 A줄에 있는 종목의 현재가를 스팟으로 읽어와서 B줄에 순서대로 입력시키고 나서
자동 저장 하게 싶은데 방법이 없을까요???
2014-11-04
255
글번호 80088
답변완료
부탁드립니다.
1.당일 1번째, 2번째, 3번째 봉들만의 최고점,최저점을 선으로 표시
2.당일 고점으로 부터 -1.2P를 선으로 표시
당일 저점으로 부터 +1.2P를 선으로 표시
3.전일 시,고,저,종가를 당일에 선으로 표시
2014-11-04
156
글번호 80083
답변완료
한번만 더 부탁드립니다.
정말 많은 도움이 되었습니다. 감사합니다.
만들어 주신 아래 서식을 Data2에 대해서 적용할 수 있도록 한번만 더 (수정) 부탁드립니다.
#==========================================#
# 지표명 : MACD다이버전스 MACD파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:P1(12),P2(26),MACD변동폭(0.02);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),MACD파동선(0),방향(0),MACDV(0),MACD추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
MACD고[20](0),MACD저[20](0),MACD고Bar[20](0),MACD저Bar[20](0);
MACDV = MACD(P1,P2);//MACD(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
MACD고Bar[j] = MACD고Bar[j] + 1;
MACD저Bar[j] = MACD저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If MACD고[0] <= MACDV || MACD고[0] == 0 || IsNaN(MACD고[0]) == True Then
{
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
Else
MACD고Bar[0] = MACD고Bar[0] + 1;
If MACD저[0] >= MACDV || MACD저[0] == 0 || IsNaN(MACD저[0]) == True Then
{
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
Else
MACD저Bar[0] = MACD저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If MACD저[0][1] + MACD변동폭 > MACDV[1] &&
MACD저[0][1] + MACD변동폭 <= MACDV Then 방향 = 상승;
If MACD고[0][1] - MACD변동폭 < MACDV[1] &&
MACD고[0][1] - MACD변동폭 >= MACDV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
MACD저[j+1] = MACD저[j];
MACD저Bar[j+1] = MACD저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
MACD고[j+1] = MACD고[j];
MACD고Bar[j+1] = MACD고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If MACD고[1] < MACD고[0] &&
MACD고[0][1] - MACD변동폭 <= MACDV[1] &&
MACD고[0][1] - MACD변동폭 > MACDV Then
{
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If MACD저[1] > MACD저[0] &&
MACD저[0][1] + MACD변동폭 >= MACDV[1] &&
MACD저[0][1] + MACD변동폭 < MACDV Then
{
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If MACD파동선[1] != MACD파동선 Then Plot1(MACD파동선,"MACD파동선",GREEN); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,MACD고[0],MACD저[0]),"MACD파동선",GREEN);
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
MACD저[2] < MACD저[1] Then
{
MACD추세선 = (MACD저[1]-MACD저[2])/(MACD저Bar[2]-MACD저Bar[1]) * MACD저Bar[2] + MACD저[2];
Plot2(MACD추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
MACD고[2] > MACD고[1] Then
{
MACD추세선 = (MACD고[1]-MACD고[2])/(MACD고Bar[2]-MACD고Bar[1]) * MACD고Bar[2] + MACD고[2];
Plot3(MACD추세선,"고점추세선",BLUE);
}
2014-11-04
210
글번호 80082
답변완료
수식 부탁드립니다.(2개)
일봉챠트 상에
1. 매수 조건
시초가 매수
2. 매도 조건
손절: 5%
매도: 스토캐스틱(10,6,6) 데드크로스
=====================================
1. 매수 조건
시초가 매수
2. 매도 조건
손절: 5%
매도: 스토캐스틱(20,12,12) 데드크로스
2014-11-04
164
글번호 80078
답변완료
여러개의 시스템 결과를 다시 조합하여 진입하고 싶습니다.
타임 주기 및 로직이 다른 별개의 시스템을 여러개 만들어
이들 시스템 결과를 다수결 등의 방법으로 합성하여
그 결과로서 실 진입을 하고자 합니다.
이렇게 할수 있는 방법이 있는지요.
기존 예스트레이더로 시스템들을 만들었는데 가능한지 궁금합니다.
2014-11-04
188
글번호 80074
답변완료
다시문의좀드려요~
1. 아래식으로 답변주셨는데요
참조2에서 참조3의 값을뺀 이평선으로 바꾸려는데 자꾸 오류가나서 부탁드리겠습니다.
var : VV(0,data2)
VV = data2(c)-data3(c); 이것만넣어주고 data2를 vv로 바꾸면될줄알았는데 안되네요 ㅎ
input : P1(5),P2(20),P3(60),N(5);
if data2(abs(ma(C,P1)- ma(C,P2)) <= PriceScale*N and ma(c,P1) <= ma(c,P2) and ma(c,P1) > ma(c,P1)[1]) Then{
plot1(H,"5선이20선밑에서상승");
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
if data2(abs(ma(C,P1)- ma(C,P2)) <= PriceScale*N and ma(C,P1) >= ma(c,P2) and ma(c,P1) < ma(c,P1)[1]) Then{
plot2(H,"5선이20선위에서하락");
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
if data2(abs(ma(C,P1)- ma(C,P3)) <= PriceScale*N and ma(c,P1) <= ma(c,P3) and ma(c,P1) > ma(c,P1)[1] ) Then{
plot3(H,"5선이60선밑에서상승");
PlaySound("C:₩예스트레이더₩data₩Sound₩stop.wav");
}
if data2(abs(ma(C,P1)- ma(C,P3)) <= PriceScale*N and ma(c,P1) >= ma(c,P3) and ma(c,P1) < ma(c,P1)[1]) Then{
plot4(H,"5선이60선위에서하락");
PlaySound("C:₩예스트레이더₩data₩Sound₩stop.wav");
}
2. 거래량이 만이상인 캔들이 음봉이면 시가에 파란색 수평선을
거래량이 만이상인 캔들이 양봉이면 시가에 빨간색 수평선을 그어서 몇일전꺼라도 나타내게 표시하고 싶은데 가능할까요?
점심 맛있게드세요~
2014-11-04
138
글번호 80073