커뮤니티

도움 부탁드립니다.

프로필 이미지
양치기
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
프로필 이미지

예스스탁 예스스탁 답변

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개의 변수에 어떤값이 들어가는지 설명좀 부탁드립니다?