커뮤니티

안녕하세요?

프로필 이미지
상중하
2017-03-15 02:31:42
161
글번호 107793
답변완료

첨부 이미지

안녕하세요 어제 작성해주신 수식 감사합니다. 52374번 수식에 수정 부탁드립니다. 당일 고점이나,저점 갱신전까지는 문제없이 변수에 할당이 잘 됨니다. 그런데 고점이나,저점 갱신시 var1에는 그전에 값이 남아 있습니다. 첨부 그림을 보시면 var1에는 그전값 1205.9 var2에는 1205.20 고점갱신후 첫번째값 var3에는 1203.80 고점갱신후 두번째값 이런식으로 데이타 밀림 현상이 있습니다. 영업일 기준으로는 변수값 리셋이 되는것 같은데요 당일 기준으로 고저갱신때 리셋거는 수식이 있으면 해결될것 같은데 초보라 도움 요청드립니다. 수정이 가능하다면 수정 부탁드립니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-03-15 10:36:58

안녕하세요 예스스탁입니다. 식을 수정했습니다. Input:length(5); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""), TL_Val1(0),TL_Val2(0),tt(0); Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0); Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(0); Array:고점[10,2](0),저점[10,2](0); if bdate != bdate[1] or H == dayhigh Then{ var1 = 0; var2 = 0; var3 = 0; } if bdate != bdate[1] or L == daylow Then{ var11 = 0; var12 = 0; var13 = 0; } 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { tt = 1; lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); TL_SetSize(TL1,2); TL_SetColor(TL1,BLACK); if tt != tt[1] then{ if var1 == 0 Then var1 = 저점[1,1]; if var1 > 0 and var2 == 0 and 저점[1,1] < var1 Then var2 = 저점[1,1]; if var1 > 0 and var2 > 0 and var3 == 0 and 저점[1,1] < var2 Then var3 = 저점[1,1]; } Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],1)); Text_SetStyle(Text1, 2, 1); Text_SetColor(Text1,RED); If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; } } } If 처리구분 == "저점처리" Then { tt = -1; lastLoVal = L; If 저점[1,2] < 고점[1,2] Then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); TL_SetSize(TL1,2); TL_SetColor(TL1,BLACK); if tt != tt[1] then{ if var11 == 0 Then var11 = 고점[1,1]; if var11 > 0 and var12 == 0 and 고점[1,1] > var11 Then var12 = 고점[1,1]; if var11 > 0 and var12 > 0 and var13 == 0 and 고점[1,1] > var12 Then var13 = 고점[1,1]; } Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],1)); Text_SetStyle(Text1, 2, 0); Text_SetColor(Text1,BLUE); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } mav = ma(C,20); 즐거운 하루되세요 > 상중하 님이 쓴 글입니다. > 제목 : 안녕하세요? > 안녕하세요 어제 작성해주신 수식 감사합니다. 52374번 수식에 수정 부탁드립니다. 당일 고점이나,저점 갱신전까지는 문제없이 변수에 할당이 잘 됨니다. 그런데 고점이나,저점 갱신시 var1에는 그전에 값이 남아 있습니다. 첨부 그림을 보시면 var1에는 그전값 1205.9 var2에는 1205.20 고점갱신후 첫번째값 var3에는 1203.80 고점갱신후 두번째값 이런식으로 데이타 밀림 현상이 있습니다. 영업일 기준으로는 변수값 리셋이 되는것 같은데요 당일 기준으로 고저갱신때 리셋거는 수식이 있으면 해결될것 같은데 초보라 도움 요청드립니다. 수정이 가능하다면 수정 부탁드립니다.