커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7840
글번호 230811
답변완료
메일답변부탁드립니다
수가가 많으십니다!!
메일로 질문을 드렸는데,,답장이 없어서 여기에 글을 올립니다.
저의 멜주소는 d-0004@hanmail.net
답장기다리겠습니다..
안녕히계십시요!!!
2005-09-02
1231
글번호 8192
답변완료
지표문의.
갭보정 지표 문의 드립니다.
plot1(갭보정 시가)
plot2(갭보정 당일 고가)
plot3(갭보정 당일 저가)
plot4(갭보정 당일 고저폭의 절반)
즐거운 주말 되세요^^
2005-09-02
1301
글번호 8189
옵션 이론가,델타,감마 등 지표식
저희 카페 회원의 요청으로 만들어 보았습니다.
인터넷에서 검색만 해보면 블랙숄즈 옵션 이론에 대해 VBA소스가 많이 돌아 다닙니다.
다만, 문제는 버전이 조금씩 달라서 어떤 것이 정답인지 헷갈린다는 겁니다.
VBA 소스를 예스 언어로 컨버전해서 테스트 해보고 약간씩 수정을 해서 예트 월물 조회화면에서 보여주는 값에 근접하는 수식을 채택했습니다.
입력값이 상이해서 그런지 일치하는 값을 구하기 어렵고 비슷하다는 정도입니다.
테스트 기간이 길지 않아 일부 오류가 발견될 수도 있습니다.
_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")); //kospi200종합을 같이 띄워 놓아야 합니다.
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,"로");
본 내용은 커뮤니티 게시판에 동일하게 게시합니다.
2005-09-02
2628
글번호 8188
답변완료
수식문의
안녕하십니까?
지수선물챠트에서 아래조건일때에의 매매식은 어떠한지요?
(<, >, 표시는 하향돌파 상향돌파란 의미)
매 수: 5이평선>120이평선 일때
매수청산: 5이평선< 20이평선 일때 (이때봉들이 120이평선 위에 있음)
매 도: 5이평선<120이평선 일때
매도청산: 5이평선< 20이평선 일때 (이때봉들이 120이평선 밑에 있음)
미리 감사 인사 드리며, 수식은 아래 메일로 송부 바랍니다..
dragon38@dreamwiz.com
2005-09-01
1169
글번호 8187
답변완료
시스템식 질문 드립니다.
매도식
60분 분봉에서 아래와 같은 일봉을 표시하는 시스템식을 부탁드립니다.
- 매도식
1. 전전일 : 2P 이상의 장대양봉(Marubozu)
2. 전일 ; 시가와 종가차이가 0.5P 이내의 스타형 캔들(양봉,음봉 상관없음) and
스타캔들이 스톡캐스틱이 80 이상 and
앞캔들인 장대양봉 몸통의 1/2 이상의 위치에서 스타캔들위치
3. 당일 : 전일 스타캔들의 저가를 하회할 때 매도
- 매수식
1. 전전일 : -2P 이상의 장대음봉(Marubozu)
2. 전일 ; 시가와 종가차이가 0.5P 이내의 스타형 캔들(양봉,음봉 상관없음) and
스타캔들이 스톡캐스틱이 20 이하 And
앞캔들인 장대음봉 몸통의 1/2 이하의 위치에서 스타캔들위치
3. 당일 : 전일 스타캔들의 고가를 상회할 때 매수
2005-09-01
1273
글번호 8186
회원 님에 의해서 삭제되었습니다.
2005-09-01
0
글번호 8183
답변완료
검색이 안되는 군요..
mfi 를 이용한 검색식의 답변을 잘 보았습니다
제가 작성한 식이 구버젼이고 아래처럼 검색하면
로직에는 문제가 없는것 같군요
그런데 막상 검색을 하니 전혀 검색이 되질 않는군요
혹시 기준값이(50) 문제가 될까 해서 n값으로 바꾸어봐도 전혀
검색이 되지 않습니다
합당한 종목이 없는 것인가요?
실제로 그런건지 ..이해하기 어렵습니다..
input : period(14);
if crossup(mfi(period),50) then
find(1);
2005-09-01
1702
글번호 8177
답변완료
보충질문입니다.
답변 감사드립니다.
그러나 최대수익대비하락에 대한 사용법 설명을 부탁드린게 아니라, 시스템 내에서 동일한 효과를 가져오도록 하기 위한 수식을 구현해주십사 부탁드린 것입니다.
오해의 소지가 있게 질문드린 점 죄송합니다.
예컨대 스톱로스의 경우, 지난 번 제 질문(3842번)에 대해서 다음과 같은 수식을 작성해 주셨지요.
==================================================================
Stoploss를 예를 들어 설명 드리면
수식에 포함
input : Loss(1),Method(0);
var : LossValue(0);
if Method == 0 then
LossValue = entryprice()*(1-Loss/100);
else
LossValue = entryPrice()-Loss;
if Marketposition() == 1 then{
if C <= LossValue then
exitlong("LX_StopLoss");
}
if Marketposition() == -1 then{
if C >= LossValue then
exitshort("SX_StopLoss");
}
## 외부변수 Method 0값은 percentstop
## Method 1이상값은 pointstop
## 외부변수 loss는 손실폭을 설정합니다.
## 매수손절 매도손절 모두 포함된 식입니다.
======================================================================
그러니깐 최대수익대비하락의 경우도 이처럼 수식을 시스템 내에다가 직접 타이핑하여 입력하고 싶다 이말입니다. (SetStopTrailing 함수를 사용하지 않고 말이죠.)
자꾸 귀챦게 해서 죄송합니다.
그럼 좋은 하루 되십시오.
2005-08-31
1899
글번호 8176
답변완료
시스템식 문의 드려요
안녕하세요
시스템식 문의 드립니다.
이곳 홈피를 통해 주어진 예제 및 질답란에 있는 것을 참고 하여 연구하던중
도저히 제가 해결할수 없는 듯 싶어 문의 드립니다.
질문 1 청산만을 위한 수동매수식에서
if date == 20050830 and stime == 090000 then
buy();
체결이 첫봉 종가 가격으로 체결이 되는데 "시초가" 가격으로 체결된것 처럼 하려면 어떻게 해야 하나요?
그리고 stime == 에서 오후 1시경에 매수 한다라고 가정을 하면
20분 분봉에서 stime == 130000으로 하면 되는것 아닌지요 제가 잘못 이해 하고 있는지 장시작에 신호가 나오더군요
질문 2
전일 종가 비교 시초가 0~7% 사이면 "시초가"에 매수한다 라는 시스템 식을 구현하고자 합니다.
만약 종가와 시초가가 비교되는것이 조건이 되어 다음봉에 신호가 발생 된다면...
매수만이라도 최소 분봉이나 틱을 조건으로 삼고 신호발생과 체결을 하고
매도식은 다른 분봉을 기준으로 하는 시스템식의 구현은 불가능한지요?
즉 제가 적용하고자 하는 20분봉에서
매수시 시스템식이 적용가능한 최소의 분봉이나 틱에서 전일 종가 대비 시초가가 0~7%사이면 "다음봉 시초가"에 매수한다
그럼 답변 부탁드립니다.
2005-08-31
1547
글번호 8174