커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7843
글번호 230811
답변완료
문의 드립니다..
두개의 청산식이 있습니다..
그중 하나는 청산후에 봉 5개 이내에서 조정을 줄때 재진입하려고 합니다..
input:period(10);
# 매수
If marketposition() != 1 then {
if CrossUP(c, ma(c,20)) Then
{ Buy("B"); }
if CrossUP(ma(c,5), ma(c,10)) Then
{ buy("BB");}
}
# 매도
If marketposition() != -1 then {
if Crossdown(c, ma(c,20)) Then
{ sell("S"); }
if Crossdown(ma(c,5), ma(c,10)) Then
{ sell("SS");}
}
#청산
If CrossDown(ma(c,10),ma(c,20)) Then
{ Exitlong("el"); }
If CrossUP(ma(c,10),ma(c,20)) Then
{ Exitshort("es"); }
If marketposition()==1 and crossdown(c,ma(c,5)) then
{ Exitlong("과매수청산"); var1=1 ; }
If marketposition()==-1 and crossup(c,ma(c,5)) then
{ Exitshort("과매도청산"); var1=-1 ; }
#재진입
if marketposition()==0 and exitprice()<5 and var1==1 then
{buy("1",atlimit,ma(c,period)); }
if marketposition()==0 and exitprice()<5 and var1==-1 then
{sell("2",atlimit,ma(c,period)); }
위의 청산식중 과매도청산과 과매수청산에 해당하면 재진입식으로 재진입하려고
하는데요,
의도한대로 신호가 되지 않습니다..
신호가 뒤죽박죽이 됩니다..
과매도청산후에만 재진입매수를, 과매도청산한 후에만 재진입매도를 할 수 있게
부탁드립니다..
감사합니다..
2005-08-12
1098
글번호 7986
답변완료
수식문의
안녕하세요!!! 수식을 작성하다가 궁금한 점이 있어 문의 드립니다.
1. 소수점 표현에 관하여
가. 챠트나 화면에 보이는 주가 및 숫자는 소수점 2자리까지 보이는데 이 자료를
이용하여 계산할때도 화면에 보이는 소수점 2자리 자료를 그대로 사용합니까?
나. 수식을 이용하여 주가나 이평선 값을 곱하기, 나누기등의 계산할 때는 소수점
몇째자리까지 계산 하는지, 혹시 반올림을 하면 어떤 방식으로 반올림을 처리
는 합니까?(이때 계산된 값도 화면에는 소수점 2자리만 보입니다. 실제 데이타
저장은 어떤 형태로 하는지?)
2. CrossUp에 관하여
예제) 실제 화면에 보이는 데이타 값을 표시(데이타 시간은 정확하지 않습니다.)
시 간 09:00 09:30 10:00 10:30 11:00 11:30 12:00 12:30
데이타A 110.25 110.25 110.25 110.25 110.25 110.25 110.25 110.40
데이타B 109.85 109.97 110.20 110.25 110.25 110.25 110.25 110.25
UpCnt 10 11 12 ? ? ? ? ?
DownCnt 0 0 0 ? ? ? ? ?
-수식 중 일부
crossup(A, B) then
Pos = 1;
crossDown(A, B) then
Pos = -1;
if Pos == 1 then
{
UPCnt = UpCnt + 1;
DownCnt = 0;
}
if Pos == -1 then
{
DownCnt = DownCnt + 1;
UpCnt = 0;
}
- 09:00 상태가 Pos == 1 상황이며, UpCnt가 "10"이라고 가정하면
가. 10:30 부터 12:00 까지의 Pos 값은 ?
나. 10:30 부터 12:00까지 UpCnt와 DownCnt의 결과값은?
다. 12:30에는 CrossUp(A,B)가 신규로 나타나는 것입니까?
신규로 크로스업이 나타나면 UpCnt = 1, DownCnt = 0 이 되는 것입니까?
라. 수식 문의
1) 위의 예제에서 10:30부터 데이타값이 같아지면 이전에 Pos상태를 따르고
10:00 10:30 11:00 11:30 12:00 12:30
UpCnt 12 13 14 15 16
DownCnt 0 0 0 0 0
2) 위의 예제에서 12:30에 CrossUp이되더라도 데이타값이 같아지기 이전에
크로스업 상태라면 12:30의 신규 크로스업을 이전의 크로스업의 연장
으로 계산하고 싶습니다.
10:00 10:30 11:00 11:30 12:00 12:30
UpCnt 12 13 14 15 16 17
DownCnt 0 0 0 0 0 0
3) 만약에 12:00까지 같은 데이타 12:30에 CrossDown이 된다면 12:30부터는
신규 CrossDown으로 계산하고 싶습니다.
10:00 10:30 11:00 11:30 12:00 12:30
UpCnt 12 13 14 15 16 0
DownCnt 0 0 0 0 0 1
4) 수식 문의를 정리하면
가) 업상태가 유지되다가 데이타값이 같아지면 -> 업으로 유지
가-1) 데이타 값이 계속 같으면 -> 계속 업 유지
가-2) 데이타 값이 몇개가 같아지다가 신규 업이 되면 -> 기존 업을
유지을 유지하면 신규 CrossUp으로 계산하지 않음. 이때
수식에 CrossUp이 있으면 신규 CrossUp으로 계산할 것 같은데..?
가-3) 데이타 값이 몇개가 같아지다가 신규 다운이 되면 ->
다운으로 계산
나) 다운은 업을 역으로 계산하면 될것 같습니다.
정리가 잘 되지 않아 질문 내용이 장황하고 길어졌습니다. 부탁드립니다.
2005-08-12
913
글번호 7984
답변완료
미완성(예비) 신호시 주문이 나가도록하는 방법 을 다시 알려 주세요.
안녕하세요.
몇일전 같은 질문을 드렸던 사람입니다.
제가 알고 싶어하는 것은 예비신호(미완성 신호)가 생기자마자 봉의 완성전에
바로 주문이 나가는 것을 원합니다.
예전에는 자동 주문에는봉의 완성 과 비완성 으로 선택할수 있었는데
지금은 봉이 완성되야지만 나갈수 있게 되었더군요.
atstop도 신호가 완성된후 (봉이 완성된후) 주문이 나가는것 같은데요.
제가 알고자하는 것은 예비신호가되면 봉이 완성되지않아도 바로 주문이
나가는 방법입니다.
다시 한번부탁드립니다.
수고하세요.
2005-08-11
983
글번호 7978
답변완료
문의
수식은 분챠트 수식입니다
if dayopen()>=dayclose(1)*1.005
&&dayopen()<dayclose(1)*1.05
&& C>dayOpen()
and DayClose(1) < DayClose(2)
Then
if date != entrydate(0) and date != entrydate(1) then
buy();
일봉상 연속 이틀동안 음봉 이면 매수금지
수식 부탁드립니다 ^^
&& 형식으로 쓸수있게 해주세요 ^
2005-08-11
1004
글번호 7975
답변완료
지표식 문의드려요
안녕하세요!!
SDK 지표식을 알려주세요!!
감사합니다^^!
2005-08-11
1151
글번호 7972
답변완료
풋/콜 레이쇼 지표, 외국인 보유률 지표 문의
안녕하세요.
일부 증권사에서 제공하는 풋/콜 레이쇼 지표에 대한 문의입니다.
현재 지표로는 제공하지않으나 개인+기관+외국인의 풋과 콜 거래량은
참조데이타로 제공하므로 이를 지표화하여 제공가능하다고 생각됩니다.
증권방송에서 고변호사가 비슷한 지표를 쓰는 것 같아요.
풋/콜레이쇼 지표를 부탁합니다.
그리고 어지간한 증권사는 다 제공하는 외국인 보유률지표(cj증권의 cykan에서도
제공하고 있음)는 예스트레이더에서는 왜 제공하지 않는지 모르겠군요.
종목검색이나 분석시 필수적인 지표인데도 말이죠.
시스템트레이딩만 하고 다른 건 필요없다라고 하더라도 종목검색이나 분석도
타 시스템으로 하고 예스는 자동매매만 한다? 이거는 아닌 것 같아요.
외국인 보유률지표도 부탁합니다.
그럼 나날이 발전하는 예스를 바랍니다.
2005-08-11
1087
글번호 7970
자동추세선
자동추세선 수식을 보면
예비고, 예비저를 설정한 다음 스윙차트상에 그값이 실제 저점, 고점이 확정 되었을때
고점표시, 저점표시가 나타나도록 수식이 짜여 있습니다.
제가 알고 싶은것은 저점, 고점이 확정이 되고
계속해서 차트가 만들어지는 동안에
직전 저점표시 bar개수에서 고점표시 bar개수를 뺀 수를 N으로 하는
또는 직전 고점표시 bar개수에서 직전 저점표시 bar개수를 뺀 수를 N으로 하는
후행스팬을 만들고 싶습니다.
각각의 값을 value1, value2로 한다면
value1=close[저점표시bar-고점표시bar];
value2=close[고점표시bar-저점표시bar];
이 될거라고 생각하는데
물론 새로 고점표시 또는 저점표시가 되면 N값이 변할거구요.
이걸 기존의 자동추세선을 이용해서 어떻게 만들수 있습니까?
<자동추세선>
input:좌(5),우(5);
var:j(0),예비고(0),예비저(0),예비고bar(0),예비저bar(0),고점표시(0),저점표시(0),
고점추세선(0),저점추세선(0);
array:고[50](0),저[50](0),고bar[50](0),저bar[50](0);
#==============================================================================#
# 변곡점 계산
#==============================================================================#
if highest(h,좌)==h and iff(예비고bar<우,예비고<h,1) then
{
예비고=h;
예비고bar=0;
}
else
예비고bar=예비고bar+1;
if lowest(l,좌)==l and iff(예비저bar<우,예비저>l,1) then
{
예비저=l;
예비저bar=0;
}
else
예비저bar=예비저bar+1;
고점표시=(o[우]+c[우])/2;
저점표시=(o[우]+c[우])/2;
for j=1 to 49 begin
고bar[j]=고bar[j]+1;
저bar[j]=저bar[j]+1;
end;
if 예비고bar==우 then
{
if 저bar[1]>고bar[1] then
{
if 고[1]<예비고 then
{
고점표시=예비고*1.0005;
고[1]=예비고;
고bar[1]=예비고bar;
}
}
else
{
for j=49 downto 2 begin
고[j]=고[j-1];
고bar[j]=고bar[j-1];
end;
고점표시=예비고*1.0005;
고[1]=예비고;
고bar[1]=예비고bar;
}
}
if 예비저bar==우 then
{
if 고bar[1]>저bar[1] then
{
if 저[1]>예비저 then
{
저점표시=예비저*0.9995;
저[1]=예비저;
저bar[1]=예비저bar;
}
}
else
{
for j=49 downto 2 begin
저[j]=저[j-1];
저bar[j]=저bar[j-1];
end;
저점표시=예비저*0.9995;
저[1]=예비저;
저bar[1]=예비저bar;
}
}
#==============================================================================#
# 자동추세선 계산
#==============================================================================#
고점추세선 = 0;
for j = 2 to 49 begin
if 고[j] > 고[1] and 고점추세선 == 0 then
{
고점추세선=((고[1]-고[j])/(고bar[j]-고bar[1]))*고bar[j]+고[j];
}
end;
저점추세선 = 0;
for j = 2 to 49 begin
if 저[j] < 저[1] and 저점추세선 == 0 then
{
저점추세선=((저[1]-저[j])/(저bar[j]-저bar[1]))*저bar[j]+저[j];
}
end;
2005-08-11
1564
글번호 7969
답변완료
당일 값만 표시..
예시)
1. 옵션 당일 가격 만을 기준으로 저가대비 50%, 100% 상승가격을 선으로 미리 표시하고,
당일 가격만을 기준으로 고가대비 50%, 70% 하락가격을 선으로 미리 표시하려고 할 때 수식이 어떻게 되죠?
그리고, 이런 선은 당일 고가 갱신 혹은 저가 갱신할 때 자동으로 변화하겠죠.
2. 그리고 전일 시가, 고가, 저가, 종가를 당일에 미리 선으로 자동으로 선으로
표시해 놓고 보고 싶을 때 수식이 어떻게 되는지.
첨으로 예스를 이용해서 그러니 처음부터 입력하는 방법을 완전히 만들어서 보여주시면 감사하겠습니다.
2005-08-10
1423
글번호 7968
답변완료
어제까지 됐던 검색이 안되네요......
수고하십니다..
다름이 아니구요....
어제까지 검색이 됐던게 오늘 아침에 갑자기 "해당 데이타가 없습니다"라고 계속 나와서
너무 당황스럽더군요...(덕분에 오늘 매매하지도못하구요....)
원인을 분석해 본결과
제가 조건검색을 하는조건은
==> 5분봉기준으로 검색기간은 200 봉으로 기간을 잡고 했었습니다...
(기간을 길게 잡은건 제가 검색하는 조건이 좀 길어서 그렇습니다.)
당연히 어제까지는 검색이 됐었구요.....
제가 프로그램을 잘못했나 보닌까 이상은 없고...
그래서 기존 시스템상에 만들어 져 있던 다른 검색조건도 해봤지요....
초기의 정해진 값(예를 들어 MACD골든크로스 5분봉 기간 65)에는 검색이
되지만,
기간을 100이상으로 잡으면 이것도 역시 "해당 데이타가 없습니다"라고
나오더군요...
원인을 제가 잘못 잡은건지 빠른 답변 좀 부탁드리겠습니다.
제가 첨부터 안됐다면 이러지 않습니다.
어제까지 됐던게 안되닌까(그렇다고 프로그램 수정한것도 없는데......)
정말 답답합니다.....
수고하십시요.
2005-08-10
1445
글번호 7967