커뮤니티
부탁드립니다-------------
2018-03-19 19:43:41
205
글번호 117525
//내재변동성 iivv선을 부드럽게만들려면 이평이나 tema 말고 다른방법은 없나요?
Input:역사적변동성(11.4),LENGTH1(3),최고저기준(0);
var : exit(0),C1(0),C2(0),C3(0),iivv(0),hhh(0),lll(0),ii(0),hii(0);
Var: cpFlag2(""),X2(0),T2(0),r2(0),BS2(0),j2(0),
ImVol2(0),Delta2(0),Gamma2(0),Vega2(0),Theta2(0),Rho2(0),
만기일1단계2(0),만기일2단계2(0),만기일3단계2(0);
Var: cpFlag3(""),X3(0),T3(0),r3(0),BS3(0),j3(0),
ImVol3(0),Delta3(0),Gamma3(0),Vega3(0),Theta3(0),Rho3(0),
만기일1단계3(0),만기일2단계3(0),만기일3단계3(0),imvo(0),TEMAimvo(0);
#================================================#
C1 = Data1(C); //기초자산이 보조차트가 되어야 한다.
C2 = data2(C); //옵션가격, 옵션종목을 기본차트로 띄워놓아야 한다.
C3 = data3(c);
If Data1(SymbolName) <> "KP200 종합" Then {
Alert("Data1이 KP200 종합이 아닙니다.");
exit = 1;
}
If data2(CodeCategory) <> 6 Then {
Alert("Data2가 옵션종목이 아닙니다.");
exit = 1;
}
If data3(CodeCategory) <> 6 Then {
Alert("Data3이 옵션종목이 아닙니다.");
exit = 1;
}
If exit == 0 Then {
If CurrentBar == 1 Then {
// SymbolName : 콜1801월 327.5kp (한글은 2자리로 계산)
X2 = StrToNum(MidStr(data2(SymbolName),10,5)); // 행사가격, 종목명에서 추출
만기일1단계2 = 20000000 + StrToNum(MidStr(data2(SymbolName),3,4))*100+8; // 만기년월 + 08일, 종목명에서 추출
만기일2단계2 = DayOfWeek(만기일1단계2); // 만기월의 8일의 요일 값
만기일3단계2 = 만기일1단계2 + (Iff(만기일2단계2 > 4, 11, 4) - 만기일2단계2); // 2번째 목요일을 계산해 낸다.
cpFlag2 = LeftStr(data2(SymbolName),2); // 콜,풋 구분. 종목명에서 추출
X3 = StrToNum(MidStr(data3(SymbolName),10,5)); // 행사가격, 종목명에서 추출
만기일1단계3 = 20000000 + StrToNum(MidStr(data3(SymbolName),3,4))*100+8; // 만기년월 + 08일, 종목명에서 추출
만기일2단계3 = DayOfWeek(만기일1단계3); // 만기월의 8일의 요일 값
만기일3단계3 = 만기일1단계3 + (Iff(만기일2단계3 > 4, 11, 4) - 만기일2단계3); // 2번째 목요일을 계산해 낸다.
cpFlag3 = LeftStr(data3(SymbolName),2); // 콜,풋 구분. 종목명에서 추출
}
If C2 > 0 then {
T2 = (DateToJulian(만기일3단계2) - DateToJulian(Date) + 1)/365;
r2 = data2(CD91Rate(Date)/100);
ImVol2 = data2(_ImVol(IFF(cpFlag2=="콜",1,2), C1, X2, T2, r2, C2));
Value1 = data2(_OptionGreeks(IFF(cpFlag2=="콜",1,2),C1,X2,T2,r2,역사적변동성/100,BS2,Delta2,Gamma2,Theta2,Vega2,Rho2));
}
If C3 > 0 then {
T3 = (DateToJulian(만기일3단계3) - DateToJulian(Date) + 1)/365;
r3 = data3(CD91Rate(Date)/100);
ImVol3 = data3(_ImVol(IFF(cpFlag3=="풋",1,2), C1, X3, T3, r3, C3));
Value2 = data3(_OptionGreeks(IFF(cpFlag3=="풋",1,2),C1,X3,T3,r3,역사적변동성/100,BS3,Delta3,Gamma3,Theta3,Vega3,Rho3));
}
If Value1 == 1 and value2 == 1 Then {
Plot1((BS2+BS3)/2,"이론가");
iivv = (ImVol2*100 +ImVol3*100)/2;
Plot2(iivv,"내재변동성");
// Plot2((ImVol2*100 +ImVol3*100)/2,"내재변동성");
Plot3((Delta2+Delta3)/2,"델타");
Plot4((Gamma2+Gamma3)/2,"감마");
Plot5((Theta2+Theta3)/2,"쎄타");
Plot6((Vega2+Vega3)/2,"베가");
Plot7((Rho2+Rho3)/2,"로");
imvo = (ImVol2*100 +ImVol3*100)/2;
TEMAimvo = (3 * Ema(imvo,LENGTH1)) - (3 * Ema(Ema(imvo,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(imvo,LENGTH1),LENGTH1),LENGTH1));
Plot8(TEMAimvo,"내변테마");
}
}
//******************************************************************************
//최고저만들기
//******************************************************************************
if data2(bdate != bdate[1]) Then{
ii = 0;
HHh = iivv;
LlL = iivv;
}
else
{
ii = ii+1;
if ii < 최고저기준 Then
{
if iivv > hhh Then
hhh = iivv;
if iivv < lll Then
lll = iivv;
}
else{
hhh = data2(highest(iivv,최고저기준));
lll = data2(lowest(iivv,최고저기준));
}
}
hii = (hhh + lll)/2;
plot21(HHh,"Data2 H" );
plot22(LLl,"Data2 L");
plot23(hii,"hii");
답변 1
예스스탁 예스스탁 답변
2018-03-20 15:12:03
안녕하세요
예스스탁입니다.
예 이평이나 tema와 같이
평균을 하는방법 뿐이 없을 것 같습니다.
즐거운 하루되세요
> leekss1 님이 쓴 글입니다.
> 제목 : 부탁드립니다-------------
> //내재변동성 iivv선을 부드럽게만들려면 이평이나 tema 말고 다른방법은 없나요?
Input:역사적변동성(11.4),LENGTH1(3),최고저기준(0);
var : exit(0),C1(0),C2(0),C3(0),iivv(0),hhh(0),lll(0),ii(0),hii(0);
Var: cpFlag2(""),X2(0),T2(0),r2(0),BS2(0),j2(0),
ImVol2(0),Delta2(0),Gamma2(0),Vega2(0),Theta2(0),Rho2(0),
만기일1단계2(0),만기일2단계2(0),만기일3단계2(0);
Var: cpFlag3(""),X3(0),T3(0),r3(0),BS3(0),j3(0),
ImVol3(0),Delta3(0),Gamma3(0),Vega3(0),Theta3(0),Rho3(0),
만기일1단계3(0),만기일2단계3(0),만기일3단계3(0),imvo(0),TEMAimvo(0);
#================================================#
C1 = Data1(C); //기초자산이 보조차트가 되어야 한다.
C2 = data2(C); //옵션가격, 옵션종목을 기본차트로 띄워놓아야 한다.
C3 = data3(c);
If Data1(SymbolName) <> "KP200 종합" Then {
Alert("Data1이 KP200 종합이 아닙니다.");
exit = 1;
}
If data2(CodeCategory) <> 6 Then {
Alert("Data2가 옵션종목이 아닙니다.");
exit = 1;
}
If data3(CodeCategory) <> 6 Then {
Alert("Data3이 옵션종목이 아닙니다.");
exit = 1;
}
If exit == 0 Then {
If CurrentBar == 1 Then {
// SymbolName : 콜1801월 327.5kp (한글은 2자리로 계산)
X2 = StrToNum(MidStr(data2(SymbolName),10,5)); // 행사가격, 종목명에서 추출
만기일1단계2 = 20000000 + StrToNum(MidStr(data2(SymbolName),3,4))*100+8; // 만기년월 + 08일, 종목명에서 추출
만기일2단계2 = DayOfWeek(만기일1단계2); // 만기월의 8일의 요일 값
만기일3단계2 = 만기일1단계2 + (Iff(만기일2단계2 > 4, 11, 4) - 만기일2단계2); // 2번째 목요일을 계산해 낸다.
cpFlag2 = LeftStr(data2(SymbolName),2); // 콜,풋 구분. 종목명에서 추출
X3 = StrToNum(MidStr(data3(SymbolName),10,5)); // 행사가격, 종목명에서 추출
만기일1단계3 = 20000000 + StrToNum(MidStr(data3(SymbolName),3,4))*100+8; // 만기년월 + 08일, 종목명에서 추출
만기일2단계3 = DayOfWeek(만기일1단계3); // 만기월의 8일의 요일 값
만기일3단계3 = 만기일1단계3 + (Iff(만기일2단계3 > 4, 11, 4) - 만기일2단계3); // 2번째 목요일을 계산해 낸다.
cpFlag3 = LeftStr(data3(SymbolName),2); // 콜,풋 구분. 종목명에서 추출
}
If C2 > 0 then {
T2 = (DateToJulian(만기일3단계2) - DateToJulian(Date) + 1)/365;
r2 = data2(CD91Rate(Date)/100);
ImVol2 = data2(_ImVol(IFF(cpFlag2=="콜",1,2), C1, X2, T2, r2, C2));
Value1 = data2(_OptionGreeks(IFF(cpFlag2=="콜",1,2),C1,X2,T2,r2,역사적변동성/100,BS2,Delta2,Gamma2,Theta2,Vega2,Rho2));
}
If C3 > 0 then {
T3 = (DateToJulian(만기일3단계3) - DateToJulian(Date) + 1)/365;
r3 = data3(CD91Rate(Date)/100);
ImVol3 = data3(_ImVol(IFF(cpFlag3=="풋",1,2), C1, X3, T3, r3, C3));
Value2 = data3(_OptionGreeks(IFF(cpFlag3=="풋",1,2),C1,X3,T3,r3,역사적변동성/100,BS3,Delta3,Gamma3,Theta3,Vega3,Rho3));
}
If Value1 == 1 and value2 == 1 Then {
Plot1((BS2+BS3)/2,"이론가");
iivv = (ImVol2*100 +ImVol3*100)/2;
Plot2(iivv,"내재변동성");
// Plot2((ImVol2*100 +ImVol3*100)/2,"내재변동성");
Plot3((Delta2+Delta3)/2,"델타");
Plot4((Gamma2+Gamma3)/2,"감마");
Plot5((Theta2+Theta3)/2,"쎄타");
Plot6((Vega2+Vega3)/2,"베가");
Plot7((Rho2+Rho3)/2,"로");
imvo = (ImVol2*100 +ImVol3*100)/2;
TEMAimvo = (3 * Ema(imvo,LENGTH1)) - (3 * Ema(Ema(imvo,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(imvo,LENGTH1),LENGTH1),LENGTH1));
Plot8(TEMAimvo,"내변테마");
}
}
//******************************************************************************
//최고저만들기
//******************************************************************************
if data2(bdate != bdate[1]) Then{
ii = 0;
HHh = iivv;
LlL = iivv;
}
else
{
ii = ii+1;
if ii < 최고저기준 Then
{
if iivv > hhh Then
hhh = iivv;
if iivv < lll Then
lll = iivv;
}
else{
hhh = data2(highest(iivv,최고저기준));
lll = data2(lowest(iivv,최고저기준));
}
}
hii = (hhh + lll)/2;
plot21(HHh,"Data2 H" );
plot22(LLl,"Data2 L");
plot23(hii,"hii");
다음글