예스스탁
예스스탁 답변
2022-10-19 11:47:29
안녕하세요
예스스탁입니다.
1
해당식은 종목코드에서 마지막 3자리값을 가져와 옵션 행사가를 계산하게 됩니다.
행가가가 2.5, 7.5로 끝나는 옵션의 종목코드에 소숫점 자리수까지 없습니다.
행사가 292.5 --> 201SB292
그러므로 종목코드 마지막자리가 0이나 5가 아니면 0.5를 더하는 것입니다.
2
각 함수의 설명은 랭귀지 도움말을 찾아보시기 바랍니다.
3
반복되는 내용이므로 cs[2]만 주석 붙여 드립니다.
var : V1(0,Data1),V2(0,Data1),ATM(0,Data1);
var : cnt(0,Data1);
var : Ci(0,Data1),Pi(0,Data1),count(0,Data1);
Array : CS[7](0),CC[7](0),PS[7](0),PP[7](0),CT[7](0),PT[7](0);
CC[2] = Data2(H);
CC[3] = Data4(H);
PP[2] = Data3(L);
PP[3] = Data8(L);
#Data2의 종목코드(SymbolCode)의 마지막글자를 숫자로 변환(StrToNum)하여
#5나 0이면 종목코드 마지막3자를 숫자로 변환하여 atm값으로 저장
#아니면 마지막3자를 숫자로 변환하고 0.5를 더해 atmr값으로으로 저장
CS[2]= data2(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
CS[3]= data4(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
PS[2]= data3(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
PS[3]= data8(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
var1 = 0;
Var2 = 0;
Var3 = 0;
# 2~6을 리턴
For cnt = 2 to 6
{
#CS[2]~CS[6]의 값중 ATM과 같은 값을 찾고 해당 방번호 저장
if CS[cnt] == ATM Then
var1 = cnt;
#CS[2]~CS[6]의 값중 ATM+2.5와 같은 값을 찾고 해당 방번호 저장
if CS[cnt] == ATM+2.5 Then
Var2 = cnt;
#CS[2]~CS[6]의 값중 ATM-2.5와 같은 값을 찾고 해당 방번호 저장
if CS[cnt] == ATM-2.5 Then
Var3 = cnt;
#PS[2]~PS[6]의 값중 ATM과 같은 값을 찾고 해당 방번호 저장
if PS[cnt] == ATM Then
value1 = cnt;
#PS[2]~PS[6]의 값중 ATM+2.5와 같은 값을 찾고 해당 방번호 저장
if PS[cnt] == ATM+2.5 Then
Value2 = cnt;
#PS[2]~PS[6]의 값중 ATM-2.5와 같은 값을 찾고 해당 방번호 저장
if PS[cnt] == ATM-2.5 Then
Value2 = cnt;
}
즐거운 하루되세요
> 파생돌이 님이 쓴 글입니다.
> 제목 : 주석부탁드립니다
> 수고하십니다
아래수식을 자세하게 주석부탁드립니다 CS[7](0), ==5같다 ,==0같다 , +0.5을 왜 더하는지? cnt ,[cnt],(SymbolCode,1),StrToNum...등등
var : V1(0,Data1),V2(0,Data1),ATM(0,Data1);
var : cnt(0,Data1);
var : Ci(0,Data1),Pi(0,Data1),count(0,Data1);
Array : CS[7](0),CC[7](0),PS[7](0),PP[7](0),CT[7](0),PT[7](0);
CC[2] = Data2(H);
CC[3] = Data4(H);
PP[2] = Data3(L);
PP[3] = Data8(L);
CS[2]= data2(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
CS[3]= data4(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
PS[2]= data3(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
PS[3]= data8(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
var1 = 0;
Var2 = 0;
Var3 = 0;
For cnt = 2 to 6
{
if CS[cnt] == ATM Then
var1 = cnt;
if CS[cnt] == ATM+2.5 Then
Var2 = cnt;
if CS[cnt] == ATM-2.5 Then
Var3 = cnt;
if PS[cnt] == ATM Then
value1 = cnt;
if PS[cnt] == ATM+2.5 Then
Value2 = cnt;
if PS[cnt] == ATM-2.5 Then