커뮤니티

수식 문의 드립니다.

프로필 이미지
etm
2019-01-28 11:26:50
264
글번호 125631
답변완료

첨부 이미지

안녕하십니까 매번 고생이 많으십니다. 질문은 아래 고저라인 파동식을 그리는 지표인데, 고저라인이 바뀔때... 즉, 고점처리 → 저점처리 혹은 저점처리 → 고점처리로 바뀌는 ** 꼭지점 최근 10개 중 가장 높은 값의 (고점처리 부분) 꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text3으로 그 봉(꼭지점) 위에 RSI 값 표시, 꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text4로 그 봉(꼭지점 이전) 위에 RSI 값 표시, ** 꼭지점 최근 10개 중 두번째 높은 값의 (고점처리 부분) 꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text5으로 그 봉(꼭지점) 위에 RSI 값 표시, 꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text6으로 그 봉(꼭지점 이전) 위에 RSI 값 표시, ** 가장 높은 꼭지점 의 RSI값과 두번째 꼭지점의 RSI값을 비교하는 수식 (자세한 것은 첨부된 그림 참조) 식 어디 부분에 작성해야 하고, 어떻게 작성해야 할지 몰라 문의드립니다. ※ 식이 복잡해진다면 어느 부분에 대충 이런 수식을 넣으면 될것 같다는 힌트(주석)이라도 부탁드리겠습니다. 항상 도움 주시는 것 감사드립니다....^^ 항상 도움 주시는 것 다시 감사드립니다....^^ Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분(""); Array:고점[10,2](0),저점[10,2](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 { 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); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1], NumToStr(고점[1,1],2)); Text_SetStyle(Text1, 2, 1); } } If 처리구분 == "저점처리" Then { 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); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1], NumToStr(저점[1,1],2)); Text_SetStyle(Text1, 2, 0); } } TL_SetSize(TL1,3); TL_SetColor(TL1,CYAN);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-01-28 15:21:04

안녕하세요 예스스탁입니다. 올려주신 내용을 정확히 이해하지 못했습니다. 매 고점에 RSI값과 최근 10개 고점 중 가장 높은 고점의 RSI과 두번째 높은 고점의 RSI, 매 저점에 RSI값과 최근 10개 저점 중 가장 낮은 저점의 RSI과 두번째 낮은 저점의 RSI 를 표시하게 추가했습니다. 해당 내용 참고하셔서 이후 내용 수정보완해 사용하시기 바랍니다. Input : length(12),RSIP(9); Var : j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분(""); var : RSIV(0),H1R(0),H2R(0),L1R(0),L2R(0),cnt(0); Array : 고점[10,4](0),저점[10,4](0); //가격,위치 RSIV = RSI(RSIP); 처리구분 = ""; 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 { lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; 고점[j,3] = 고점[j-1,3]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; 고점[1,3] = RSIV; h1r = 0; for cnt = 1 to 10 { if h1r == 0 or (h1r > 0 and 고점[cnt,3] > h1r) Then h1r = 고점[cnt,3]; } h2r = 0; for cnt = 1 to 10 { if 고점[cnt,3] < h1r and(h2r == 0 or (h2r > 0 and 고점[cnt,3] > h2r)) Then h2r = 고점[cnt,3]; } 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); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1], "고점 : "+NumToStr(고점[1,1],2) +NewLine+"현재 :"+NumToStr(고점[1,3],2) +NewLine+"최고1 :"+NumToStr(H1R,2) +NewLine+"최고2 :"+NumToStr(H2R,2)); Text_SetStyle(Text1, 2, 1); } } If 처리구분 == "저점처리" Then { lastLoVal = L; If 저점[1,2] < 고점[1,2] then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; 저점[j,3] = 저점[j-1,3]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then { 저점[1,1] = L; 저점[1,2] = Index; 저점[1,3] = RSIV; l1r = 0; for cnt = 1 to 10 { if l1r == 0 or (l1r > 0 and 저점[cnt,3] < l1r) Then l1r = 저점[cnt,3]; } l2r = 0; for cnt = 1 to 10 { if 저점[cnt,3] > l1r and (l2r == 0 or (l2r > 0 and 저점[cnt,3] < l2r)) Then l2r = 저점[cnt,3]; } 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); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1], "저점 : "+ NumToStr(저점[1,1],2) +NewLine+"현재 :"+NumToStr(저점[1,3],2) +NewLine+"최저1 :"+NumToStr(L1R,2) +NewLine+"최저2 :"+NumToStr(L2R,2)); Text_SetStyle(Text1, 2, 0); } } TL_SetSize(TL1,3); TL_SetColor(TL1,CYAN); 즐거운 하루되세요 > etm 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. > 안녕하십니까 매번 고생이 많으십니다. 질문은 아래 고저라인 파동식을 그리는 지표인데, 고저라인이 바뀔때... 즉, 고점처리 → 저점처리 혹은 저점처리 → 고점처리로 바뀌는 ** 꼭지점 최근 10개 중 가장 높은 값의 (고점처리 부분) 꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text3으로 그 봉(꼭지점) 위에 RSI 값 표시, 꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text4로 그 봉(꼭지점 이전) 위에 RSI 값 표시, ** 꼭지점 최근 10개 중 두번째 높은 값의 (고점처리 부분) 꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text5으로 그 봉(꼭지점) 위에 RSI 값 표시, 꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text6으로 그 봉(꼭지점 이전) 위에 RSI 값 표시, ** 가장 높은 꼭지점 의 RSI값과 두번째 꼭지점의 RSI값을 비교하는 수식 (자세한 것은 첨부된 그림 참조) 식 어디 부분에 작성해야 하고, 어떻게 작성해야 할지 몰라 문의드립니다. ※ 식이 복잡해진다면 어느 부분에 대충 이런 수식을 넣으면 될것 같다는 힌트(주석)이라도 부탁드리겠습니다. 항상 도움 주시는 것 감사드립니다....^^ 항상 도움 주시는 것 다시 감사드립니다....^^ Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분(""); Array:고점[10,2](0),저점[10,2](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 { 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); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1], NumToStr(고점[1,1],2)); Text_SetStyle(Text1, 2, 1); } } If 처리구분 == "저점처리" Then { 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); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1], NumToStr(저점[1,1],2)); Text_SetStyle(Text1, 2, 0); } } TL_SetSize(TL1,3); TL_SetColor(TL1,CYAN);