커뮤니티

글 번호-58459 수식에 관한 자세한 주석을 부탁드립니다

프로필 이미지
샐리짱
2020-11-15 17:15:11
559
글번호 143890
답변완료
안녕하세요. 항상 수고가 많으십니다. 질문드립니다 ----------------------------------------------------------------------- 아래 수식은 글 번호 58459 수식입니다. 죄송하지만 각각의 수식에 대해 자세한 주석을 달아 주시면 감사하겠습니다. 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) +NewLine+"진폭"+NumToStr((고점[1,1]-저점[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) +NewLine+"진폭"+NumToStr((고점[1,1]-저점[1,1]),2)); Text_SetStyle(Text1, 2, 0); } } // TL_SetSize(TL1,2); TL_SetColor(TL1,BLACk); // ---------------------------------------------------------------------------------- 다시 한번 감사드립니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-11-16 15:13:26

안녕하세요 예스스탁입니다. 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); //가격,위치 #고점[1,1]~고점[9,1]에는 고점가격을 저장 #고점[1,2]~고점[9,2]에는 고점봉번호을 저장 #저점[1,1]~저점[9,1]에는 저점가격을 저장 #저점[1,2]~저점[9,2]에는 저점봉번호을 저장 #매봉 처리구분변수는 ""으로 시작 처리구분 = ""; #현재봉 고가가 length봉 최고가이면서 현재봉 저가가 length봉 최저가이면 If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { # 저가가 저점[1,1]에 저장된 값보다 작으면 처리구분은 "저점처리" If 저점[1,1] > L Then 처리구분 = "저점처리"; # 고가가 고점[1,1]에 저장된 값보다 작으면 처리구분은 "고점처리" If 고점[1,1] < H Then 처리구분 = "고점처리"; } #최고가와 최저가가 동시 만족한 것이 아니고 현재봉 고가가 length봉 최고가이면 #처리구분은 고점처리 Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; #최고가와 최저가가 동시 만족한 것이 아니고 현재봉 저가가 length봉 최저가이면 #처리구분은 저점처리 Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; #처리구분이 고점처리라면 If 처리구분 == "고점처리" Then { # lastHiVal는 현재봉 고가 lastHiVal = H; #최근 고점 봉번호가 최근 저점 봉번호보다 작으면(최근고점 다음 최근저점발생함을 의미) If 고점[1,2] < 저점[1,2] Then { #고점[1,1]과 고점[1,2]에 새로운 고점의 값과 봉번호를 저장하기 위해 #고점의 가격과 봉번호를 다음방으로 넘겨 보관함 #10번방에는 기존 9번방의 값 #9번방에는 기존 8번방의 값 #~~ #2번방에는 기존 1번방의 값 For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } #새로운 고점 발생 #최근 고점 봉번호가 최근 저점 봉번호보다 작거나 고가가 고점[1,1]에 저장된 값보다 크면 If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { #고점[1,1]에 고가 저장 고점[1,1] = H; #고점[1,2]에 봉번호 저장 고점[1,2] = Index; #sBar에 저점과 현재봉사이의 봉갯수를 저장 #이후에 최근 저점이 현재봉으로 부터 몇개봉전인지 알기 위함임 sBar = Index - 저점[1,2]; #eBar에 0 저장 eBar = 0; #TL1 추세선의 시작날짜와 저점봉의 날짜와 같고 #TL1 추세선의 시작시간이 저점봉의 시간과 같으면 #추세선과 텍스트를 새로 출력하기 위해 기존것을 삭제 If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { #TL1추세선 삭제 TL_Delete(TL1); #text1 텍스트 삭제 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,1]-저점[1,1]),2)); #텍스트 정렬은 좌우는 중앙, 상하는 상 Text_SetStyle(Text1, 2, 1); } } #처리구분이 저점처리라면 If 처리구분 == "저점처리" Then { # lastLoVal는 현재봉 저가 lastLoVal = L; #최근 저점 봉번호가 최근 고점 봉번호보다 작으면(최근저점 다음 최근고점발생함을 의미) If 저점[1,2] < 고점[1,2] then { #저점[1,1]과 저점[1,2]에 새로운 저점의 값과 봉번호를 저장하기 위해 #저점의 가격과 봉번호를 다음방으로 넘겨 보관함 #10번방에는 기존 9번방의 값 #9번방에는 기존 8번방의 값 #~~ #2번방에는 기존 1번방의 값 For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } #새로운 저점 발생 #최근 저점 봉번호가 최근 고점 봉번호보다 작거나 저가가 저점[1,1]에 저장된 값보다 작으면 If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then { #저점[1,1]에 고가 저장 저점[1,1] = L; #저점[1,2]에 봉번호 저장 저점[1,2] = Index; #sBar에 고점과 현재봉사이의 봉갯수를 저장 #이후에 최근 고점이 현재봉으로 부터 몇개봉전인지 알기 위함임 sBar = Index - 고점[1,2]; #eBar에 0 저장 eBar = 0; #TL1 추세선의 시작날짜와 고점봉의 날짜와 같고 #TL1 추세선의 시작시간이 고점봉의 시간과 같으면 #추세선과 텍스트를 새로 출력하기 위해 기존것을 삭제 If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { #TL1추세선 삭제 TL_Delete(TL1); #text1 텍스트 삭제 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,1]-저점[1,1]),2)); #텍스트 정렬은 좌우는 중앙, 상하는 하 Text_SetStyle(Text1, 2, 0); } } //추세선 TL1의 굵기 TL_SetSize(TL1,2); //추세선 TL1의 색상 TL_SetColor(TL1,BLACk); 즐거운 하루되세요 > 샐리짱 님이 쓴 글입니다. > 제목 : 글 번호-58459 수식에 관한 자세한 주석을 부탁드립니다 > 안녕하세요. 항상 수고가 많으십니다. 질문드립니다 ----------------------------------------------------------------------- 아래 수식은 글 번호 58459 수식입니다. 죄송하지만 각각의 수식에 대해 자세한 주석을 달아 주시면 감사하겠습니다. 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) +NewLine+"진폭"+NumToStr((고점[1,1]-저점[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) +NewLine+"진폭"+NumToStr((고점[1,1]-저점[1,1]),2)); Text_SetStyle(Text1, 2, 0); } } // TL_SetSize(TL1,2); TL_SetColor(TL1,BLACk); // ---------------------------------------------------------------------------------- 다시 한번 감사드립니다.