커뮤니티
수식 요청 수정해주세요
2007-06-18 06:02:27
999
글번호 12778
안녕 하십니까 3일동안 잠도 안자구 수식끝마치려고 했으나 지식이 모자라
끙끙 앓았습니다 아래 수식 작성하다가 미완성 했습니다
주문식 시스템식 짜려구 애썼는데 저희가 해결이 어려워 부탁드립니다
아래 수식이 구현하는 두개의선이 교차돌파하면 매수또는매도 청산도 포함해서
만들어 주십시요 수정부탁드립니다
답변은 yang 12133 @ empal.com 으로 부탁합니다 하시는일 번창하길빕니다
감사합니다
[내용]
Input:mm(30),n(14);
Var:j(0),k(0),계산주기(0),X(0),sumXY(0),sumX(0),sumY(0),sumX²(0),
MinLRS(0),MinB(0),MinLRL(0);
Array:MinClose[100](0);
if mm >= BarInterval() then {
계산주기 = mm/BarInterval();
}
k = k + 1;
if DayIndex()%계산주기 == 0 then {
for j = 98 downto 0 {
MinClose[j+1] = MinClose[j];
}
X = X + 1;
k = 0;
}
MinClose[0] = C;
#==========================================================================#
# 선형회귀방정식 #
#==========================================================================#
# 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) #
#==========================================================================#
sumXY = 0; sumX = 0; sumY = 0; sumX² = 0;
For j = 0 To n-1 {
sumXY = sumXY + (X-j)*MinClose[j];
sumX = sumX + (X-j);
sumY = sumY + MinClose[j];
sumX²= sumX²+ (X-j)^2;
}
MinLRS = (n*sumXY - sumX*sumY)/(n*sumX²- sumX^2); //선형회귀선 기울기 LRS
MinB = (sumY*sumX²-sumX*sumXY)/(n*sumX²- sumX^2); //선형회귀선 절편 B
MinLRL = MinLRS * X + MinB;
Plot1(MinLRL);
if plot1(minlrl) > plot2(minlrl[k+1]) then buy();
end if
Plot2(MinLRL[k+1]); //현재가 미반영 LRL
if plot1(minlrl) < plot2(minlrl[k+1]) then sell();
end if
답변 1
예스스탁 예스스탁 답변
2007-06-18 15:09:43
> CJ_yang1130 님이 쓴 글입니다.
> 제목 : 수식 요청 수정해주세요
> 안녕 하십니까 3일동안 잠도 안자구 수식끝마치려고 했으나 지식이 모자라
끙끙 앓았습니다 아래 수식 작성하다가 미완성 했습니다
주문식 시스템식 짜려구 애썼는데 저희가 해결이 어려워 부탁드립니다
아래 수식이 구현하는 두개의선이 교차돌파하면 매수또는매도 청산도 포함해서
만들어 주십시요 수정부탁드립니다
답변은 yang 12133 @ empal.com 으로 부탁합니다 하시는일 번창하길빕니다
감사합니다
[내용]
Input:mm(30),n(14);
Var:j(0),k(0),계산주기(0),X(0),sumXY(0),sumX(0),sumY(0),sumX²(0),
MinLRS(0),MinB(0),MinLRL(0);
Array:MinClose[100](0);
if mm >= BarInterval() then {
계산주기 = mm/BarInterval();
}
k = k + 1;
if DayIndex()%계산주기 == 0 then {
for j = 98 downto 0 {
MinClose[j+1] = MinClose[j];
}
X = X + 1;
k = 0;
}
MinClose[0] = C;
#==========================================================================#
# 선형회귀방정식 #
#==========================================================================#
# 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) #
#==========================================================================#
sumXY = 0; sumX = 0; sumY = 0; sumX² = 0;
For j = 0 To n-1 {
sumXY = sumXY + (X-j)*MinClose[j];
sumX = sumX + (X-j);
sumY = sumY + MinClose[j];
sumX²= sumX²+ (X-j)^2;
}
MinLRS = (n*sumXY - sumX*sumY)/(n*sumX²- sumX^2); //선형회귀선 기울기 LRS
MinB = (sumY*sumX²-sumX*sumXY)/(n*sumX²- sumX^2); //선형회귀선 절편 B
MinLRL = MinLRS * X + MinB;
Plot1(MinLRL);
if plot1(minlrl) > plot2(minlrl[k+1]) then buy();
end if
Plot2(MinLRL[k+1]); //현재가 미반영 LRL
if plot1(minlrl) < plot2(minlrl[k+1]) then sell();
end if
다음글
이전글