커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7773
글번호 230811
답변완료
빠른답변 감사합니다.
쎄타값 구하는 것도 오류가 뜹니다.
수식입니다.
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),vol(numeric);
var:Exp(2.71828182846);
var1 = (log(S/X) + (r + (vol^2) / 2)*T) / (vol*sqrt(T));
var2 = var1 - vol*sqrt(T);
var3 = (1 / Sqrt(2 * pie())) * (1 / Exp^((var1^2) / 2));
if cpflag == 1 then
_Theta = (-1)*(S * vol * var3)/(2*Sqrt(T)) - r * X * Exp^((-r)*T) * _NormSDist(var2);
if cpflag == 2 then
_Theta = (-1)*(S * vol * var3)/(2*Sqrt(T)) + r * X * Exp^((-r)*T) * (1-_NormSDist(var2));
_Theta = _Theta / 365;
이것도 맨 마지막 줄이 함수 리턴값은 조회할 수 없다고 하는데요 수정좀 부탁합니다.
2009-04-22
1001
글번호 21851
나라한 님에 의해서 삭제되었습니다.
2009-04-22
0
글번호 21847
답변완료
다시 문의 드릴께요.
아래 질문에서 수정해 주신 지표식을 적용해 보니까, 챠트 아래 부분에 지표가 현출되는데요.
챠트 내에서 직접 점으로 전고점, 전저점을 표현할 방법은 없나요?
이 지표 말고 다른 지표도 만들어 보면, 출력함수인 plot로 작성시에 항상 챠트 아래 부분에 지표가 구현되는데, 챠트 내에서 표시할 수 있는 출력함수는 없나요?
input:n(5),미완성사용(true);
var:j(0),k(0),고점표시(0),저점표시(0);
array:고[20](0),저[20](0),고bar[20](0),저bar[20](0),
고idx[20](0),저idx[20](0);
#=========================================================#
# 초기처리 (initialize routine)
#=========================================================#
# index()와 마찬가지로 1봉이 바뀔 때마다 1씩 증가
#---------------------------------------------------------#
for j = 1 to 19 {
저bar[j] = 저bar[j] + 1;
고bar[j] = 고bar[j] + 1;
고idx[j] = index - 고bar[j];
저idx[j] = index - 저bar[j];
}
고점표시=(o[n]+c[n])/2;
저점표시=(o[n]+c[n])/2;
#=========================================================#
# 주처리 (Main Routine) 파동선 계산
#=========================================================#
# 전고점(peak) 계산
#---------------------------------------------------------#
//Highest(H,2)[3] <= H[2] && H[2] > Highest(H,2)
if Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) then {
if 미완성사용 == true then {
for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다
고[j+1] = 고[j];
고bar[j+1] = 고bar[j];
고idx[j+1] = 고idx[j];
}
고[1] = h[n];
고bar[1] = n;
고idx[1] = index - 고bar[1];
고점표시 = 고[1]*1.005;
if 저bar[1] > 고bar[2] then {
for j = 18 downto 1 {
저[j+1] = 저[j];
저bar[j+1] = 저bar[j];
저idx[j+1] = 저idx[j];
}
k = n + 1;
for j = n + 2 to 고bar[2]-1 {
if l[k] > l[j] then k = j;
}
저[1] = l[k];
저bar[1] = k;
저idx[1] = index - 저bar[1];
}
}
if 미완성사용 == false then {
if 고bar[1] > 저bar[1] then { //고-저-고 순서로 나올 때
for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다
고[j+1] = 고[j];
고bar[j+1] = 고bar[j];
고idx[j+1] = 고idx[j];
}
고[1] = h[n];
고bar[1] = n;
고idx[1] = index - 고bar[1];
고점표시 = 고[1]*1.005;
} //저-고-고 순서로 발생했을때
else if 고[1] <= h[n] then { //이전고점보다 높으면
고[1] = h[n]; //고점[1]만 바꿔준다. 저-고 순서 유지
고bar[1] = n;
고idx[1] = index -고bar[1];
고점표시 = 고[1]*1.005;
}
}
}
#---------------------------------------------------------#
# 전저점(trough) 계산
#---------------------------------------------------------#
//Lowest(L,2)[3] >= L[2] && L[2] < Lowest(L,2)
if Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) then {
if 미완성사용 == true then {
for j = 18 downto 1 {
저[j+1] = 저[j];
저bar[j+1] = 저bar[j];
저idx[j+1] = 저idx[j];
}
저[1] = l[n];
저bar[1] = n;
저idx[1] = index - 저bar[1];
저점표시 = 저[1]*0.995;
if 고bar[1] > 저bar[2] then {
for j = 18 downto 1 {
고[j+1] = 고[j];
고bar[j+1] = 고bar[j];
고idx[j+1] = 고idx[j];
}
k = n + 1;
for j = n + 2 to 저bar[2]-1 {
if h[k] < h[j] then k = j;
}
고[1] = h[k];
고bar[1] = k;
고idx[1] = index - 고bar[1];
}
}
if 미완성사용 == false then {
if 저bar[1] > 고bar[1] then {
for j = 18 downto 1 {
저[j+1] = 저[j];
저bar[j+1] = 저bar[j];
저idx[j+1] = 저idx[j];
}
저[1] = l[n];
저bar[1] = n;
저idx[1] = index - 저bar[1];
저점표시 = 저[1]*0.995;
}
else if 저[1] >= l[n] then {
저[1] = l[n];
저bar[1] = n;
저idx[1] = index - 저bar[1];
저점표시 = 저[1]*0.995;
}
}
}
#---------------------------------------------------------#
# 변곡점의 점 표시
#---------------------------------------------------------#
if 고점표시 > h[n] then plot1(고점표시,"전고점",RED); //점그래프
if 저점표시 < l[n] then plot2(저점표시,"전저점",BLUE); //점그래프
#---------------------------------------------------------#
# 파동선 표시
#---------------------------------------------------------#
if 고bar[1]==n and 고[1] > 0 then plot3(고[1]); //선그래프
if 저bar[1]==n and 저[1] > 0 then plot3(저[1]); //선그래프
if 저bar[1]==n and 저[1] > 0 then plot4(저[1]); //선그래프
if 고bar[1]==n and 고[1] > 0 then plot4(고[1]); //선그래프
2009-04-22
1188
글번호 21846
답변완료
주문관련 질문드립니다.
안녕하세요.
항상 수고가 많으십니다.
미리 감사드립니다.
if c>o and data2(c)>data2(o) then buy();
if MarketPosition == 1 Then{
SetStopLoss(1,PointStop);
SetStopTrailing(50,1,PercentStop,0);
1.
위의 식에서
손절과 트레일링스탑이 주종목에서가 아니고 참조종목에서 만족시킬때
즉시 주문이 나가게 하고 싶습니다.
즉,
참조종목이 1포인트 손실이되면,
참조종목이 1% 50%되돌리면
주종목에서 곧바로 주문나가게 하고 싶습니다.
참조종목의 봉완성이 이루어지기전에 실시간으로 말입니다.
주종목과 참조종목의 시간주기는 같은 봉입니다(1분봉).
시뮬레이션말고 실제 매매에서만 적용이 되면 됩니다.
만약 참조종목의 봉이 완성되어야만 주문이 나간다면
제가 의도하는 바에 근접하는 다른 대안이 있으면 조언부탁드립니다.
이게 안되면 손으로 직접 주문을 클릭해야 할 것 같아서입니다.
2.
위의 식에서
SetStopLoss(1,PointStop);
SetStopTrailing(50,1,PercentStop,0);
이부분을 참조종목 조건으로 수식 변경을 부탁드립니다.
3.
예스트레이더의 주문기능중에
특정시각이 되면 가지고 있는 포지션을 청산하는 주문 기능이 있는지 궁금합니다.
아니면, 포지션이 있는 경우(기존의 진입조건에 의해 진입한 것과 관계없이)
특정시각에 무조건 청산주문이 나가게 시스템식을 작성할 수 있는지도 궁금합니다.
이 부분은 첫번째 질문드린 참조종목 조건 만족시 즉시 주문체결이 안될 경우에
시스템트레이딩이 아닌 손으로 주문내는 어려움때문에 여쭤봅니다.
4.
선물매매시 반대진입신호가 발생될때 두배의 증거금이 필요한데
얼마전 교육에서 시간차를 두고 주문이 나가게 해서 두 배의 증거금이 필요하지
않도록 할 예정이라고 말씀해주셨는데 진행이 어떻게 되는지 궁금합니다.
항상 감사드립니다...
2009-04-22
1072
글번호 21840
답변완료
수식 수정 좀 부탁드립니다.
게시판 글 참조해서 아래 수식을 검증해 보니까 제가 원하는 지점에서 매수, 매도가 나오질 않네요.
첨부파일 참조해서 수정 좀 부탁드립니다.^^
input : maP(5),Left(3),Right(1),Period(100),N(50);
var1 = SwingLow(1,ma(c,maP),Left,Right,Period); ##최근 저점
var2 = SwingLow(2,ma(c,maP),Left,Right,Period); ##직전 저점
var3 = SwingLowBar(1,ma(c,maP),Left,Right,Period); ## 최근 저점 발생시점
var4 = SwingLowBar(2,ma(c,maP),Left,Right,Period); ## 직전 저점 발생시점
var5 = SwingHigh(1,ma(c,maP),Left,Right,Period); ##최근 고점
var6 = SwingHigh(2,ma(c,maP),Left,Right,Period); ##직전 고점
var7 = SwingHighBar(1,ma(c,maP),Left,Right,Period); ## 최근 고점 발생시점
var8 = SwingHighBar(2,ma(c,maP),Left,Right,Period); ## 직전 고점 발생시점
## 쌍바닥
if MarketPosition==0 and
sTime>090000 and sTime<=144000 and
var1 > 0 and var2 > 0 and ## 최근저점, 직전저점 발생했음.
var1 > var2 and ## 최근 저점이 직전저점대비 높음.
var3 <= right and ## 최근저점 발생시점 right변수 이전
var4 <= var3+N Then ## 직전저점과 최근저점의 간격은 N봉이내
buy();
# 쌍봉
if MarketPosition==0 and
sTime>090000 and sTime<=144000 and
var5 > 0 and var6 > 0 and ## 최근고점, 직전고점 발생했음.
var7 < var8 and ## 최근 고점이 직전고점대비 작음.
var7 <= right and ## 최근고점 발생시점 3~6개봉 이내
var8 <= Var7+N Then ## 직전고점과 최근고점의 간격은 N봉이내
Sell();
//청산
SetStopEndofday(144500);
2009-04-22
1154
글번호 21838
답변완료
수고하십니다.
수식지왕님께서 작성하신 표준정규분포 사용자 함수가 있어서 제가 해 보았습니다.
수식은 다음과 같습니다.
input:z(numeric);
var : a1(0.31938153),
a2(-0.356563782),
a3(1.781477937),
a4(-1.821255978),
a5(1.330274429),
R(0.2316419),
Exp(2.71828182846),
k(0),
N(0);
k = 1 / (1 + (R * Abs(z)));
N = 1 / (Sqrt(2 * Pie())) * Exp^(-(z^2) / 2);
_NormSDist = 1 - N * (a1 * k + a2 * (k^2) + a3 * (k^3) + a4 * (k^4) + a5 * (k^5));
If z <0 Then
_NormSDist = 1 - _NormSDist;
검증을 하려고 하면 맨 마지막 줄이 문제라고 뜨면서 현재 시점의 함수 리턴값은 조회할 수 없습니다. 라고 뜹니다.
무엇이 문제일까요 조속한 답변 기대합니다. 감사합니다.
2009-04-22
1213
글번호 21837
답변완료
수고하십니다
대신증권의 차트설정에서 가격지표에 있는 차트 box 지표
식으로 좀 부탁 드립니다
메일로 좀 주셨으면 합니다
cosric@naver.com
언제나 늘 감사드립니다
2009-04-22
1051
글번호 21836
답변완료
10469 답변 부탁드립니다.(내용무)
...
2009-04-22
1063
글번호 21835
답변완료
문의드립니다
분차트에서 세개의 이평(60, 90, 120)배열 6가지중 가장 아래에 있는 이평을
20 이평이 3봉이내 돌파한 경우의 수식을 알고자 합니다.
(3개의 이평배열 6가지를 하나의 수식으로 표현하고자 합니다)
예) 만약 90>120>60 이평순일때 가장 아래에 있는 60 이평을 20>60 돌파 3봉이내
2009-04-21
984
글번호 21834