예스스탁
예스스탁 답변
2022-11-22 10:17:29
안녕하세요
예스스탁입니다.
1
for j = 0 to 상관기간 - 1
{
R2 = Data2((o2[k]-C2[k+1])/C2[k+1]*100); //코스닥 일봉 - 당일 갭
위와 같이 for문에서 j로 값을 받는데 아래 수식에는 k가 사용되어 있습니다.
수정한 식입니다.
Input : 상관기간(30);
Var: K(0,data2), R2(0, Data2), R3(0,data3),R4(0,data4), R5(0,data5), 상관도(0, Data2), 상관도2(0, Data4), 상관도평균(0);
Var: j(0,data3),sumXY(0,data3), sumX(0,data3), sumY(0,data3), sumX2(0,data3), sumY2(0,data3);
Var: j3(0,data3),sumXY3(0,data3), sumX3(0,data3), sumY3(0,data3), sumX23(0,data3), sumY23(0,data3);
//코스닥, 나스닥
Array : o2[30](0,Data2), C2[30](0,Data2),C3[30](0,Data2);
if Data2(bDate) == data3(Bdate) Then
{
O2[0] = Data2(O);
C2[0] = Data2(c);
C3[0] = Data3(c);
For k = 1 to 상관기간
{
o2[k] = o2[k-1][1];
C2[k] = C2[k-1][1];
C3[k] = C3[k-1][1];
}
}
if C2[상관기간] > 0 and C3[상관기간] > 0 Then
{
sumXY = 0; sumX = 0; sumY = 0; sumX2 = 0; sumY2 = 0;
for j = 0 to 상관기간 - 1
{
R2 = Data2((o2[j]-C2[j+1])/C2[j+1]*100); //코스닥 일봉 - 당일 갭
R3 = Data3((C3[j]-C3[j+1])/C3[j+1]*100); //나스닥 일봉
sumXY = sumXY + R2[j]*R3[j];
sumX = sumX + R2[j];
sumY = sumY + R3[j];
sumX2 = sumX2 + R2[j]^2;
sumY2 = sumY2 + R3[j]^2;
}
상관도 = (상관기간 * sumXY - sumX * sumY)/
Sqrt((상관기간 * sumX2- sumX^2) * (상관기간 * sumY2- sumY^2));
}
//다우 코스피
Array : C4[30](0,Data2),C5[30](0,Data2), o5[30](0,Data2);
if Data4(bDate) == data5(Bdate) Then
{
C4[0] = Data4(c);
C5[0] = Data5(c);
O5[0] = Data5(O);
For k = 1 to 상관기간
{
C4[k] = C4[k-1][1];
C5[k] = C5[k-1][1];
o5[k] = o5[k-1][1];
}
}
if C2[상관기간] > 0 and C3[상관기간] > 0 Then
{
sumXY3 = 0; sumX3 = 0; sumY3 = 0; sumX23 = 0; sumY23 = 0;
for j3 = 0 to 상관기간 - 1
{
R4 = Data4((C4[j3]-C4[j3+1])/C4[j3+1]*100); //다우 일봉
R5 = Data5((o5[j3]-C5[j3+1])/C5[j3+1]*100); //코스피 일봉 - 당일 갭
sumXY3 = sumXY3 + R4[j3]*R5[j];
sumX3 = sumX3 + R4[j3];
sumY3 = sumY3 + R5[j3];
sumX23 = sumX23 + R4[j3]^2;
sumY23 = sumY23 + R5[j3]^2;
}
상관도2 = (상관기간 * sumXY3 - sumX3 * sumY3)/
Sqrt((상관기간 * sumX23- sumX^23) * (상관기간 * sumY23- sumY3^2));
}
상관도평균 = (상관도 + 상관도2)/2;
Plot1(상관도, "상관도", Red);
Plot2(상관도2, "상관도2", Blue);
Plot3(상관도평균, "상관도평균", Black);
2
Input : 기간(30);
var : ii(0,Data2),k(0,Data2),sum(0,Data2),mav(0,Data2);
Array : R2[100](0,Data2), R3[100](0,Data3);
if Data2(bDate) == data3(Bdate) Then
{
ii = ii +1;
R2[0] = Data2((NextBarOpen-C)/C*100);
R3[0] = Data2((C-C[1])/C[1]*100);
For k = 1 to 99
{
R2[k] = R2[k-1][1];
R3[k] = R3[k-1][1];
}
}
if ii >= 기간 Then
{
sum = 0;
For k = 0 to 기간-1
{
sum = sum + (R2[k]-R3[k]);
}
mav = sum/기간;
Plot1(mav);
}
즐거운 하루되세요
> 중박주식 님이 쓴 글입니다.
> 제목 : 지표식 요청입니다.
> 한꺼번에 여러 질문을 드려서 죄송합니다.
몇년만에 다시 시작하니, 뭐가 잘 안되네요.
1. 예전에 작성해주신 수식을 변형한건데 값이 찍히질 않습니다. 오류가 있는 부분을 검토해주실 수 있으신지요?
개요
- data2, 3, 4, 5: 각각 코스닥 일봉, 나스닥 일봉, 다우 일봉, 코스피 일봉
- 이걸 이용해서, 2와 3의 30일 동안 상관관계, 4와 5의 30일 동안 상관관계를 구한 후 두 값을 평균하는 것이 목표임
- 이때, 2와 5(즉, 우리나라 장)는 어제 종가대비 오늘 시가 상승률(즉, 오늘 갭의 크기를 의미)
- 3, 4(즉, 미국장)는 어제 종가 상승률(어제밤 몇 프로 상승 혹은 하락하고 끝났는지)
- 또한, 여기서 중요한 것은 미국과 우리나라 시장에서 혹시라도 장이 열리지 않는 경우에는 상관관계를 구하는 것이 의미가 없으므로 계산에서 제외를 해야한다는 것임. 그래서 미국이 어제 밤에 장이 열렸으며, 오늘 우리나라 장도 장이 열린 경우에만 30일에 포함을 시키고, 두 장 중 한쪽이라도 장이 열리지 않는 경우에는 계산에서 제외시키도록함
구문을 아래와 같이 작성했는데, 모두 N/A로 값이 찍힙니다
Input : 상관기간(30);
Var: K(0,data2), R2(0, Data2), R3(0,data3),R4(0,data4), R5(0,data5), 상관도(0, Data2), 상관도2(0, Data4), 상관도평균(0);
Var: j(0,data3),sumXY(0,data3), sumX(0,data3), sumY(0,data3), sumX2(0,data3), sumY2(0,data3);
Var: j3(0,data3),sumXY3(0,data3), sumX3(0,data3), sumY3(0,data3), sumX23(0,data3), sumY23(0,data3);
//코스닥, 나스닥
Array : o2[30](0,Data2), C2[30](0,Data2),C3[30](0,Data2);
if Data2(bDate) == data3(Bdate) Then
{
O2[0] = Data2(O);
C2[0] = Data2(c);
C3[0] = Data3(c);
For k = 1 to 상관기간
{
o2[k] = o2[k-1][1];
C2[k] = C2[k-1][1];
C3[k] = C3[k-1][1];
}
}
if C2[상관기간] > 0 and C3[상관기간] > 0 Then
{
sumXY = 0; sumX = 0; sumY = 0; sumX2 = 0; sumY2 = 0;
for j = 0 to 상관기간 - 1
{
R2 = Data2((o2[k]-C2[k+1])/C2[k+1]*100); //코스닥 일봉 - 당일 갭
R3 = Data3((C3[k]-C3[k+1])/C3[k+1]*100); //나스닥 일봉
sumXY = sumXY + R2[j]*R3[j];
sumX = sumX + R2[j];
sumY = sumY + R3[j];
sumX2 = sumX2 + R2[j]^2;
sumY2 = sumY2 + R3[j]^2;
}
상관도 = (상관기간 * sumXY - sumX * sumY)/
Sqrt((상관기간 * sumX2- sumX^2) * (상관기간 * sumY2- sumY^2));
}
//다우 코스피
Array : C4[30](0,Data2),C5[30](0,Data2), o5[30](0,Data2);
if Data4(bDate) == data5(Bdate) Then
{
C4[0] = Data4(c);
C5[0] = Data5(c);
O5[0] = Data5(O);
For k = 1 to 상관기간
{
C4[k] = C4[k-1][1];
C5[k] = C5[k-1][1];
o5[k] = o5[k-1][1];
}
}
if C2[상관기간] > 0 and C3[상관기간] > 0 Then
{
sumXY3 = 0; sumX3 = 0; sumY3 = 0; sumX23 = 0; sumY23 = 0;
for j3 = 0 to 상관기간 - 1
{
R4 = Data4((C4[k]-C4[k+1])/C4[k+1]*100); //다우 일봉
R5 = Data5((o5[k]-C5[k+1])/C5[k+1]*100); //코스피 일봉 - 당일 갭
sumXY3 = sumXY3 + R4[j]*R5[j];
sumX3 = sumX3 + R4[j];
sumY3 = sumY3 + R5[j];
sumX23 = sumX23 + R4[j]^2;
sumY23 = sumY23 + R5[j]^2;
}
상관도2 = (상관기간 * sumXY3 - sumX3 * sumY3)/
Sqrt((상관기간 * sumX23- sumX^23) * (상관기간 * sumY23- sumY3^2));
}
상관도평균 = (상관도 + 상관도2)/2;
Plot1(상관도, "상관도", Red);
Plot2(상관도2, "상관도2", Blue);
Plot3(상관도평균, "상관도평균", Black);
2. 신규 요청 (위와 아주 아주 비슷합니다)
개요
- data2: 코스닥 일봉
- data3: 나스닥 일봉
- 위의 자료를 이용해서, "어제 나스닥 종가 상승률 - 오늘 코스닥 시가 상승률"의 30일 평균값을 구하고자 함
30일 평균을 구할때, 전일 미국장이 열리지 않은 날은 제외함(즉, 전일 미장도 열리고 오늘 우리장도 열린 경우에만 계산에 포함)
이때, 우리장이 안 열리다고 오랜만에 열리고, 그 동안 미국장은 계속 열렸을때: 미국장의 가장 최근일 종가상승률과 우리나라의 오늘 시가상승률을 비교
이렇게 가능할까요~?
다 적고보니, 1번의 답만 알면 2번도 아주 쉬울거 같습니다.
감사합니다.