커뮤니티

Data3에 대한 식으로 가 맞는지 검토 부탁드립니다.

프로필 이미지
매버릭
2021-02-02 08:41:12
658
글번호 146034
답변완료
#==========================================# # 지 표 명 : Volatility Based Envelopes 확장 #==========================================# input:N(9),multi(2),Period(63); Var:chng_rt(0,Data3),j(0,Data3),ma_val(0,Data3),std_val(0,Data3), dn_rng(0,Data3),up_rng(0,Data3),rawVBE_up(0,Data3),rawVBE_dn(0,Data3); Array:len[11](0,Data3),VBE_up[11](0,Data3),VBE_dn[11](0,Data3), up_chg[11](0,Data3),dn_chg[11](0,Data3),up_cor[11](0,Data3),dn_cor[11](0,Data3), fcstVBE_up[11](0,Data3),fcstVBE_dn[11](0,Data3); len[0] = 2; len[1] = 5; len[2] = 9; len[3] = 13; len[4] = 17; len[5] = 21; len[6] = 25; len[7] = 29; len[8] = 33; len[9] = 37; len[10] = 41; chng_rt = Data3((C/C[1]-1)); // 가격 변동률 ma_val = Data3(ma(chng_rt,len[N])); // 가격변동률의 평균 std_val = Data3(Std(chng_rt,len[N])); // 가격변동률의 표준편차 dn_rng = ma_val - (std_val * multi); up_rng = ma_val + (std_val * multi); rawVBE_up = Data3(C * (1 + up_rng)); // 원시VBE rawVBE_dn = Data3(C * (1 + dn_rng)); for j = 0 to N { VBE_up[j] = Data3(wma(rawVBE_up,len[j])); // 원시VBE를 가중이평으로 평활화 VBE_dn[j] = Data3(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[N] = VBE_up[N]; fcstVBE_dn[N] = VBE_dn[N]; for j = N - 1 downto 0 { up_cor[j] = Data3(Correlation(up_chg[N], up_chg[j],Period)); // 21일 VBE변동률과 17,13,9,5,2 변동률간의 상관도 dn_cor[j] = Data3(Correlation(dn_chg[N], dn_chg[j],Period)); 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])); } Var:Size(5,Data3); plot1(fcstVBE_up[N],"상-N",RED,DEF,Size-1); // N봉 뒤로 이동 plot2(fcstVBE_dn[N],"하-N",BLUE,DEF,Size-1); // N봉 뒤로 이동 FixPlotShift(1,-N); FixPlotShift(2,-N); if Data3(LastBarOnChart) then { // 마지막봉에서 아래 N봉만 추가로 출력 plot3(fcstVBE_up[0],"상0",RED,DEF,Size); if N > 1 then plot4(fcstVBE_up[1],"상-1",RED,DEF,Size); // 1봉 뒤로 이동 if N > 2 then plot5(fcstVBE_up[2],"상-2",RED,DEF,Size); // 2봉 뒤로 이동 if N > 3 then plot6(fcstVBE_up[3],"상-3",RED,DEF,Size); // 3봉 뒤로 이동 if N > 4 then plot7(fcstVBE_up[4],"상-4",RED,DEF,Size); // 4봉 뒤로 이동 if N > 5 then plot8(fcstVBE_up[5],"상-5",RED,DEF,Size); // 5봉 뒤로 이동 if N > 6 then plot9(fcstVBE_up[6],"상-6",RED,DEF,Size); // 6봉 뒤로 이동 if N > 7 then plot10(fcstVBE_up[7],"상-7",RED,DEF,Size); // 7봉 뒤로 이동 if N > 8 then plot11(fcstVBE_up[8],"상-8",RED,DEF,Size); // 8봉 뒤로 이동 plot12(fcstVBE_dn[0],"하0",BLUE,DEF,Size); if N > 1 then plot13(fcstVBE_dn[1],"하-1",BLUE,DEF,Size); // 1봉 뒤로 이동 if N > 2 then plot14(fcstVBE_dn[2],"하-2",BLUE,DEF,Size); // 2봉 뒤로 이동 if N > 3 then plot15(fcstVBE_dn[3],"하-3",BLUE,DEF,Size); // 3봉 뒤로 이동 if N > 4 then plot16(fcstVBE_dn[4],"하-4",BLUE,DEF,Size); // 4봉 뒤로 이동 if N > 5 then plot17(fcstVBE_dn[5],"하-5",BLUE,DEF,Size); // 5봉 뒤로 이동 if N > 6 then plot18(fcstVBE_dn[6],"하-6",BLUE,DEF,Size); // 6봉 뒤로 이동 if N > 7 then plot19(fcstVBE_dn[7],"하-7",BLUE,DEF,Size); // 7봉 뒤로 이동 if N > 8 then plot20(fcstVBE_dn[8],"하-8",BLUE,DEF,Size); // 8봉 뒤로 이동 FixPlotShift(4,-1); FixPlotShift(5,-2); FixPlotShift(6,-3); FixPlotShift(7,-4); FixPlotShift(8,-5); FixPlotShift(9,-6); FixPlotShift(10,-7); FixPlotShift(11,-8); FixPlotShift(13,-1); FixPlotShift(14,-2); FixPlotShift(15,-3); FixPlotShift(16,-4); FixPlotShift(17,-5); FixPlotShift(18,-6); FixPlotShift(19,-7); FixPlotShift(20,-8); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-02-03 09:32:46

안녕하세요 예스스탁입니다. if Data3(LastBarOnChart) then { // 마지막봉에서 아래 N봉만 추가로 출력 위 내용만 아래와 같이 변경하시면 됩니다. if Data3(LastBarOnChart == 1) then { // 마지막봉에서 아래 N봉만 추가로 출력 if문은 조건이 지정되어야 합니다. Data3(LastBarOnChart)로만 값만 지정하면 매봉 출력이 됩니다. input:N(9),multi(2),Period(63); Var:chng_rt(0,Data3),j(0,Data3),ma_val(0,Data3),std_val(0,Data3), dn_rng(0,Data3),up_rng(0,Data3),rawVBE_up(0,Data3),rawVBE_dn(0,Data3); Array:len[11](0,Data3),VBE_up[11](0,Data3),VBE_dn[11](0,Data3), up_chg[11](0,Data3),dn_chg[11](0,Data3),up_cor[11](0,Data3),dn_cor[11](0,Data3), fcstVBE_up[11](0,Data3),fcstVBE_dn[11](0,Data3); len[0] = 2; len[1] = 5; len[2] = 9; len[3] = 13; len[4] = 17; len[5] = 21; len[6] = 25; len[7] = 29; len[8] = 33; len[9] = 37; len[10] = 41; chng_rt = Data3((C/C[1]-1)); // 가격 변동률 ma_val = Data3(ma(chng_rt,len[N])); // 가격변동률의 평균 std_val = Data3(Std(chng_rt,len[N])); // 가격변동률의 표준편차 dn_rng = ma_val - (std_val * multi); up_rng = ma_val + (std_val * multi); rawVBE_up = Data3(C * (1 + up_rng)); // 원시VBE rawVBE_dn = Data3(C * (1 + dn_rng)); for j = 0 to N { VBE_up[j] = Data3(wma(rawVBE_up,len[j])); // 원시VBE를 가중이평으로 평활화 VBE_dn[j] = Data3(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[N] = VBE_up[N]; fcstVBE_dn[N] = VBE_dn[N]; for j = N - 1 downto 0 { up_cor[j] = Data3(Correlation(up_chg[N], up_chg[j],Period)); // 21일 VBE변동률과 17,13,9,5,2 변동률간의 상관도 dn_cor[j] = Data3(Correlation(dn_chg[N], dn_chg[j],Period)); 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])); } Var:Size(5,Data3); plot1(fcstVBE_up[N],"상-N",RED,DEF,Size-1); // N봉 뒤로 이동 plot2(fcstVBE_dn[N],"하-N",BLUE,DEF,Size-1); // N봉 뒤로 이동 FixPlotShift(1,-N); FixPlotShift(2,-N); if Data3(LastBarOnChart == 1) then { // 마지막봉에서 아래 N봉만 추가로 출력 plot3(fcstVBE_up[0],"상0",RED,DEF,Size); if N > 1 then plot4(fcstVBE_up[1],"상-1",RED,DEF,Size); // 1봉 뒤로 이동 if N > 2 then plot5(fcstVBE_up[2],"상-2",RED,DEF,Size); // 2봉 뒤로 이동 if N > 3 then plot6(fcstVBE_up[3],"상-3",RED,DEF,Size); // 3봉 뒤로 이동 if N > 4 then plot7(fcstVBE_up[4],"상-4",RED,DEF,Size); // 4봉 뒤로 이동 if N > 5 then plot8(fcstVBE_up[5],"상-5",RED,DEF,Size); // 5봉 뒤로 이동 if N > 6 then plot9(fcstVBE_up[6],"상-6",RED,DEF,Size); // 6봉 뒤로 이동 if N > 7 then plot10(fcstVBE_up[7],"상-7",RED,DEF,Size); // 7봉 뒤로 이동 if N > 8 then plot11(fcstVBE_up[8],"상-8",RED,DEF,Size); // 8봉 뒤로 이동 plot12(fcstVBE_dn[0],"하0",BLUE,DEF,Size); if N > 1 then plot13(fcstVBE_dn[1],"하-1",BLUE,DEF,Size); // 1봉 뒤로 이동 if N > 2 then plot14(fcstVBE_dn[2],"하-2",BLUE,DEF,Size); // 2봉 뒤로 이동 if N > 3 then plot15(fcstVBE_dn[3],"하-3",BLUE,DEF,Size); // 3봉 뒤로 이동 if N > 4 then plot16(fcstVBE_dn[4],"하-4",BLUE,DEF,Size); // 4봉 뒤로 이동 if N > 5 then plot17(fcstVBE_dn[5],"하-5",BLUE,DEF,Size); // 5봉 뒤로 이동 if N > 6 then plot18(fcstVBE_dn[6],"하-6",BLUE,DEF,Size); // 6봉 뒤로 이동 if N > 7 then plot19(fcstVBE_dn[7],"하-7",BLUE,DEF,Size); // 7봉 뒤로 이동 if N > 8 then plot20(fcstVBE_dn[8],"하-8",BLUE,DEF,Size); // 8봉 뒤로 이동 FixPlotShift(4,-1); FixPlotShift(5,-2); FixPlotShift(6,-3); FixPlotShift(7,-4); FixPlotShift(8,-5); FixPlotShift(9,-6); FixPlotShift(10,-7); FixPlotShift(11,-8); FixPlotShift(13,-1); FixPlotShift(14,-2); FixPlotShift(15,-3); FixPlotShift(16,-4); FixPlotShift(17,-5); FixPlotShift(18,-6); FixPlotShift(19,-7); FixPlotShift(20,-8); } 즐거운 하루되세요 > 매버릭 님이 쓴 글입니다. > 제목 : Data3에 대한 식으로 가 맞는지 검토 부탁드립니다. > #==========================================# # 지 표 명 : Volatility Based Envelopes 확장 #==========================================# input:N(9),multi(2),Period(63); Var:chng_rt(0,Data3),j(0,Data3),ma_val(0,Data3),std_val(0,Data3), dn_rng(0,Data3),up_rng(0,Data3),rawVBE_up(0,Data3),rawVBE_dn(0,Data3); Array:len[11](0,Data3),VBE_up[11](0,Data3),VBE_dn[11](0,Data3), up_chg[11](0,Data3),dn_chg[11](0,Data3),up_cor[11](0,Data3),dn_cor[11](0,Data3), fcstVBE_up[11](0,Data3),fcstVBE_dn[11](0,Data3); len[0] = 2; len[1] = 5; len[2] = 9; len[3] = 13; len[4] = 17; len[5] = 21; len[6] = 25; len[7] = 29; len[8] = 33; len[9] = 37; len[10] = 41; chng_rt = Data3((C/C[1]-1)); // 가격 변동률 ma_val = Data3(ma(chng_rt,len[N])); // 가격변동률의 평균 std_val = Data3(Std(chng_rt,len[N])); // 가격변동률의 표준편차 dn_rng = ma_val - (std_val * multi); up_rng = ma_val + (std_val * multi); rawVBE_up = Data3(C * (1 + up_rng)); // 원시VBE rawVBE_dn = Data3(C * (1 + dn_rng)); for j = 0 to N { VBE_up[j] = Data3(wma(rawVBE_up,len[j])); // 원시VBE를 가중이평으로 평활화 VBE_dn[j] = Data3(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[N] = VBE_up[N]; fcstVBE_dn[N] = VBE_dn[N]; for j = N - 1 downto 0 { up_cor[j] = Data3(Correlation(up_chg[N], up_chg[j],Period)); // 21일 VBE변동률과 17,13,9,5,2 변동률간의 상관도 dn_cor[j] = Data3(Correlation(dn_chg[N], dn_chg[j],Period)); 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])); } Var:Size(5,Data3); plot1(fcstVBE_up[N],"상-N",RED,DEF,Size-1); // N봉 뒤로 이동 plot2(fcstVBE_dn[N],"하-N",BLUE,DEF,Size-1); // N봉 뒤로 이동 FixPlotShift(1,-N); FixPlotShift(2,-N); if Data3(LastBarOnChart) then { // 마지막봉에서 아래 N봉만 추가로 출력 plot3(fcstVBE_up[0],"상0",RED,DEF,Size); if N > 1 then plot4(fcstVBE_up[1],"상-1",RED,DEF,Size); // 1봉 뒤로 이동 if N > 2 then plot5(fcstVBE_up[2],"상-2",RED,DEF,Size); // 2봉 뒤로 이동 if N > 3 then plot6(fcstVBE_up[3],"상-3",RED,DEF,Size); // 3봉 뒤로 이동 if N > 4 then plot7(fcstVBE_up[4],"상-4",RED,DEF,Size); // 4봉 뒤로 이동 if N > 5 then plot8(fcstVBE_up[5],"상-5",RED,DEF,Size); // 5봉 뒤로 이동 if N > 6 then plot9(fcstVBE_up[6],"상-6",RED,DEF,Size); // 6봉 뒤로 이동 if N > 7 then plot10(fcstVBE_up[7],"상-7",RED,DEF,Size); // 7봉 뒤로 이동 if N > 8 then plot11(fcstVBE_up[8],"상-8",RED,DEF,Size); // 8봉 뒤로 이동 plot12(fcstVBE_dn[0],"하0",BLUE,DEF,Size); if N > 1 then plot13(fcstVBE_dn[1],"하-1",BLUE,DEF,Size); // 1봉 뒤로 이동 if N > 2 then plot14(fcstVBE_dn[2],"하-2",BLUE,DEF,Size); // 2봉 뒤로 이동 if N > 3 then plot15(fcstVBE_dn[3],"하-3",BLUE,DEF,Size); // 3봉 뒤로 이동 if N > 4 then plot16(fcstVBE_dn[4],"하-4",BLUE,DEF,Size); // 4봉 뒤로 이동 if N > 5 then plot17(fcstVBE_dn[5],"하-5",BLUE,DEF,Size); // 5봉 뒤로 이동 if N > 6 then plot18(fcstVBE_dn[6],"하-6",BLUE,DEF,Size); // 6봉 뒤로 이동 if N > 7 then plot19(fcstVBE_dn[7],"하-7",BLUE,DEF,Size); // 7봉 뒤로 이동 if N > 8 then plot20(fcstVBE_dn[8],"하-8",BLUE,DEF,Size); // 8봉 뒤로 이동 FixPlotShift(4,-1); FixPlotShift(5,-2); FixPlotShift(6,-3); FixPlotShift(7,-4); FixPlotShift(8,-5); FixPlotShift(9,-6); FixPlotShift(10,-7); FixPlotShift(11,-8); FixPlotShift(13,-1); FixPlotShift(14,-2); FixPlotShift(15,-3); FixPlotShift(16,-4); FixPlotShift(17,-5); FixPlotShift(18,-6); FixPlotShift(19,-7); FixPlotShift(20,-8); }