커뮤니티
도움 부탁드립니다.
2015-08-23 22:51:18
154
글번호 89767
항상 도움주셔서 감사드립니다.
첨부파일 보시고 답변 좀 부탁드립니다.
아래는 지그재그 수식입니다.
#=======================================================
Input:length1(5);
Var:lastHiVal1(0),lastLoVal1(0),turnPntBit1(""),TL11(0);
Array:valArr1[20](0),barArr1[20](0),turnPntArr1[20]("");
For j = 0 To 19 {
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then {
If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit == "Hi" or turnPntBit == "Lo" Then {
If turnPntBit <> turnPntArr[1] Then {
for j = 18 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]);
if turnPntArr[1][0] == "Lo" Then{
var1 = 1;
var2 = valArr[2];
}
Else{
var1 = -1;
var3 = valArr[2];
}
}
Else {
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
}
TL_SetSize(TL1,4);
TL_SetColor(TL1,GREEN);
문2) 위의 수식에 보면
turnPntArr[1][1] <> turnPntArr[1][0]와 (turnPntArr[1][1]아니라 [0][1]가 아닌가요?)
var2 = valArr[2] 가 있는데 (왜 valarr[1] 이 아니고 valarr[2] 죠?)
위 2개의 변수에 어떤값이 들어가는지 설명좀 부탁드립니다?
- 1. 도움부탁드립니다..xlsx (0.21 MB)
답변 1
예스스탁 예스스탁 답변
2015-08-24 16:13:19
안녕하세요
예스스탁입니다.
1.
Input:length1(5);
Var:lastHiVal1(0),lastLoVal1(0),turnPntBit1(""),TL11(0),J1(0),T1(0);
var : cond11(false),Cond12(false);
Array:valArr1[20](0),barArr1[20](0),turnPntArr1[20](""),HH1[20](0),LL1[20](0);
Input:length2(10);
Var : lastHiVal2(0),lastLoVal2(0),turnPntBit2(""),TL21(0),J2(0),T2(0);
var : cond21(false),Cond22(false);
Array:valArr2[20](0),barArr2[20](0),turnPntArr2[20](""),HH2[20](0),LL2[20](0);
For j1 = 0 To 19 {
barArr1[j1] = barArr1[j1] + 1;
}
cond11 = Highest(H,length1) == H and lastHiVal1 <> H;
Cond12 = Lowest(L,length1) == L and lastLoVal1 <> L;
If cond11 Then lastHiVal1 = H;
If Cond12 Then lastLoVal1 = L;
turnPntBit1 = "";
If cond11 and Cond12 Then {
If turnPntArr1[1] == "Hi" Then turnPntBit1 = "Lo";
Else If turnPntArr1[1] == "Lo" Then turnPntBit1 = "Hi";
}
Else If cond11 Then turnPntBit1 = "Hi";
Else If Cond12 Then turnPntBit1 = "Lo";
If turnPntBit1 == "Hi" or turnPntBit1 == "Lo" Then {
If turnPntBit1 <> turnPntArr1[1] Then {
for j1 = 18 downto 1 {
valArr1[j1+1] = valArr1[j1];
barArr1[j1+1] = barArr1[j1];
turnPntArr1[j1+1] = turnPntArr1[j1];
}
}
If turnPntBit1 <> turnPntArr1[1] or
(turnPntBit1 == turnPntArr1[1] and
((turnPntBit1 == "Hi" and valArr1[1] < H) or
(turnPntBit1 == "Lo" and valArr1[1] > L))) Then {
valArr1[1] = IFF(turnPntBit1 == "Hi",H,L);
barArr1[1] = 0;
turnPntArr1[1] = turnPntBit1;
If turnPntArr1[1][1] <> turnPntArr1[1][0] Then
{
TL11 = TL_New(sDate[barArr1[2]],sTime[barArr1[2]],valArr1[2],sDate[barArr1[1]],sTime[barArr1[1]],valArr1[1]);
if turnPntArr1[1][0] == "Lo" Then{
T1 = 1;
HH1[1] = valArr1[2];
for j1 = 2 to 19{
HH1[j1] = HH1[j1-1][1];
}
}
Else{
T1 = -1;
LL1[1] = valArr1[2];
for j1 = 2 to 19{
LL1[j1] = LL1[j1-1][1];
}
}
}
Else {
TL_SetEnd(TL11,sDate[barArr1[1]],sTime[barArr1[1]],valArr1[1]);
}
}
}
TL_SetSize(TL11,4);
TL_SetColor(TL11,red);
For j2 = 0 To 19 {
barArr2[j2] = barArr2[j2] + 1;
}
cond21 = Highest(H,length2) == H and lastHiVal2 <> H;
Cond22 = Lowest(L,length2) == L and lastLoVal2 <> L;
If cond21 Then lastHiVal2 = H;
If Cond22 Then lastLoVal2 = L;
turnPntBit2 = "";
If cond21 and Cond22 Then {
If turnPntArr2[1] == "Hi" Then turnPntBit2 = "Lo";
Else If turnPntArr2[1] == "Lo" Then turnPntBit2 = "Hi";
}
Else If cond21 Then turnPntBit2 = "Hi";
Else If Cond22 Then turnPntBit2 = "Lo";
If turnPntBit2 == "Hi" or turnPntBit2 == "Lo" Then {
If turnPntBit2 <> turnPntArr2[1] Then {
for j2 = 18 downto 1 {
valArr2[j2+1] = valArr2[j2];
barArr2[j2+1] = barArr2[j2];
turnPntArr2[j2+1] = turnPntArr2[j2];
}
}
If turnPntBit2 <> turnPntArr2[1] or
(turnPntBit2 == turnPntArr2[1] and
((turnPntBit2 == "Hi" and valArr2[1] < H) or
(turnPntBit2 == "Lo" and valArr2[1] > L))) Then {
valArr2[1] = IFF(turnPntBit2 == "Hi",H,L);
barArr2[1] = 0;
turnPntArr2[1] = turnPntBit2;
If turnPntArr2[1][1] <> turnPntArr2[1][0] Then
{
TL21 = TL_New(sDate[barArr2[2]],sTime[barArr2[2]],valArr2[2],sDate[barArr2[1]],sTime[barArr2[1]],valArr2[1]);
if turnPntArr2[1][0] == "Lo" Then{
T2 = 1;
HH2[1] = valArr2[2];
for j2 = 2 to 19{
HH2[j2] = HH2[j2-1][1];
}
}
Else{
T2 = -1;
LL2[1] = valArr2[2];
for j2 = 2 to 19{
LL2[j2] = LL2[j2-1][1];
}
}
}
Else {
TL_SetEnd(TL21,sDate[barArr2[1]],sTime[barArr2[1]],valArr2[1]);
}
}
}
TL_SetSize(TL21,4);
TL_SetColor(TL21,blue);
#(검정색네모)추세선 끝점이 같음
if TL_GetEndDate(TL11) == TL_GetEndDate(TL21) And
TL_GetEndTime(TL11) == TL_GetEndTime(TL21) And
TL_GetEndVal(TL11) == TL_GetEndVal(TL21) Then
plot1(1);
Else
plot1(0);
#(빨간색네모)
#배열변수 HH1이 기간5의 고점을 저장한 변수입니다. [1]최근,[2]직전,[3] 전전
#배열변수 LL1이 기간5의 저점을 저장한 변수입니다. [1]최근,[2]직전,[3] 전전
#배열변수 HH2이 기간10의 고점을 저장한 변수입니다. [1]최근,[2]직전,[3] 전전
#배열변수 LL2이 기간10의 저점을 저장한 변수입니다. [1]최근,[2]직전,[3] 전전
#(파란색네모)추세선의 시작점과 끝점이모두 같음
if TL_GetBeginDate(TL11) == TL_GetBeginDate(TL21) And
TL_GetBeginTime(TL11) == TL_GetBeginTime(TL21) And
TL_GetBeginVal(TL11) == TL_GetBeginVal(TL21) and
TL_GetEndDate(TL11) == TL_GetEndDate(TL21) And
TL_GetEndTime(TL11) == TL_GetEndTime(TL21) And
TL_GetEndVal(TL11) == TL_GetEndVal(TL21) Then
plot2(1);
Else
plot2(0);
#(빨간색동그라미)추세선의 시작점은 같지만 끝점이 다름
if TL_GetBeginDate(TL11) == TL_GetBeginDate(TL21) And
TL_GetBeginTime(TL11) == TL_GetBeginTime(TL21) And
TL_GetBeginVal(TL11) == TL_GetBeginVal(TL21) and
TL_GetEndDate(TL11) != TL_GetEndDate(TL21) And
TL_GetEndTime(TL11) != TL_GetEndTime(TL21) And
TL_GetEndVal(TL11) != TL_GetEndVal(TL21) Then
plot3(1);
Else
plot3(0);
2.
해당식의 turnPntArr 배열변수의 [0]번방에는 값이 없습니다.
수식이 1번방 부터 값을 저장해서 사용합니다. 최근이 [1]입니다.
그러므로 1번방의 현재봉값과 1봉전값을 비교하는 것입니다.
새로운 고점이나 저점이 발생하면
valArr[1]방에 값을 저장하고 값이 갱신되면 valArr[1]번값을 갱신해
이전에 발생한 고점이나 저잠을 값은 다음번호방에 옮겨 저장합니다.
즉 고점과 저점을 따로 저장하는 것이 아니고 발생되는데로
번갈아가면서 저장하게 되어 있습니다
그러므로 아래와 같이 추세가 변경이 되면(새로운 valArr[1] 발생)
추세방향을 확인해서 하락이면 valArr[2]값을 var2에 직전 고점값으로 저장하고
상승이면 valArr[2]값을 var3에 직전 저점값으로 저장하는 식입니다.
위 식에는 5와 10기간별로 고점저점을 각각 다른 배열변수에 저장하게 했습니다.
#추세가 변경되고
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]);
if turnPntArr[1][0] == "Lo" Then{
var1 = 1;
var2 = valArr[2];
}
Else{
var1 = -1;
var3 = valArr[2];
}
}
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 도움 부탁드립니다.
> 항상 도움주셔서 감사드립니다.
첨부파일 보시고 답변 좀 부탁드립니다.
아래는 지그재그 수식입니다.
#=======================================================
Input:length1(5);
Var:lastHiVal1(0),lastLoVal1(0),turnPntBit1(""),TL11(0);
Array:valArr1[20](0),barArr1[20](0),turnPntArr1[20]("");
For j = 0 To 19 {
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then {
If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit == "Hi" or turnPntBit == "Lo" Then {
If turnPntBit <> turnPntArr[1] Then {
for j = 18 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]);
if turnPntArr[1][0] == "Lo" Then{
var1 = 1;
var2 = valArr[2];
}
Else{
var1 = -1;
var3 = valArr[2];
}
}
Else {
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
}
TL_SetSize(TL1,4);
TL_SetColor(TL1,GREEN);
문2) 위의 수식에 보면
turnPntArr[1][1] <> turnPntArr[1][0]와 (turnPntArr[1][1]아니라 [0][1]가 아닌가요?)
var2 = valArr[2] 가 있는데 (왜 valarr[1] 이 아니고 valarr[2] 죠?)
위 2개의 변수에 어떤값이 들어가는지 설명좀 부탁드립니다?