커뮤니티

사용자가 지정한 날부터 지표가 나오도록 기산하는 방법

프로필 이미지
스퍼트시커
2014-12-15 19:05:27
182
글번호 81368
답변완료
항상 신속하고 상세한 답변주셔서 많은 도움을 받고 있습니다. 사용자가(괄호 안은 12월 15일 해당 실재 데이터) ①최근만기일(20141211) ②당월물거래일수(17일) <= 전체일수 (1일부터 17일까지) ※12/15 은 제1일. 2015년 1월 8일은 제17일. 12/30 개장 가정 ③평균 <= 17거래일간에 해당하는 별도로 산출된 평균 임의 지수 등을 지정한 다음 새월물 첫날부터 만기일까지 실재 거래일에만 해당일차의 평균을 지표로 출력하고자 합니다. 코딩 경험이 일천하고 설명이 쉽지 아니하여 실재 사례를 단순화 해서 설명 드립니다. 아래는 옵션 5개로 단순화하였습니다. ----------- 아래--------------------- Input : 거래일수(17), 최근만기일(20141211); Input : 콜최저행사가(210), 풋최저행사가(210); var : 코스피200(0), 변수1(0), 변수2(0), 등행사가(0); //-- 등가 산출 코스피200 = data2(c); 변수1 = int(코스피200/10)*10; 변수2 = 코스피200%10; if 변수2 >= 8.75 Then 등행사가 = 변수1+10; else if 변수2 < 8.75 and 변수2 >= 6.25 Then 등행사가 = 변수1+7.5; else if 변수2 < 6.25 and 변수2 >= 3.75 Then 등행사가 = 변수1+5.0; else if 변수2 < 3.75 and 변수2 >= 1.25 Then 등행사가 = 변수1+2.5; Else 등행사가 = 변수1+0.0; //-참조데이터(옵션 콜5개 풋 5개) 대입 array : 콜행[5](0), 풋행[5](0), 콜현[5](0), 풋현[5](0), 평균[17](0); var : 콜등가(0), 풋등가(0), 콜풋등가(0); 콜현[1] = data3(C); 콜현[2] = data4(C); 콜현[3] = data5(C); 콜현[4] = data6(C); 콜현[5] = data7(C); 풋현[1] = data38(C); 풋현[2] = data39(C); 풋현[3] = data40(C); 풋현[4] = data41(C); 풋현[5] = data42(C); //=== 등가 찾기 var : 순번(0); for 순번 = 1 to 35 { 콜행[순번] = 콜최저행사가 + 순번 * 2.5 - 2.5; 풋행[순번] = 풋최저행사가 + 순번 * 2.5 - 2.5; If 등행사가 == 콜행[순번] Then 콜등가 = 순번; If 등행사가 == 풋행[순번] Then 풋등가 = 순번; } //-- 별도로 계산된 임의 평균치 대입 평균[1]=7.1; 평균[2]=6.39; 평균[3]=6.36; 평균[4]=6.13; 평균[5]=5.57; 평균[6]=5.55; 평균[7]=5.56; 평균[8]=5.32; 평균[9]=5.4; 평균[10]=4.76; 평균[11]=4.31; 평균[12]=3.97; 평균[13]=3.54; 평균[14]=3.45; 평균[15]=5.86; 평균[16]=5.36; 평균[17]=4.74; //-- 출력 plot1(콜현[콜등가] + 풋현[풋등가] , "콜풋등가"); plot2(평균[n] , "평균등가"); ---------------------------------------------- 위에서 plot1 의 콜풋등가 출력은 문제가 없는데 plot2 의 n 거래일차 평균을 이를테면 제2 거래일에 평균[2]의 값 6.39을 제3 거래일에 평균[3]의 값 6.36을 (중략) 제16 거래일에 평균[16]의 값 5.36을 지표로 각각 출력되게 하는 것이 어렵군요! 직전 만기일(사용자지정일) 다음날(월물 첫날) 부터 기산하여 거래일만 차례대로 출력되게 하는 것이 참 난해합니다. 그럼 부탁 드립니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-12-16 13:06:15

안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다/ Input : 거래일수(17), 최근만기일(20141211),N(1); Input : 콜최저행사가(210), 풋최저행사가(210); var : 코스피200(0), 변수1(0), 변수2(0), 등행사가(0); array : 콜행[5](0), 풋행[5](0), 콜현[5](0), 풋현[5](0), 평균[20](0); var : 콜등가(0), 풋등가(0), 콜풋등가(0); var : Dcnt(0),cnt(0),순번(0); //-- 등가 산출 코스피200 = data2(c); 변수1 = int(코스피200/10)*10; 변수2 = 코스피200%10; if 변수2 >= 8.75 Then 등행사가 = 변수1+10; else if 변수2 < 8.75 and 변수2 >= 6.25 Then 등행사가 = 변수1+7.5; else if 변수2 < 6.25 and 변수2 >= 3.75 Then 등행사가 = 변수1+5.0; else if 변수2 < 3.75 and 변수2 >= 1.25 Then 등행사가 = 변수1+2.5; Else 등행사가 = 변수1+0.0; //-참조데이터(옵션 콜5개 풋 5개) 대입 콜현[1] = data3(C); 콜현[2] = data4(C); 콜현[3] = data5(C); 콜현[4] = data6(C); 콜현[5] = data7(C); 풋현[1] = data38(C); 풋현[2] = data39(C); 풋현[3] = data40(C); 풋현[4] = data41(C); 풋현[5] = data42(C); //=== 등가 찾기 for 순번 = 1 to 35 { 콜행[순번] = 콜최저행사가 + 순번 * 2.5 - 2.5; 풋행[순번] = 풋최저행사가 + 순번 * 2.5 - 2.5; If 등행사가 == 콜행[순번] Then 콜등가 = 순번; If 등행사가 == 풋행[순번] Then 풋등가 = 순번; } #만기일 다음날부터 if sdate > 최근만기일 Then{ #최근만기일이후 첫날이면 거래일수를 0으로 초기화하고 배열변수 평균을 모두 0으로 초기화 if sdate[1] <= 최근만기일 then{ Dcnt = 0; for cnt = 1 to 19{ 평균[cnt] = 0; } } #최근만기일 이후 첫날부터 거래일수(Dcnt)는 1씩 증가 if date != date[1] Then Dcnt = Dcnt+1; } 평균[Dcnt]=콜현[콜등가] + 풋현[풋등가]; //-- 출력 plot1(콜현[콜등가] + 풋현[풋등가] , "콜풋등가"); plot2(평균[n] , "평균등가"); 즐거운 하루되세요 > 스퍼트시커 님이 쓴 글입니다. > 제목 : 사용자가 지정한 날부터 지표가 나오도록 기산하는 방법 > 항상 신속하고 상세한 답변주셔서 많은 도움을 받고 있습니다. 사용자가(괄호 안은 12월 15일 해당 실재 데이터) ①최근만기일(20141211) ②당월물거래일수(17일) <= 전체일수 (1일부터 17일까지) ※12/15 은 제1일. 2015년 1월 8일은 제17일. 12/30 개장 가정 ③평균 <= 17거래일간에 해당하는 별도로 산출된 평균 임의 지수 등을 지정한 다음 새월물 첫날부터 만기일까지 실재 거래일에만 해당일차의 평균을 지표로 출력하고자 합니다. 코딩 경험이 일천하고 설명이 쉽지 아니하여 실재 사례를 단순화 해서 설명 드립니다. 아래는 옵션 5개로 단순화하였습니다. ----------- 아래--------------------- Input : 거래일수(17), 최근만기일(20141211); Input : 콜최저행사가(210), 풋최저행사가(210); var : 코스피200(0), 변수1(0), 변수2(0), 등행사가(0); //-- 등가 산출 코스피200 = data2(c); 변수1 = int(코스피200/10)*10; 변수2 = 코스피200%10; if 변수2 >= 8.75 Then 등행사가 = 변수1+10; else if 변수2 < 8.75 and 변수2 >= 6.25 Then 등행사가 = 변수1+7.5; else if 변수2 < 6.25 and 변수2 >= 3.75 Then 등행사가 = 변수1+5.0; else if 변수2 < 3.75 and 변수2 >= 1.25 Then 등행사가 = 변수1+2.5; Else 등행사가 = 변수1+0.0; //-참조데이터(옵션 콜5개 풋 5개) 대입 array : 콜행[5](0), 풋행[5](0), 콜현[5](0), 풋현[5](0), 평균[17](0); var : 콜등가(0), 풋등가(0), 콜풋등가(0); 콜현[1] = data3(C); 콜현[2] = data4(C); 콜현[3] = data5(C); 콜현[4] = data6(C); 콜현[5] = data7(C); 풋현[1] = data38(C); 풋현[2] = data39(C); 풋현[3] = data40(C); 풋현[4] = data41(C); 풋현[5] = data42(C); //=== 등가 찾기 var : 순번(0); for 순번 = 1 to 35 { 콜행[순번] = 콜최저행사가 + 순번 * 2.5 - 2.5; 풋행[순번] = 풋최저행사가 + 순번 * 2.5 - 2.5; If 등행사가 == 콜행[순번] Then 콜등가 = 순번; If 등행사가 == 풋행[순번] Then 풋등가 = 순번; } //-- 별도로 계산된 임의 평균치 대입 평균[1]=7.1; 평균[2]=6.39; 평균[3]=6.36; 평균[4]=6.13; 평균[5]=5.57; 평균[6]=5.55; 평균[7]=5.56; 평균[8]=5.32; 평균[9]=5.4; 평균[10]=4.76; 평균[11]=4.31; 평균[12]=3.97; 평균[13]=3.54; 평균[14]=3.45; 평균[15]=5.86; 평균[16]=5.36; 평균[17]=4.74; //-- 출력 plot1(콜현[콜등가] + 풋현[풋등가] , "콜풋등가"); plot2(평균[n] , "평균등가"); ---------------------------------------------- 위에서 plot1 의 콜풋등가 출력은 문제가 없는데 plot2 의 n 거래일차 평균을 이를테면 제2 거래일에 평균[2]의 값 6.39을 제3 거래일에 평균[3]의 값 6.36을 (중략) 제16 거래일에 평균[16]의 값 5.36을 지표로 각각 출력되게 하는 것이 어렵군요! 직전 만기일(사용자지정일) 다음날(월물 첫날) 부터 기산하여 거래일만 차례대로 출력되게 하는 것이 참 난해합니다. 그럼 부탁 드립니다.