예스스탁
예스스탁 답변
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);
}