커뮤니티

도움을 부탁드리겠습니다.

프로필 이미지
지스카드
2020-07-26 14:54:36
1952
글번호 140992
답변완료
안녕하세요..항상 도와주심에 감사드립니다. 이번에 너무 어려운 부탁을 좀 드리게 되었습니다. 첨부한 식은 3개로 1. 사용자 함수 : 고가 저가를 잇는 추세선함수 2. 1번 함수를 불러서 그려주는 지표 3. 타주기 분봉을 1분봉에서 그려주는 지표(고가저가 표시) 이셋을 섞는게 가능할까요..꼭 되었으면 좋겠습니다.. 즉 1분봉 차트에서, 3번식 타주기 분봉차트를 가져와 지표로 표시해줄때에 1의 고가저가를 잇는 추세선 함수가 1분봉을 그리는게 아니라 불러온 타주기값의 고가저가를 사용해서 잇는 추세선을 그리게 하고 싶습니다. 며칠동안 이거저거 섞어보긴 했는데... 현재 제 능력으로는 십년걸려도 무리인걸 알았습니다 ㅠㅠ 꼭좀 부탁드립니다..너무 어렵습니다..오래걸리더라도 좀 도와주시면 안될까요 ...기다릴수 있습니다. #==========================================# # 사용자함수 : 고저라인 지그재그 파동 # 버 전 : 1.2 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:Length(NumericSimple),useCLprice(NumericSimple), oHiZZ[MaxSize1,MaxSize2](NumericArrayRef), // 열번호 1:가격,2:Index,3:sDate,4:sTime oLoZZ[MaxSize3,MaxSize4](NumericArrayRef), oTL_NewBit(NumericRef); // 1:NewLine 2:SetEndLine Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""); #==========================================# HH = IFF(useCLprice==1,C,H); LL = IFF(useCLprice==1,C,L); If Index == 0 Then { oHiZZ[1,1] = HH; oLoZZ[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then { // 기간고점과 기간저점 동시 발생 If oHiZZ[1,1] < HH and oLoZZ[1,1] > LL Then { // 기존의 파동을 벗어난 경우 If HH - oHiZZ[1,1] > oLoZZ[1,1] - LL Then // 많이 벗어난 쪽으로 처리 처리구분 = "고점처리"; Else If HH - oHiZZ[1,1] < oLoZZ[1,1] - LL Then 처리구분 = "저점처리"; Else If 최종꼭지점 == "저점" Then // 벗어난 정도가 동일하면 지그재그 순서대로 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } Else If oLoZZ[1,1] > LL Then 처리구분 = "저점처리"; Else If oHiZZ[1,1] < HH Then 처리구분 = "고점처리"; Else If 최종꼭지점 == "저점" Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; oTL_NewBit = 0; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { oHiZZ[j,jj] = oHiZZ[j-1,jj]; } } oHiZZ[1,1] = HH; oHiZZ[1,2] = Index; oHiZZ[1,3] = sDate; oHiZZ[1,4] = sTime; oTL_NewBit = 1; } Else If oHiZZ[1,1] < HH Then { // 1번 고점보다 높은 고가 출현 oHiZZ[1,1] = HH; oHiZZ[1,2] = Index; oHiZZ[1,3] = sDate; oHiZZ[1,4] = sTime; oTL_NewBit = 2; } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { oLoZZ[j,jj] = oLoZZ[j-1,jj]; } } oLoZZ[1,1] = LL; oLoZZ[1,2] = Index; oLoZZ[1,3] = sDate; oLoZZ[1,4] = sTime; oTL_NewBit = 1; } Else If oLoZZ[1,1] > LL then { oLoZZ[1,1] = LL; oLoZZ[1,2] = Index; oLoZZ[1,3] = sDate; oLoZZ[1,4] = sTime; oTL_NewBit = 2; } 최종꼭지점 = "저점"; } If 최종꼭지점 == "고점" Then HiLoLineZigZag = 1; Else If 최종꼭지점 == "저점" Then HiLoLineZigZag = -1; Else HiLoLineZigZag = 0; //////////////// ////// 2. 고저라인 지그재그파동 지표식 //////////////// Input:기간(5),종가사용여부(0); Var:TL1(0),신규구분(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(기간, 종가사용여부, 고, 저, 신규구분); If Value1 == 1 Then { // 고점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } Else If Value1 == -1 Then { // 저점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } TL_SetSize(TL1,2); ///////////// 3 #==========================================# #==========================================# # 지 표 명 : 타주기분봉차트 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:분봉(5); Var:HH(0),LL(0),TL1(0),TL2(0),TL3(0),TL4(0); Value1 = 분봉/BarInterval; Value2 = DayIndex()%Value1; If Value2 == 0 Then { &#160;&#160; HH = H; &#160;&#160; LL = L; } Else { &#160;&#160; HH = Max(HH,H); &#160;&#160; LL = Min(LL,L); } If Value2 == Value1 - 1 or time == iff(CodeCategory()<3,150000,151500) then&#160; { &#160;&#160; TL1 = TL_New(Date[Value2],sTime[Value2],LL,Date[Value2],sTime[Value2],HH); &#160;&#160; TL2 = TL_New(Date[Value2],sTime[Value2],HH,Date,sTime,HH); &#160;&#160; TL3 = TL_New(Date[Value2],sTime[Value2],LL,Date,sTime,LL); &#160;&#160; TL4 = TL_New(Date,sTime,LL,Date,sTime,HH); } // TL1만으로는 구분이 잘 안되서 박스형태로 그리기 위해 추세선 4개를 사용했습니다.
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-07-27 15:14:49

안녕하세요 예스스탁입니다. 올려주신 내용은 저희가 답변드리기에는 많은 시간이 요구됩니다. 한정된 시간안에 많은 분들의 질문을 처리해야하는 업무상 저희가 답변을 드릴수가 없습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 지스카드 님이 쓴 글입니다. > 제목 : 도움을 부탁드리겠습니다. > 안녕하세요..항상 도와주심에 감사드립니다. 이번에 너무 어려운 부탁을 좀 드리게 되었습니다. 첨부한 식은 3개로 1. 사용자 함수 : 고가 저가를 잇는 추세선함수 2. 1번 함수를 불러서 그려주는 지표 3. 타주기 분봉을 1분봉에서 그려주는 지표(고가저가 표시) 이셋을 섞는게 가능할까요..꼭 되었으면 좋겠습니다.. 즉 1분봉 차트에서, 3번식 타주기 분봉차트를 가져와 지표로 표시해줄때에 1의 고가저가를 잇는 추세선 함수가 1분봉을 그리는게 아니라 불러온 타주기값의 고가저가를 사용해서 잇는 추세선을 그리게 하고 싶습니다. 며칠동안 이거저거 섞어보긴 했는데... 현재 제 능력으로는 십년걸려도 무리인걸 알았습니다 ㅠㅠ 꼭좀 부탁드립니다..너무 어렵습니다..오래걸리더라도 좀 도와주시면 안될까요 ...기다릴수 있습니다. #==========================================# # 사용자함수 : 고저라인 지그재그 파동 # 버 전 : 1.2 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:Length(NumericSimple),useCLprice(NumericSimple), oHiZZ[MaxSize1,MaxSize2](NumericArrayRef), // 열번호 1:가격,2:Index,3:sDate,4:sTime oLoZZ[MaxSize3,MaxSize4](NumericArrayRef), oTL_NewBit(NumericRef); // 1:NewLine 2:SetEndLine Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""); #==========================================# HH = IFF(useCLprice==1,C,H); LL = IFF(useCLprice==1,C,L); If Index == 0 Then { oHiZZ[1,1] = HH; oLoZZ[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then { // 기간고점과 기간저점 동시 발생 If oHiZZ[1,1] < HH and oLoZZ[1,1] > LL Then { // 기존의 파동을 벗어난 경우 If HH - oHiZZ[1,1] > oLoZZ[1,1] - LL Then // 많이 벗어난 쪽으로 처리 처리구분 = "고점처리"; Else If HH - oHiZZ[1,1] < oLoZZ[1,1] - LL Then 처리구분 = "저점처리"; Else If 최종꼭지점 == "저점" Then // 벗어난 정도가 동일하면 지그재그 순서대로 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } Else If oLoZZ[1,1] > LL Then 처리구분 = "저점처리"; Else If oHiZZ[1,1] < HH Then 처리구분 = "고점처리"; Else If 최종꼭지점 == "저점" Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; oTL_NewBit = 0; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { oHiZZ[j,jj] = oHiZZ[j-1,jj]; } } oHiZZ[1,1] = HH; oHiZZ[1,2] = Index; oHiZZ[1,3] = sDate; oHiZZ[1,4] = sTime; oTL_NewBit = 1; } Else If oHiZZ[1,1] < HH Then { // 1번 고점보다 높은 고가 출현 oHiZZ[1,1] = HH; oHiZZ[1,2] = Index; oHiZZ[1,3] = sDate; oHiZZ[1,4] = sTime; oTL_NewBit = 2; } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { oLoZZ[j,jj] = oLoZZ[j-1,jj]; } } oLoZZ[1,1] = LL; oLoZZ[1,2] = Index; oLoZZ[1,3] = sDate; oLoZZ[1,4] = sTime; oTL_NewBit = 1; } Else If oLoZZ[1,1] > LL then { oLoZZ[1,1] = LL; oLoZZ[1,2] = Index; oLoZZ[1,3] = sDate; oLoZZ[1,4] = sTime; oTL_NewBit = 2; } 최종꼭지점 = "저점"; } If 최종꼭지점 == "고점" Then HiLoLineZigZag = 1; Else If 최종꼭지점 == "저점" Then HiLoLineZigZag = -1; Else HiLoLineZigZag = 0; //////////////// ////// 2. 고저라인 지그재그파동 지표식 //////////////// Input:기간(5),종가사용여부(0); Var:TL1(0),신규구분(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(기간, 종가사용여부, 고, 저, 신규구분); If Value1 == 1 Then { // 고점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } Else If Value1 == -1 Then { // 저점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } TL_SetSize(TL1,2); ///////////// 3 #==========================================# #==========================================# # 지 표 명 : 타주기분봉차트 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:분봉(5); Var:HH(0),LL(0),TL1(0),TL2(0),TL3(0),TL4(0); Value1 = 분봉/BarInterval; Value2 = DayIndex()%Value1; If Value2 == 0 Then { &#160;&#160; HH = H; &#160;&#160; LL = L; } Else { &#160;&#160; HH = Max(HH,H); &#160;&#160; LL = Min(LL,L); } If Value2 == Value1 - 1 or time == iff(CodeCategory()<3,150000,151500) then&#160; { &#160;&#160; TL1 = TL_New(Date[Value2],sTime[Value2],LL,Date[Value2],sTime[Value2],HH); &#160;&#160; TL2 = TL_New(Date[Value2],sTime[Value2],HH,Date,sTime,HH); &#160;&#160; TL3 = TL_New(Date[Value2],sTime[Value2],LL,Date,sTime,LL); &#160;&#160; TL4 = TL_New(Date,sTime,LL,Date,sTime,HH); } // TL1만으로는 구분이 잘 안되서 박스형태로 그리기 위해 추세선 4개를 사용했습니다.