커뮤니티
지표 부탁 드립니다.
2015-09-30 22:59:03
198
글번호 90815
항상 만족 할만한 답변에 감사드립니다.
그림과 같이 지표의
고점좌표: A(x1,y1)
전고점좌표:C(x3,y3)
그사이의 저점 좌표:B(x2,y2)
저점좌표 :B(x2,y2)
전저점좌표:D(x4,y4)
그사이의 고점 죄표 :C(x3,y3)
라 할 때
각각 삼각형의 외적을 구하고
HS1=1/2 |x1(y2-y3)+x2(y3-y1)+x3(y1-y2)|
LS1=1/2 |x2(y3-y4)+x3(y4-y2)+x4(y2-y3)|
HS2=
LS2=
.
.
.
HSi=
LSi=
HSsum=HS1+HS2+-------+HSi
LSsum=LS1+LS2+-------+LSi
hsls=HSsum-LSsum
(또는 accumn(hsls,20)
를 구하고자 합니다.
미리 감사 드립니다.
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (0.5/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (0.5/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0),TL21(0),TL22(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,red);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL12 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL12,blue);
}
}
if turnPntArr[1][0] == "Lo" then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,blue);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL22 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL22,red);
}
}
- 1. qa1.jpg (0.30 MB)
- 2. 삼각형_외적_구하기.png (0.02 MB)
답변 3
예스스탁 예스스탁 답변
2015-10-01 09:52:45
안녕하세요
예스스탁입니다.
죄송하지만 해당 식 구현해 보는데
너무 많은 시간이 소모되어 작성을 해드릴수 없습니다.
시간상 하나의 식답변에 너무 많은 시간을 투입해 드릴수 없습니다
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 지표 부탁 드립니다.
> 항상 만족 할만한 답변에 감사드립니다.
그림과 같이 지표의
고점좌표: A(x1,y1)
전고점좌표:C(x3,y3)
그사이의 저점 좌표:B(x2,y2)
저점좌표 :B(x2,y2)
전저점좌표:D(x4,y4)
그사이의 고점 죄표 :C(x3,y3)
라 할 때
각각 삼각형의 외적을 구하고
HS1=1/2 |x1(y2-y3)+x2(y3-y1)+x3(y1-y2)|
LS1=1/2 |x2(y3-y4)+x3(y4-y2)+x4(y2-y3)|
HS2=
LS2=
.
.
.
HSi=
LSi=
HSsum=HS1+HS2+-------+HSi
LSsum=LS1+LS2+-------+LSi
hsls=HSsum-LSsum
(또는 accumn(hsls,20)
를 구하고자 합니다.
미리 감사 드립니다.
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (0.5/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (0.5/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0),TL21(0),TL22(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,red);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL12 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL12,blue);
}
}
if turnPntArr[1][0] == "Lo" then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,blue);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL22 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL22,red);
}
}
yes
2015-10-01 10:11:33
안녕하세요?
노고에 감사드리오며
무리한 부탁을 드려 죄송 합니다.
간단한 원리만 부탁 드릴까 합니다.
예를 들어
구하고자하는 수식에
accumn(hsls,3)정도만
부탁 드려도 될런지요?
감사 드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 지표 부탁 드립니다.
> 안녕하세요
예스스탁입니다.
죄송하지만 해당 식 구현해 보는데
너무 많은 시간이 소모되어 작성을 해드릴수 없습니다.
시간상 하나의 식답변에 너무 많은 시간을 투입해 드릴수 없습니다
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 지표 부탁 드립니다.
> 항상 만족 할만한 답변에 감사드립니다.
그림과 같이 지표의
고점좌표: A(x1,y1)
전고점좌표:C(x3,y3)
그사이의 저점 좌표:B(x2,y2)
저점좌표 :B(x2,y2)
전저점좌표:D(x4,y4)
그사이의 고점 죄표 :C(x3,y3)
라 할 때
각각 삼각형의 외적을 구하고
HS1=1/2 |x1(y2-y3)+x2(y3-y1)+x3(y1-y2)|
LS1=1/2 |x2(y3-y4)+x3(y4-y2)+x4(y2-y3)|
HS2=
LS2=
.
.
.
HSi=
LSi=
HSsum=HS1+HS2+-------+HSi
LSsum=LS1+LS2+-------+LSi
hsls=HSsum-LSsum
(또는 accumn(hsls,20)
를 구하고자 합니다.
미리 감사 드립니다.
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (0.5/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (0.5/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0),TL21(0),TL22(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,red);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL12 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL12,blue);
}
}
if turnPntArr[1][0] == "Lo" then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,blue);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL22 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL22,red);
}
}
예스스탁 예스스탁 답변
2015-10-01 11:53:18
안녕하세요
예스스탁입니다.
해당식 3개를 합산하는 것과 20개를 합산하는 것은 차이가 없습니다.
해당 값을 계산해서 배열에 저장해서 n개방 값을 합하면 되므로
합산갯수는 문제가 되지 않습니다.
Y축값은 valArr로 리턴되는 해당 고점과 저점값을 사용하시고
X축은 직전 고점과 저점과 현재 고점이나 저점까지의 봉갯수로 barArr차이값으로
저장해서 계산하시고 각 면적을 배열변수에 저장하고 합산하시면 됩니다.
다만 차트의 X축이 날짜시간이고 혹은 봉수인데
날짜값과 시간값으로 곱할수는 없으므로 봉수를 이용하는데
해당 값이 면적을 계산하는 것이 타당하지도
잘 모르겠습니다.
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 죄송 합니다. 원리만 간단히 부탁 드립니다.
> 안녕하세요?
노고에 감사드리오며
무리한 부탁을 드려 죄송 합니다.
간단한 원리만 부탁 드릴까 합니다.
예를 들어
구하고자하는 수식에
accumn(hsls,3)정도만
부탁 드려도 될런지요?
감사 드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 지표 부탁 드립니다.
> 안녕하세요
예스스탁입니다.
죄송하지만 해당 식 구현해 보는데
너무 많은 시간이 소모되어 작성을 해드릴수 없습니다.
시간상 하나의 식답변에 너무 많은 시간을 투입해 드릴수 없습니다
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 지표 부탁 드립니다.
> 항상 만족 할만한 답변에 감사드립니다.
그림과 같이 지표의
고점좌표: A(x1,y1)
전고점좌표:C(x3,y3)
그사이의 저점 좌표:B(x2,y2)
저점좌표 :B(x2,y2)
전저점좌표:D(x4,y4)
그사이의 고점 죄표 :C(x3,y3)
라 할 때
각각 삼각형의 외적을 구하고
HS1=1/2 |x1(y2-y3)+x2(y3-y1)+x3(y1-y2)|
LS1=1/2 |x2(y3-y4)+x3(y4-y2)+x4(y2-y3)|
HS2=
LS2=
.
.
.
HSi=
LSi=
HSsum=HS1+HS2+-------+HSi
LSsum=LS1+LS2+-------+LSi
hsls=HSsum-LSsum
(또는 accumn(hsls,20)
를 구하고자 합니다.
미리 감사 드립니다.
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (0.5/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (0.5/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0),TL21(0),TL22(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,red);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL12 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL12,blue);
}
}
if turnPntArr[1][0] == "Lo" then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetColor(TL11,blue);
if turnPntArr[1][0] != turnPntArr[1][1] Then{
TL22 = TL_New(sDate[barArr[4]],sTime[barArr[4]],valArr[4],sDate[barArr[2]],sTime[barArr[2]],valArr[2]);
TL_SetColor(TL22,red);
}
}
다음글
이전글