커뮤니티
크루드오일 날짜 변경 관련
2017-11-14 16:29:28
151
글번호 114189
한투의 해외선물 예스트레이더를 사용하고 있습니다.
저는 지표중 선형회귀 방정식을 통해 20일동안 시가에서 고가, 저가의 값을 구해서 당일 시가 기준으로 고가 및 저가를 구하고자 다음의 수식을 사용하고 있습니다.
이 수식은 한국 기준으로 작성되어진 것으로 보이는데, 크루드 오일의 경우 장운영 시간이 07:00 ~익일 06:15 으로 알고 있는데, 이 수식을 적용해보니 우리나라 기준으로 새벽0시로 날짜가 변경되어서 차트에 정확하지 않는 지지와 저항이 표시되고 있습니다.
이를 해외 선물에 맞게끔 수정 부탁드립니다.
Input:n(20);
Var:j(0),고가기울기(0),고가절편(0),고가예상치(0),고가표준오차(0),
저가기울기(0),저가절편(0),저가예상치(0),저가표준오차(0),trend(0),
sumOH(0),sumOL(0),sumO(0),sumH(0),sumL(0),sumO²(0),sumH²(0),sumL²(0);
if Date[1] < Date then {
sumOH = 0; sumOL = 0; sumO = 0; sumH = 0; sumL = 0; sumO² = 0; sumH² = 0; sumL² = 0;
for j = 1 to n {
sumOH = sumOH + DayOpen(j)*DayHigh(j);
sumOL = sumOL + DayOpen(j)*DayLow(j);
sumO = sumO + DayOpen(j);
sumH = sumH + DayHigh(j);
sumL = sumL + DayLow(j);
sumO² = sumO² + DayOpen(j)^2;
sumH² = sumH² + DayHigh(j)^2;
sumL² = sumL² + DayLow(j)^2;
}
#==========================================================================#
# 선형회귀방정식 #
#==========================================================================#
# nΣxy - (Σx)(Σy) #
# 기울기 a = --------------------- #
# nΣx²- (Σx)² #
# #
# = (n*sum(xy) - sum(x)*sum(y)) / (n*sum(x^2) - sum(x)^2) #
# #
# (Σy)(Σx²)-(Σx)(Σxy) #
# 절편 b = --------------------------- #
# nΣx²- (Σx)² #
# #
# = (sum(y)*sum(x^2) - sum(x)*sum(xy)) / (n*sum(x^2) - sum(x)^2) #
#==========================================================================#
고가기울기 = (n*sumOH - sumO*sumH) / (n*sumO²- sumO^2);
고가절편 = (sumH*sumO² - sumO*sumOH) / (n*sumO² - sumO^2);
저가기울기 = (n*sumOL - sumO*sumL) / (n*sumO² - sumO^2);
저가절편 = (sumL*sumO² - sumO*sumOL) / (n*sumO² - sumO^2);
고가예상치 = 고가기울기 * DayOpen() + 고가절편;
저가예상치 = 저가기울기 * DayOpen() + 저가절편;
#==========================================================================#
# 표준오차 공식 #
#==========================================================================#
# _______________________________________________________ #
# / 1 [nΣxy - (Σx)(Σy)]² #
# Sxy = / [ ------- ][nΣy²- (Σy)²- ----------------------- ] #
# √ n(n-2) nΣx²- (Σx)² #
# #
# = sqrt((1/(n*(n-2))) * (n*sum(y^2) - sum(y)^2 - #
# ((n*sum(x*y) - sum(x)*sum(y))^2 / (n*sum(x^2) - sum(x)^2)))) #
#==========================================================================#
고가표준오차 = sqrt((1/(n*(n-2))) * (n*sumH² - sumH^2 -
((n*sumOH - sumO*sumH)^2 / (n*sumO² - sumO^2))));
저가표준오차 = sqrt((1/(n*(n-2))) * (n*sumL² - sumL^2 -
((n*sumOL - sumO*sumL)^2 / (n*sumO² - sumO^2))));
}
var1 = ema(h,50);
var2= ema(l,50);
var7=var1+(var1-ema(var1,50));
var8=var2+(var2-ema(var2,50));
if var7[2] > var7[1] and var7[1] < var7 then trend=1;
if var7[2] < var7[1] and var7[1] > var7 then trend=0;
if sdate== CurrentDate then {
plot2(round(고가예상치 + 0.5 * 고가표준오차,1),"2차 저항선");
plot3(round(고가예상치 - 0.5 * 고가표준오차,1),"1차 저항선");
plot6(round(저가예상치 + 0.5 * 저가표준오차,1),"1차 지지선");
plot7(round(저가예상치 - 0.5 * 저가표준오차,1),"2차 지지선");
plot8(dayopen,"시가");
Plot13(var7,"이평",iff(trend == 1,green, rgb(0,84,225)));
Plot14(var8,"이평",iff(trend == 1,green, rgb(0,84,225)));
답변 1
예스스탁 예스스탁 답변
2017-11-15 11:25:39
안녕하세요
예스스탁입니다.
영업일 기준으로 변경했습니다.
Input:n(20);
Var:j(0),고가기울기(0),고가절편(0),고가예상치(0),고가표준오차(0),
저가기울기(0),저가절편(0),저가예상치(0),저가표준오차(0),trend(0),
sumOH(0),sumOL(0),sumO(0),sumH(0),sumL(0),sumO²(0),sumH²(0),sumL²(0);
if bDate[1] < bDate then {
sumOH = 0; sumOL = 0; sumO = 0; sumH = 0; sumL = 0; sumO² = 0; sumH² = 0; sumL² = 0;
for j = 1 to n {
sumOH = sumOH + DayOpen(j)*DayHigh(j);
sumOL = sumOL + DayOpen(j)*DayLow(j);
sumO = sumO + DayOpen(j);
sumH = sumH + DayHigh(j);
sumL = sumL + DayLow(j);
sumO² = sumO² + DayOpen(j)^2;
sumH² = sumH² + DayHigh(j)^2;
sumL² = sumL² + DayLow(j)^2;
}
#==========================================================================#
# 선형회귀방정식 #
#==========================================================================#
# nΣxy - (Σx)(Σy) #
# 기울기 a = --------------------- #
# nΣx²- (Σx)² #
# #
# = (n*sum(xy) - sum(x)*sum(y)) / (n*sum(x^2) - sum(x)^2) #
# #
# (Σy)(Σx²)-(Σx)(Σxy) #
# 절편 b = --------------------------- #
# nΣx²- (Σx)² #
# #
# = (sum(y)*sum(x^2) - sum(x)*sum(xy)) / (n*sum(x^2) - sum(x)^2) #
#==========================================================================#
고가기울기 = (n*sumOH - sumO*sumH) / (n*sumO²- sumO^2);
고가절편 = (sumH*sumO² - sumO*sumOH) / (n*sumO² - sumO^2);
저가기울기 = (n*sumOL - sumO*sumL) / (n*sumO² - sumO^2);
저가절편 = (sumL*sumO² - sumO*sumOL) / (n*sumO² - sumO^2);
고가예상치 = 고가기울기 * DayOpen() + 고가절편;
저가예상치 = 저가기울기 * DayOpen() + 저가절편;
#==========================================================================#
# 표준오차 공식 #
#==========================================================================#
# _______________________________________________________ #
# / 1 [nΣxy - (Σx)(Σy)]² #
# Sxy = / [ ------- ][nΣy²- (Σy)²- ----------------------- ] #
# √ n(n-2) nΣx²- (Σx)² #
# #
# = sqrt((1/(n*(n-2))) * (n*sum(y^2) - sum(y)^2 - #
# ((n*sum(x*y) - sum(x)*sum(y))^2 / (n*sum(x^2) - sum(x)^2)))) #
#==========================================================================#
고가표준오차 = sqrt((1/(n*(n-2))) * (n*sumH² - sumH^2 -
((n*sumOH - sumO*sumH)^2 / (n*sumO² - sumO^2))));
저가표준오차 = sqrt((1/(n*(n-2))) * (n*sumL² - sumL^2 -
((n*sumOL - sumO*sumL)^2 / (n*sumO² - sumO^2))));
}
var1 = ema(h,50);
var2= ema(l,50);
var7=var1+(var1-ema(var1,50));
var8=var2+(var2-ema(var2,50));
if var7[2] > var7[1] and var7[1] < var7 then trend=1;
if var7[2] < var7[1] and var7[1] > var7 then trend=0;
if bdate == CurrentDate then {
plot2(round(고가예상치 + 0.5 * 고가표준오차,1),"2차 저항선");
plot3(round(고가예상치 - 0.5 * 고가표준오차,1),"1차 저항선");
plot6(round(저가예상치 + 0.5 * 저가표준오차,1),"1차 지지선");
plot7(round(저가예상치 - 0.5 * 저가표준오차,1),"2차 지지선");
plot8(dayopen,"시가");
Plot13(var7,"이평",iff(trend == 1,green, rgb(0,84,225)));
Plot14(var8,"이평",iff(trend == 1,green, rgb(0,84,225)));
}
즐거운 하루되세요
> 관람자 님이 쓴 글입니다.
> 제목 : 크루드오일 날짜 변경 관련
> 한투의 해외선물 예스트레이더를 사용하고 있습니다.
저는 지표중 선형회귀 방정식을 통해 20일동안 시가에서 고가, 저가의 값을 구해서 당일 시가 기준으로 고가 및 저가를 구하고자 다음의 수식을 사용하고 있습니다.
이 수식은 한국 기준으로 작성되어진 것으로 보이는데, 크루드 오일의 경우 장운영 시간이 07:00 ~익일 06:15 으로 알고 있는데, 이 수식을 적용해보니 우리나라 기준으로 새벽0시로 날짜가 변경되어서 차트에 정확하지 않는 지지와 저항이 표시되고 있습니다.
이를 해외 선물에 맞게끔 수정 부탁드립니다.
Input:n(20);
Var:j(0),고가기울기(0),고가절편(0),고가예상치(0),고가표준오차(0),
저가기울기(0),저가절편(0),저가예상치(0),저가표준오차(0),trend(0),
sumOH(0),sumOL(0),sumO(0),sumH(0),sumL(0),sumO²(0),sumH²(0),sumL²(0);
if Date[1] < Date then {
sumOH = 0; sumOL = 0; sumO = 0; sumH = 0; sumL = 0; sumO² = 0; sumH² = 0; sumL² = 0;
for j = 1 to n {
sumOH = sumOH + DayOpen(j)*DayHigh(j);
sumOL = sumOL + DayOpen(j)*DayLow(j);
sumO = sumO + DayOpen(j);
sumH = sumH + DayHigh(j);
sumL = sumL + DayLow(j);
sumO² = sumO² + DayOpen(j)^2;
sumH² = sumH² + DayHigh(j)^2;
sumL² = sumL² + DayLow(j)^2;
}
#==========================================================================#
# 선형회귀방정식 #
#==========================================================================#
# nΣxy - (Σx)(Σy) #
# 기울기 a = --------------------- #
# nΣx²- (Σx)² #
# #
# = (n*sum(xy) - sum(x)*sum(y)) / (n*sum(x^2) - sum(x)^2) #
# #
# (Σy)(Σx²)-(Σx)(Σxy) #
# 절편 b = --------------------------- #
# nΣx²- (Σx)² #
# #
# = (sum(y)*sum(x^2) - sum(x)*sum(xy)) / (n*sum(x^2) - sum(x)^2) #
#==========================================================================#
고가기울기 = (n*sumOH - sumO*sumH) / (n*sumO²- sumO^2);
고가절편 = (sumH*sumO² - sumO*sumOH) / (n*sumO² - sumO^2);
저가기울기 = (n*sumOL - sumO*sumL) / (n*sumO² - sumO^2);
저가절편 = (sumL*sumO² - sumO*sumOL) / (n*sumO² - sumO^2);
고가예상치 = 고가기울기 * DayOpen() + 고가절편;
저가예상치 = 저가기울기 * DayOpen() + 저가절편;
#==========================================================================#
# 표준오차 공식 #
#==========================================================================#
# _______________________________________________________ #
# / 1 [nΣxy - (Σx)(Σy)]² #
# Sxy = / [ ------- ][nΣy²- (Σy)²- ----------------------- ] #
# √ n(n-2) nΣx²- (Σx)² #
# #
# = sqrt((1/(n*(n-2))) * (n*sum(y^2) - sum(y)^2 - #
# ((n*sum(x*y) - sum(x)*sum(y))^2 / (n*sum(x^2) - sum(x)^2)))) #
#==========================================================================#
고가표준오차 = sqrt((1/(n*(n-2))) * (n*sumH² - sumH^2 -
((n*sumOH - sumO*sumH)^2 / (n*sumO² - sumO^2))));
저가표준오차 = sqrt((1/(n*(n-2))) * (n*sumL² - sumL^2 -
((n*sumOL - sumO*sumL)^2 / (n*sumO² - sumO^2))));
}
var1 = ema(h,50);
var2= ema(l,50);
var7=var1+(var1-ema(var1,50));
var8=var2+(var2-ema(var2,50));
if var7[2] > var7[1] and var7[1] < var7 then trend=1;
if var7[2] < var7[1] and var7[1] > var7 then trend=0;
if sdate== CurrentDate then {
plot2(round(고가예상치 + 0.5 * 고가표준오차,1),"2차 저항선");
plot3(round(고가예상치 - 0.5 * 고가표준오차,1),"1차 저항선");
plot6(round(저가예상치 + 0.5 * 저가표준오차,1),"1차 지지선");
plot7(round(저가예상치 - 0.5 * 저가표준오차,1),"2차 지지선");
plot8(dayopen,"시가");
Plot13(var7,"이평",iff(trend == 1,green, rgb(0,84,225)));
Plot14(var8,"이평",iff(trend == 1,green, rgb(0,84,225)));