커뮤니티

사용자 함수 부탁드립니다.

프로필 이미지
양치기
2014-11-26 00:08:15
182
글번호 80767
답변완료
항상 도움주셔서 감사합니다. 아래는 수식지왕님의 변동성 지표에 대한 지표입니다. 이걸 특정기간에 대한 변동성에 대한 사용자 함수로 만들어 주셨으면 감사하겠습니다. #==========================================# # 지 표 명 : Volatility Based Envelopes # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Var:chng_rt(0),j(0),ma_val(0),std_val(0),dn_rng(0),up_rng(0),rawVBE_up(0),rawVBE_dn(0); Array:len[6](0),VBE_up[6](0),VBE_dn[6](0), up_chg[6](0),dn_chg[6](0),up_cor[6](0),dn_cor[6](0), fcstVBE_up[6](0),fcstVBE_dn[6](0); len[0] = 21; len[1] = 17; len[2] = 13; len[3] = 9; len[4] = 5; len[5] = 2; chng_rt = (C/C[1]-1); //가격 변동률 ma_val = ma(chng_rt,len[0]); //가격변동률의 평균 std_val = Std(chng_rt,len[0]); //가격변동률의 표준편차 dn_rng = ma_val - (std_val * 2); up_rng = ma_val + (std_val * 2); rawVBE_up = C * (1 + up_rng); //원시VBE rawVBE_dn = C * (1 + dn_rng); for j = 0 to 5 { VBE_up[j] = wma(rawVBE_up,len[j]); //원시VBE를 가중이평으로 평활화 VBE_dn[j] = wma(rawVBE_dn,len[j]); if VBE_up[j][1] > 0 then up_chg[j] = (VBE_up[j]-VBE_up[j][1])/VBE_up[j][1]; //VBE의 변동률 if VBE_dn[j][1] > 0 then dn_chg[j] = (VBE_dn[j]-VBE_dn[j][1])/VBE_dn[j][1]; } fcstVBE_up[0] = VBE_up[0]; fcstVBE_dn[0] = VBE_dn[0]; for j = 1 to 5 { up_cor[j] = Correlation(up_chg[0], up_chg[j],63); //21일 VBE변동률과 17,13,9,5,2 변동률간의 상관도 dn_cor[j] = Correlation(dn_chg[0], dn_chg[j],63); fcstVBE_up[j] = fcstVBE_up[j-1] * (1+(up_chg[j]*up_cor[j])); //이전값에 상관도와 변동률을 곱해서 계산 fcstVBE_dn[j] = fcstVBE_dn[j-1] * (1+(dn_chg[j]*dn_cor[j])); } plot1(fcstVBE_up[0],"상-5",RED); //5봉 뒤로 이동 plot2(fcstVBE_dn[0],"하-5",BLUE); //5봉 뒤로 이동 if LastBarOnChart then { //마지막봉에서 아래 5봉만 추가로 출력 plot3(fcstVBE_up[5],"상0",RED); plot4(fcstVBE_up[4],"상-1",RED); //1봉 뒤로 이동 plot5(fcstVBE_up[3],"상-2",RED); //2봉 뒤로 이동 plot6(fcstVBE_up[2],"상-3",RED); //3봉 뒤로 이동 plot7(fcstVBE_up[1],"상-4",RED); //4봉 뒤로 이동 plot8(fcstVBE_dn[5],"하0",BLUE); plot9(fcstVBE_dn[4],"하-1",BLUE); //1봉 뒤로 이동 plot10(fcstVBE_dn[3],"하-2",BLUE); //2봉 뒤로 이동 plot11(fcstVBE_dn[2],"하-3",BLUE); //3봉 뒤로 이동 plot12(fcstVBE_dn[1],"하-4",BLUE); //4봉 뒤로 이동 }
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-11-26 14:44:16

안녕하세요 예스스탁입니다. 1. 함수명 VBEup input : N(Numeric), len0(Numeric),len1(Numeric),len2(Numeric),len3(Numeric),len4(Numeric),len5(Numeric),corPeriod(Numeric); Var:chng_rt(0),j(0),ma_val(0),std_val(0),dn_rng(0),up_rng(0),rawVBE_up(0),rawVBE_dn(0); Array:len[6](0),VBE_up[6](0),VBE_dn[6](0), up_chg[6](0),dn_chg[6](0),up_cor[6](0),dn_cor[6](0), fcstVBE_up[6](0),fcstVBE_dn[6](0); len[0] = len0; len[1] = len1; len[2] = len2; len[3] = len3; len[4] = len4; len[5] = len5; chng_rt = (C/C[1]-1); //가격 변동률 ma_val = ma(chng_rt,len[0]); //가격변동률의 평균 std_val = Std(chng_rt,len[0]); //가격변동률의 표준편차 dn_rng = ma_val - (std_val * 2); up_rng = ma_val + (std_val * 2); rawVBE_up = C * (1 + up_rng); //원시VBE rawVBE_dn = C * (1 + dn_rng); for j = 0 to 5 { VBE_up[j] = wma(rawVBE_up,len[j]); //원시VBE를 가중이평으로 평활화 VBE_dn[j] = wma(rawVBE_dn,len[j]); if VBE_up[j][1] > 0 then up_chg[j] = (VBE_up[j]-VBE_up[j][1])/VBE_up[j][1]; //VBE의 변동률 if VBE_dn[j][1] > 0 then dn_chg[j] = (VBE_dn[j]-VBE_dn[j][1])/VBE_dn[j][1]; } fcstVBE_up[0] = VBE_up[0]; fcstVBE_dn[0] = VBE_dn[0]; for j = 1 to 5 { up_cor[j] = Correlation(up_chg[0], up_chg[j],corPeriod); //21일 VBE변동률과 17,13,9,5,2 변동률간의 상관도 dn_cor[j] = Correlation(dn_chg[0], dn_chg[j],corPeriod); fcstVBE_up[j] = fcstVBE_up[j-1] * (1+(up_chg[j]*up_cor[j])); //이전값에 상관도와 변동률을 곱해서 계산 fcstVBE_dn[j] = fcstVBE_dn[j-1] * (1+(dn_chg[j]*dn_cor[j])); } VBEup = fcstVBE_up[N]; 2. 함수명 : VBEdn input : N(Numeric), len0(Numeric),len1(Numeric),len2(Numeric),len3(Numeric),len4(Numeric),len5(Numeric),corPeriod(Numeric); Var:chng_rt(0),j(0),ma_val(0),std_val(0),dn_rng(0),up_rng(0),rawVBE_up(0),rawVBE_dn(0); Array:len[6](0),VBE_up[6](0),VBE_dn[6](0), up_chg[6](0),dn_chg[6](0),up_cor[6](0),dn_cor[6](0), fcstVBE_up[6](0),fcstVBE_dn[6](0); len[0] = len0; len[1] = len1; len[2] = len2; len[3] = len3; len[4] = len4; len[5] = len5; chng_rt = (C/C[1]-1); //가격 변동률 ma_val = ma(chng_rt,len[0]); //가격변동률의 평균 std_val = Std(chng_rt,len[0]); //가격변동률의 표준편차 dn_rng = ma_val - (std_val * 2); up_rng = ma_val + (std_val * 2); rawVBE_up = C * (1 + up_rng); //원시VBE rawVBE_dn = C * (1 + dn_rng); for j = 0 to 5 { VBE_up[j] = wma(rawVBE_up,len[j]); //원시VBE를 가중이평으로 평활화 VBE_dn[j] = wma(rawVBE_dn,len[j]); if VBE_up[j][1] > 0 then up_chg[j] = (VBE_up[j]-VBE_up[j][1])/VBE_up[j][1]; //VBE의 변동률 if VBE_dn[j][1] > 0 then dn_chg[j] = (VBE_dn[j]-VBE_dn[j][1])/VBE_dn[j][1]; } fcstVBE_up[0] = VBE_up[0]; fcstVBE_dn[0] = VBE_dn[0]; for j = 1 to 5 { up_cor[j] = Correlation(up_chg[0], up_chg[j],corPeriod); //21일 VBE변동률과 17,13,9,5,2 변동률간의 상관도 dn_cor[j] = Correlation(dn_chg[0], dn_chg[j],corPeriod); fcstVBE_up[j] = fcstVBE_up[j-1] * (1+(up_chg[j]*up_cor[j])); //이전값에 상관도와 변동률을 곱해서 계산 fcstVBE_dn[j] = fcstVBE_dn[j-1] * (1+(dn_chg[j]*dn_cor[j])); } VBEdn = fcstVBE_dn[N]; 3. 지표식등에서 아래와 같이 함수 호출해 사용하시면 됩니다. input : len0(21),len1(17),len2(13),len3(9),len4(5),len5(2),corPeriod(63); plot1(VBEup(0,len0,len1,len2,len3,len4,len5,corPeriod),"상-5",RED); //5봉 뒤로 이동 plot2(VBEdn(0,len0,len1,len2,len3,len4,len5,corPeriod),"하-5",BLUE); //5봉 뒤로 이동 if LastBarOnChart then { //마지막봉에서 아래 5봉만 추가로 출력 plot3(VBEup(5,len0,len1,len2,len3,len4,len5,corPeriod),"상0",RED); plot4(VBEup(4,len0,len1,len2,len3,len4,len5,corPeriod),"상-1",RED); //1봉 뒤로 이동 plot5(VBEup(3,len0,len1,len2,len3,len4,len5,corPeriod),"상-2",RED); //2봉 뒤로 이동 plot6(VBEup(2,len0,len1,len2,len3,len4,len5,corPeriod),"상-3",RED); //3봉 뒤로 이동 plot7(VBEup(1,len0,len1,len2,len3,len4,len5,corPeriod),"상-4",RED); //4봉 뒤로 이동 plot8(VBEdn(1,len0,len1,len2,len3,len4,len5,corPeriod),"하0",BLUE); plot9(VBEdn(2,len0,len1,len2,len3,len4,len5,corPeriod),"하-1",BLUE); //1봉 뒤로 이동 plot10(VBEdn(3,len0,len1,len2,len3,len4,len5,corPeriod),"하-2",BLUE); //2봉 뒤로 이동 plot11(VBEdn(4,len0,len1,len2,len3,len4,len5,corPeriod),"하-3",BLUE); //3봉 뒤로 이동 plot12(VBEdn(5,len0,len1,len2,len3,len4,len5,corPeriod),"하-4",BLUE); //4봉 뒤로 이동 } 즐거운 하루되세요 > 양치기 님이 쓴 글입니다. > 제목 : 사용자 함수 부탁드립니다. > 항상 도움주셔서 감사합니다. 아래는 수식지왕님의 변동성 지표에 대한 지표입니다. 이걸 특정기간에 대한 변동성에 대한 사용자 함수로 만들어 주셨으면 감사하겠습니다. #==========================================# # 지 표 명 : Volatility Based Envelopes # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Var:chng_rt(0),j(0),ma_val(0),std_val(0),dn_rng(0),up_rng(0),rawVBE_up(0),rawVBE_dn(0); Array:len[6](0),VBE_up[6](0),VBE_dn[6](0), up_chg[6](0),dn_chg[6](0),up_cor[6](0),dn_cor[6](0), fcstVBE_up[6](0),fcstVBE_dn[6](0); len[0] = 21; len[1] = 17; len[2] = 13; len[3] = 9; len[4] = 5; len[5] = 2; chng_rt = (C/C[1]-1); //가격 변동률 ma_val = ma(chng_rt,len[0]); //가격변동률의 평균 std_val = Std(chng_rt,len[0]); //가격변동률의 표준편차 dn_rng = ma_val - (std_val * 2); up_rng = ma_val + (std_val * 2); rawVBE_up = C * (1 + up_rng); //원시VBE rawVBE_dn = C * (1 + dn_rng); for j = 0 to 5 { VBE_up[j] = wma(rawVBE_up,len[j]); //원시VBE를 가중이평으로 평활화 VBE_dn[j] = wma(rawVBE_dn,len[j]); if VBE_up[j][1] > 0 then up_chg[j] = (VBE_up[j]-VBE_up[j][1])/VBE_up[j][1]; //VBE의 변동률 if VBE_dn[j][1] > 0 then dn_chg[j] = (VBE_dn[j]-VBE_dn[j][1])/VBE_dn[j][1]; } fcstVBE_up[0] = VBE_up[0]; fcstVBE_dn[0] = VBE_dn[0]; for j = 1 to 5 { up_cor[j] = Correlation(up_chg[0], up_chg[j],63); //21일 VBE변동률과 17,13,9,5,2 변동률간의 상관도 dn_cor[j] = Correlation(dn_chg[0], dn_chg[j],63); fcstVBE_up[j] = fcstVBE_up[j-1] * (1+(up_chg[j]*up_cor[j])); //이전값에 상관도와 변동률을 곱해서 계산 fcstVBE_dn[j] = fcstVBE_dn[j-1] * (1+(dn_chg[j]*dn_cor[j])); } plot1(fcstVBE_up[0],"상-5",RED); //5봉 뒤로 이동 plot2(fcstVBE_dn[0],"하-5",BLUE); //5봉 뒤로 이동 if LastBarOnChart then { //마지막봉에서 아래 5봉만 추가로 출력 plot3(fcstVBE_up[5],"상0",RED); plot4(fcstVBE_up[4],"상-1",RED); //1봉 뒤로 이동 plot5(fcstVBE_up[3],"상-2",RED); //2봉 뒤로 이동 plot6(fcstVBE_up[2],"상-3",RED); //3봉 뒤로 이동 plot7(fcstVBE_up[1],"상-4",RED); //4봉 뒤로 이동 plot8(fcstVBE_dn[5],"하0",BLUE); plot9(fcstVBE_dn[4],"하-1",BLUE); //1봉 뒤로 이동 plot10(fcstVBE_dn[3],"하-2",BLUE); //2봉 뒤로 이동 plot11(fcstVBE_dn[2],"하-3",BLUE); //3봉 뒤로 이동 plot12(fcstVBE_dn[1],"하-4",BLUE); //4봉 뒤로 이동 }