커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7542
글번호 230811
답변완료
문의 합니다...
항상 고생 많으십니다...^^
아래것을 지표로 쓸수 있도록 부탁드립니다...^^
_NormSDist.yfu (표준정규분포사용자함수)
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;
_BlackSholes.yfu (BS 모델이론가 사용자함수)
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric);
var:Exp(2.71828182846);
var1 = (log(S/X) + (r + (Sig^2) / 2) * T) / (Sig*sqrt(T));
var2 = var1 - Sig*sqrt(T);
if cpflag == 1 then
{
_BlackSholes = S * _NormSDist(var1) - X * (Exp^((-r)*T)) * _NormSDist(var2);
}
else if cpflag == 2 then
{
_BlackSholes = X * (Exp^((-r)*T)) * _NormSDist(var2) - S * _NormSDist(var1);
}
_ImVol.yfu (내재변동성 사용자함수)
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Price(numeric);
var:vLow(0), vHigh(0), vi(0),cLow(0), cHigh(0), Epsilon(0.001), j(0), n(5000);
vLow = 0.01;
vHigh = 2;
cLow = _BlackSholes(cpFlag, S, X, T, r, q, vLow);
cHigh = _BlackSholes(cpFlag, S, X, T, r, q, vHigh);
vi = vLow + (Price - cLow) * (vHigh - vLow) / (cHigh - cLow);
for j = 0 to n
{
If _BlackSholes(cpFlag, S, X, T, r, q, vi) < Price Then
vLow = vi;
Else
vHigh = vi;
cLow = _BlackSholes(cpFlag, S, X, T, r, q, vLow);
cHigh = _BlackSholes(cpFlag, S, X, T, r, q, vHigh);
vi = vLow + (Price - cLow) * (vHigh - vLow) / (cHigh - cLow);
if Abs(Price - _BlackSholes(cpFlag, S, X, T, r, q, vi)) <= Epsilon then
{
var1 = vi;
j = n;
}
}
_ImVol = vi;
_Delta.yfu (델타 사용자함수)
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric);
var:Exp(2.71828182846);
var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*sqrt(T));
if cpflag == 1 then
{
_Delta = Exp^((q-r)*T) * _NormSDist(var1);
}
else if cpflag == 2 then
{
_Delta = Exp^((q-r)*T) * (_NormSDist(var1)-1);
}
_Gamma.yfu (감마 사용자함수)
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric);
var:Exp(2.71828182846);
var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*sqrt(T));
var3 = (1 / Sqrt(2 * pie())) * (1 / Exp^((var1^2) / 2));
_Gamma = Exp^((q-r)*T) * var3 / (S*Sig*Sqrt(T));
_Vega.yfu (베가 사용자함수)
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric);
var:Exp(2.71828182846);
var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*Sqrt(T));
var3 = (1 / Sqrt(2*pie())) * (1 / Exp^((var1^2) / 2));
_Vega = S * Exp^((q-r)*T) * var3 * Sqrt(T) /100;
_Theta.yfu (쎄타 사용자함수)
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric);
var:Exp(2.71828182846);
var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*sqrt(T));
var2 = var1 - Sig*sqrt(T);
var3 = (1 / Sqrt(2 * pie())) * (1 / Exp^((var1^2) / 2));
if cpflag == 1 then
{
_Theta = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T))
- (q-r) * S * Exp^((q-r)*T) * _NormSDist(var1)
- r * X * Exp^((-r)*T) * _NormSDist(var2);
}
else if cpflag == 2 then
{
_Theta = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T))
+ (q-r) * S * Exp^((q-r)*T) * _NormSDist(-var1)
+ r * X * Exp^((-r)*T) * _NormSDist(-var2);
}
_Theta = _Theta / 365;
_Rho.yfu (로 사용자함수)
input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric);
var:Exp(2.71828182846);
var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*sqrt(T));
var2 = var1 - Sig*sqrt(T);
if cpflag == 1 then
{
_Rho = X * T * Exp^((q-r)*T) * _NormSDist(var2);
}
else if cpflag == 2 then
{
_Rho = -X * T * Exp^((q-r)*T) * _NormSDist(-var2);
}
옵션민감도.yin (지표식)
/*cpFlag : Call,Put 구분, 1,2로 표현
S : 기초자산가격의 가격, 예)주가지수(KOSPI200)
X : 행사가격
T : 잔존만기(연율)
r : 무위험 이자율, 예) CD금리
q : 배당률
Sig : 변동성 */
input: cpflag(1), //콜풋 입력
InS(0), //현재 지수를 입력 안하면 data 참조를 통해 실시간 가격을 이용. 테스트시 이용
x(145.0), //행사가 입력
ex(20050908), //만기일
r(0.0351), //CD 금리, 요기서 볼 수 있음 ==> http://stock.koscom.co.kr/
q(0), //배당률
InSig(0), //내재변동성을 입력 안하면 자체 계산된 변동성을 사용. 단, 오차 감안해야 함
InPrice(0); //역시 테스트를 목적으로 함
var:S(0),T(0),sig(0),price(0),ImVol(0),bs(0),delta(0),gamma(0),vega(0),theta(0),rho(0);
S = iff(inS!=0,inS,data1("c")); //kospi종합을 같이 띄워 놓아야 합니다.
T = (DateToJulian(ex) - DateToJulian(date) + 1)/365;
price = iff(inPrice!=0,inPrice,c);
imvol = _ImVol(cpFlag, S, X, T, r, q, price);
sig = iff(insig!=0,insig,ImVol);
bs = _BlackSholes(cpFlag, S, X, T, r, q, sig);
delta = _Delta(cpFlag, S, X, T, r, q, sig);
gamma = _gamma(cpFlag, S, X, T, r, q, sig);
theta = _theta(cpFlag, S, X, T, r, q, sig);
vega = _vega(cpFlag, S, X, T, r, q, sig);
rho = _rho(cpFlag, S, X, T, r, q, sig);
plot1(imvol*100,"내재변동성");
plot2(bs,"이론가");
plot3(delta,"델타");
plot4(gamma,"감마");
plot5(theta,"쎄타");
plot6(vega,"베가");
plot7(rho,"로");
2013-09-01
748
글번호 67041
답변완료
수식 부탁드립니다.
1. 일봉에서 주봉 볼린져밴드를 실시간으로 보는 지표식
2. 일봉에서 월봉 볼린져밴드를 실시간으로 보는 지표식
3. 분봉에서 일봉 볼린져밴드를 실시간으로 보는 지표식
4. 분봉에서 주봉 볼린져밴드를 실시간으로 보는 지표식
감사합니다~
2013-09-01
159
글번호 67040
답변완료
시스템식 관련 문의드립니다.
항상 친절한 답변에 감사드립니다.
현물 시스템식을 만들어서 적용하면, 초기의 일정기간은 시스템상의 잔고와 실제잔고가 맞지 않아서, 시스템식에서 부분매도신호가 발생하였으나, 실제 보유종목의 수량이 부족하여 매도주문에러가 발생하는 경우가 있습니다.
이러한 에러를 방지하기 위하여 잔고함수의 GetPisitionQuantity와 GetPositionAveragePrice를 이용하여 보유종목의 총금액이 부분매도금액보다 작을경우에는 부분매도신호가 발생하지 않게 하고 싶습니다.
그런데 잔고함수 도움말을 보면 선물계좌(화면창 1201)에서만 설명이 되어 있어서, 현물에서는 불가능하다는 뜻인지? 궁금해서 문의드립니다.
혹시 현물에서도 잔고함수의 활용이 가능하다면, 위의 논리식을 어떻게 만들어야 할지 문의드립니다.
2013-09-01
196
글번호 67039
답변완료
수식문의
당일 5분봉에서 첫봉의고저 차이를 1배부터5배 배수법을 위아래당일 수평선 수식부탁합니다그리고 틱과 다른분봉에서도 적용수식부탁합니다
2013-09-02
201
글번호 67037
답변완료
수식 부탁드립니다
매수
조건1. 파라볼릭(0.02,0.2)이 매수신호
조건2. 분봉의 종가를 이어서 선을 만든후
일목균형표의 후행스팬이 그 선과 골드크로스 내면 매수
이때 후행스팬의 기울기는 +
매수청산
분봉의 고점은 볼린저밴드(20,2) 상단과 같거나크고 and 종가는 볼린저밴드 상단 아래에 있을때
or 분봉이 볼린저 상단 아래에 있으면서 음봉일때
or 파라볼릭이 매도신호로 전환될때
매도(매수의 반대경우)
조건1. 파라볼릭이 매도신호
조건2. 분봉의 종가를 이어서 선을 만든후
일목균형표의 후행스팬이 그 선과 데드크로스 내면 매도
이때 후행스팬의 기울기는 -
매도청산
분봉의 저점은 볼린저밴드(20,2) 하단과 같거나작고 and 종가는 볼린저밴드 하단 위에 있을때
or 분봉이 볼린저 하단 위에 있으면서 양봉일때
or 파라볼릭이 매수신호로 전환될때
2013-09-01
191
글번호 67036
답변완료
수식작성 부탁드립니다
input : Period(10);
var : FO1(0),FO2(0);
FO1 = (H-LRL(H,Period))/H*100;
FO2 = (L-LRL(L,Period))/L*100;
plot1(H-(FO1*H/100));
plot2(L-(FO2*L/100));
위 수식은 고가와 저가를 이용해서 만든 이평입니다
이를 고가와 저가를 분리해서
고가와 저가의 이동평균을 그물망으로 만들어주시면 감사하겠습니다
(상승시는 빨강색으로 하라시는 파란색으로 요)
감사합니다
2013-08-31
209
글번호 67035
답변완료
수식문의
시스템수식
5분봉 5이평..20분봉 5이평, 30분봉 5이평,60분봉 5이평,90분봉 5이평 ,120분봉 5이평,240분봉 5이평을 선물로 0.50/1.5포인트 내로 수렴하면서 여기서 이때 최소 60분봉5이평돌파할때 나오는 시스템 매수신호 하나와....또 60분봉 5이평이나20 이평 돌파함서 일봉서 3일이평 5일이평 돌파..이때 매수신호 둘부탁드리고요
위의 각분봉 이평들
선물 0.50/1.5포인트내에서 수렴하면서 240분봉5이평.120분봉5이평 90분봉5이평을 깰때 나오는 매도신호하나와 ...또 60분봉 5이평이나20이평이 일봉3일선이나 5일선을깰때 나오는 매도 시스템신호로 둘로 부탁드리고여...
지표수식
분봉 짧은 단기 3분봉이나..5분봉서 각 이평수렴을 볼수있게끔 수식을 맹글어주세요...
이때 일봉 3일이평..5일이평이.. 일자선으로 차트에 그려졌으면 좋겠어요
너무 어려운거 부탁드린거 아닌지.. 항상 늘 고맙네요 예스스탁님~~!! ..그간 올린수식들은.. 과거자료에서 검색해서 잘 활용하고 있답니다 (다른 고객님들도..과거 제목.내용과함께 자료 검색을 되도록 활용하셨으면 좋겠네여..같은 기본적 내용 반복수식부탁이라면은)
2013-09-01
211
글번호 67034
답변완료
수식부탁합니다
20mbo(9시20분까지의레인지돌파)와 120mbo(2시간동안의저점고점돌파)두가지를 사용하여 진입하는식에서 20mbo는 0.5에 손절,익절, 120mbo는 0.3손절 , 1.0익절을 하려고 합니다.
수식부탁합니다
2013-08-31
169
글번호 67033
답변완료
시스템 관련 질문입니다.
선물 분봉에서 거래를 하고자 합니다.
선물이 평소에 시장이 끝나는 시간과 만기일에 끝나는 시간을 정확히 알고 싶습니다.
동시호가 진입시간 및 마감시간까지도요.
그리고 평소에는 2시 50분에 그날 거래를 종료하고
만기일에는 2시 40분에 거래를 종료하는 코딩을 알고 싶습니다.
부탁드릴께요.
그리고 또 하나 질문은
만약 선물분봉 시스템을 10시에 걸었다고 했을때,
시스템상 이미 9시 30분에 신호가 떨어져 있는 상태라면 10시 현재에 시스템을 걸면 바로 신호에 따라 바로 매매가 들어가나요?
아니면 다음 신호부터 들어가게 되나요?
2013-08-30
187
글번호 67029