커뮤니티

수정부탁드립니다

프로필 이미지
외국인
2023-03-26 14:06:36
1298
글번호 167533
답변완료
변곡점마다 수치,수직선표시 및 변곡점변경시 사각box색상 부탁드립니다 1) Input:변동률(2),레벨0(1),레벨1(1),레벨2(1),레벨3(1),레벨4(1); Var:고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[15](0); //=========================================================// Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분); If 레벨0 == 1 Then { If 최종상태[0] == 고점 Then { If 처리구분[0] == 신규 Then TL[0] = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 처리구분[0] == 연장 Then TL_SetEnd(TL[0],고[1,3],고[1,4],고[1,1]); } If 최종상태[0] == 저점 Then { If 처리구분[0] == 신규 Then TL[0] = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 처리구분[0] == 연장 Then TL_SetEnd(TL[0],저[1,3],저[1,4],저[1,1]); } TL_SetColor(TL[0],BLACK); TL_SetSize(TL[0],1); } If 레벨1 == 1 Then { If 최종상태[1] == 고점 Then { If 처리구분[1] == 신규 Then TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],고[1,13],고[1,14],고[1,11]); If 처리구분[1] == 연속 Then { TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]); TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); } If 처리구분[1] == 삼선 Then { TL[1] = TL_New(저[2,13],저[2,14],저[2,11],고[2,13],고[2,14],고[2,11]); TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]); TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); } } If 최종상태[1] == 저점 Then { If 처리구분[1] == 신규 Then TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],저[1,13],저[1,14],저[1,11]); If 처리구분[1] == 연속 Then { TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]); TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); } If 처리구분[1] == 삼선 Then { TL[1] = TL_New(고[2,13],고[2,14],고[2,11],저[2,13],저[2,14],저[2,11]); TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]); TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); } } TL_SetColor(TL[1],BLUE); TL_SetSize(TL[1],2); TL_SetColor(TL[2],BLUE); TL_SetSize(TL[2],2); TL_SetColor(TL[3],BLUE); TL_SetSize(TL[3],2); } If 레벨2 == 1 Then { If 최종상태[2] == 고점 Then { If 처리구분[2] == 신규 Then TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],고[1,23],고[1,24],고[1,21]); If 처리구분[2] == 연속 Then { TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]); TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); } If 처리구분[2] == 삼선 Then { TL[4] = TL_New(저[2,23],저[2,24],저[2,21],고[2,23],고[2,24],고[2,21]); TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]); TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); } } If 최종상태[2] == 저점 Then { If 처리구분[2] == 신규 Then TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],저[1,23],저[1,24],저[1,21]); If 처리구분[2] == 연속 Then { TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]); TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); } If 처리구분[2] == 삼선 Then { TL[4] = TL_New(고[2,23],고[2,24],고[2,21],저[2,23],저[2,24],저[2,21]); TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]); TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); } } TL_SetColor(TL[4],MAGENTA); TL_SetSize(TL[4],3); TL_SetColor(TL[5],MAGENTA); TL_SetSize(TL[5],3); TL_SetColor(TL[6],MAGENTA); TL_SetSize(TL[6],3); } If 레벨3 == 1 Then { If 최종상태[3] == 고점 Then { If 처리구분[3] == 신규 Then TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],고[1,33],고[1,34],고[1,31]); If 처리구분[3] == 연속 Then { TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]); TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); } If 처리구분[3] == 삼선 Then { TL[7] = TL_New(저[2,33],저[2,34],저[2,31],고[2,33],고[2,34],고[2,31]); TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]); TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); } } If 최종상태[3] == 저점 Then { If 처리구분[3] == 신규 Then TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],저[1,33],저[1,34],저[1,31]); If 처리구분[3] == 연속 Then { TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]); TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); } If 처리구분[3] == 삼선 Then { TL[7] = TL_New(고[2,33],고[2,34],고[2,31],저[2,33],저[2,34],저[2,31]); TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]); TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); } } TL_SetColor(TL[7],RED); TL_SetSize(TL[7],4); TL_SetColor(TL[8],RED); TL_SetSize(TL[8],4); TL_SetColor(TL[9],RED); TL_SetSize(TL[9],4); } If 레벨4 == 1 Then { If 최종상태[4] == 고점 Then { If 처리구분[4] == 신규 Then TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],고[1,43],고[1,44],고[1,41]); If 처리구분[4] == 연속 Then { TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]); TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); } If 처리구분[4] == 삼선 Then { TL[10] = TL_New(저[2,43],저[2,44],저[2,41],고[2,43],고[2,44],고[2,41]); TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]); TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); } } If 최종상태[4] == 저점 Then { If 처리구분[4] == 신규 Then TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],저[1,43],저[1,44],저[1,41]); If 처리구분[4] == 연속 Then { TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]); TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); } If 처리구분[4] == 삼선 Then { TL[10] = TL_New(고[2,43],고[2,44],고[2,41],저[2,43],저[2,44],저[2,41]); TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]); TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); } } TL_SetColor(TL[10],BWHITE); TL_SetSize(TL[10],5); TL_SetColor(TL[11],BWHITE); TL_SetSize(TL[11],5); TL_SetColor(TL[12],BWHITE); TL_SetSize(TL[12],5); } 2)지그재그표시가 불안정합니다. 수정부탁드립니다. Input:hRate(1),하락색(LimE),상승색(Red),색상뚜게(40),선굵기(1); Var:J(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),Trnd(0),Trnd1(0), dateF11(0),dateF12(0),timeF11(0),timeF12(0),TL1(0),수정TL(0),box(0), dateF21(0),dateF22(0),timeF21(0),timeF22(0); Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0); upRate = 1 + (hRate/100); dnRate = 1 - (hRate/100); for J = 1 to 9 { loBar[J] = loBar[J] + 1; hiBar[J] = hiBar[J] + 1; } if hiVal[0] <= H or hiVal[0] == 0 then { hiVal[0] = H; hiBar[0] = 0; } else { hiBar[0] = hiBar[0] + 1; } if loVal[0] >= L or loVal[0] == 0 then { loVal[0] = L; loBar[0] = 0; } else { loBar[0] = loBar[0] + 1; } if Trnd != dnTr && hiVal[0] > H && hiVal[0] * dnRate > L then Trnd = dnTr; else if Trnd != upTr && loVal[0] < L && loVal[0] * upRate < H then Trnd = upTr; if Trnd[1] == upTr and Trnd == dnTr then { for J = 8 downto 1 { hiVal[J+1] = hiVal[J]; hiBar[J+1] = hiBar[J]; } hiVal[1] = hiVal[0]; hiBar[1] = hiBar[0]; hiVal[0] = H; hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; dateF11 = date[loBar[1]]; timeF11 = stime[loBar[1]]; Value81 = loVal[1]; dateF12 = date[hiBar[1]]; timeF12 = stime[hiBar[1]]; Value92 = hiVal[1]; Text_New(sdate,stime,Value92,"하락"+NumToStr(Value92,2)); TL1 = TL_New(dateF11,timeF11,Value81,dateF12,timeF12,Value92); } if Trnd[1] == dnTr and Trnd == dnTr and hiVal[1] < hiVal[0] and hiVal[0] * dnRate > L then { hiVal[1] = hiVal[0]; hiBar[1] = hiBar[0]; hiVal[0] = H; hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; dateF12 = date[hiBar[1]]; timeF12 = stime[hiBar[1]]; Value92 = hiVal[1]; TL_SetEnd(TL1, dateF12,timeF12,Value92); } if Trnd[1] == dnTr and Trnd == upTr then { for J = 8 downto 1 { loVal[J+1] = loVal[J]; loBar[J+1] = loBar[J]; } loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; dateF11 = date[hiBar[1]]; timeF11 = stime[hiBar[1]]; Value91 = hiVal[1]; dateF12 = date[loBar[1]]; timeF12 = stime[loBar[1]]; Value82 = loVal[1]; Text_New(sdate,stime,Value82,"상승"+NumToStr(Value82,2)); TL1 = TL_New(dateF11,timeF11,Value91,dateF12,timeF12,Value82); } if Trnd[1] == upTr and Trnd == upTr and loVal[1] > loVal[0] and loVal[0] * upRate < H then { loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; dateF12 = date[loBar[1]]; timeF12 = stime[loBar[1]]; Value82 = loVal[1]; TL_SetEnd(TL1, dateF12,timeF12,Value82); } TL_SetSize(TL1,2);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-03-27 13:33:41

안녕하세요 예스스탁입니다. 1 Input:변동률(2),레벨0(1),레벨1(1),레벨2(1),레벨3(1),레벨4(1); Var:고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[15](0); var : tx(0),box(0),vtl(0); //=========================================================// Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분); If 레벨0 == 1 Then { If 최종상태[0] == 고점 Then { If 처리구분[0] == 신규 Then { TL[0] = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); tx = text_new(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(tx,2,1); box = box_new(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); Box_SetColor(box,Red); Box_SetFill(box,true); vtl = TL_New(저[1,3],저[1,4],0,저[1,3],저[1,4],9999999999); } If 처리구분[0] == 연장 Then { TL_SetEnd(TL[0],고[1,3],고[1,4],고[1,1]); Text_SetLocation(tx,고[1,3],고[1,4],고[1,1]); Text_SetString(tx,NumToStr(고[1,1],2)); Box_SetEnd(box,고[1,3],고[1,4],고[1,1]); } } If 최종상태[0] == 저점 Then { If 처리구분[0] == 신규 Then { TL[0] = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); tx = text_new(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(tx,2,0); box = box_new(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); Box_SetColor(box,Blue); Box_SetFill(box,true); TL_New(고[1,3],고[1,4],0,고[1,3],고[1,4],9999999999); } If 처리구분[0] == 연장 Then { TL_SetEnd(TL[0],저[1,3],저[1,4],저[1,1]); Text_SetLocation(tx,저[1,3],저[1,4],저[1,1]); Text_SetString(tx,NumToStr(저[1,1],2)); Box_SetEnd(box,저[1,3],저[1,4],저[1,1]); } } TL_SetColor(TL[0],BLACK); TL_SetSize(TL[0],1); } If 레벨1 == 1 Then { If 최종상태[1] == 고점 Then { If 처리구분[1] == 신규 Then TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],고[1,13],고[1,14],고[1,11]); If 처리구분[1] == 연속 Then { TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]); TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); } If 처리구분[1] == 삼선 Then { TL[1] = TL_New(저[2,13],저[2,14],저[2,11],고[2,13],고[2,14],고[2,11]); TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]); TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); } } If 최종상태[1] == 저점 Then { If 처리구분[1] == 신규 Then TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],저[1,13],저[1,14],저[1,11]); If 처리구분[1] == 연속 Then { TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]); TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); } If 처리구분[1] == 삼선 Then { TL[1] = TL_New(고[2,13],고[2,14],고[2,11],저[2,13],저[2,14],저[2,11]); TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]); TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); } } TL_SetColor(TL[1],BLUE); TL_SetSize(TL[1],2); TL_SetColor(TL[2],BLUE); TL_SetSize(TL[2],2); TL_SetColor(TL[3],BLUE); TL_SetSize(TL[3],2); } If 레벨2 == 1 Then { If 최종상태[2] == 고점 Then { If 처리구분[2] == 신규 Then TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],고[1,23],고[1,24],고[1,21]); If 처리구분[2] == 연속 Then { TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]); TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); } If 처리구분[2] == 삼선 Then { TL[4] = TL_New(저[2,23],저[2,24],저[2,21],고[2,23],고[2,24],고[2,21]); TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]); TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); } } If 최종상태[2] == 저점 Then { If 처리구분[2] == 신규 Then TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],저[1,23],저[1,24],저[1,21]); If 처리구분[2] == 연속 Then { TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]); TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); } If 처리구분[2] == 삼선 Then { TL[4] = TL_New(고[2,23],고[2,24],고[2,21],저[2,23],저[2,24],저[2,21]); TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]); TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); } } TL_SetColor(TL[4],MAGENTA); TL_SetSize(TL[4],3); TL_SetColor(TL[5],MAGENTA); TL_SetSize(TL[5],3); TL_SetColor(TL[6],MAGENTA); TL_SetSize(TL[6],3); } If 레벨3 == 1 Then { If 최종상태[3] == 고점 Then { If 처리구분[3] == 신규 Then TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],고[1,33],고[1,34],고[1,31]); If 처리구분[3] == 연속 Then { TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]); TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); } If 처리구분[3] == 삼선 Then { TL[7] = TL_New(저[2,33],저[2,34],저[2,31],고[2,33],고[2,34],고[2,31]); TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]); TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); } } If 최종상태[3] == 저점 Then { If 처리구분[3] == 신규 Then TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],저[1,33],저[1,34],저[1,31]); If 처리구분[3] == 연속 Then { TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]); TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); } If 처리구분[3] == 삼선 Then { TL[7] = TL_New(고[2,33],고[2,34],고[2,31],저[2,33],저[2,34],저[2,31]); TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]); TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); } } TL_SetColor(TL[7],RED); TL_SetSize(TL[7],4); TL_SetColor(TL[8],RED); TL_SetSize(TL[8],4); TL_SetColor(TL[9],RED); TL_SetSize(TL[9],4); } If 레벨4 == 1 Then { If 최종상태[4] == 고점 Then { If 처리구분[4] == 신규 Then TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],고[1,43],고[1,44],고[1,41]); If 처리구분[4] == 연속 Then { TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]); TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); } If 처리구분[4] == 삼선 Then { TL[10] = TL_New(저[2,43],저[2,44],저[2,41],고[2,43],고[2,44],고[2,41]); TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]); TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); } } If 최종상태[4] == 저점 Then { If 처리구분[4] == 신규 Then TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],저[1,43],저[1,44],저[1,41]); If 처리구분[4] == 연속 Then { TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]); TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); } If 처리구분[4] == 삼선 Then { TL[10] = TL_New(고[2,43],고[2,44],고[2,41],저[2,43],저[2,44],저[2,41]); TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]); TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); } } TL_SetColor(TL[10],BWHITE); TL_SetSize(TL[10],5); TL_SetColor(TL[11],BWHITE); TL_SetSize(TL[11],5); TL_SetColor(TL[12],BWHITE); TL_SetSize(TL[12],5); } 2 input : hRate(1); Array : HD[10](0),HT[10](0),HV[10](0); Array : LD[10](0),LT[10](0),LV[10](0); var : cnt(0),Hprice(0),Lprice(0); var : UpTrend(false),DownTrend(False),Trend(0); var : ZigZagTL(0),tx(0); HPrice = H; LPrice = L; if Index == 0 Then { //초기 최고값 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //초기 최저값 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; } Else { if trend == 0 Then { if HPrice > HV[0] Then { HV[0] = HPrice; HD[0] = sDate; HT[0] = sTime; } if LPrice < LV[0] Then { LV[0] = LPrice; LD[0] = sDate; LT[0] = sTime; } } UpTrend = HPrice >= LV[0]*(1+hRate/100); DownTrend = LPrice <= HV[0]*(1-hRate/100); //상승추세 전환 if trend <= 0 and UpTrend == true Then { trend = 1; For cnt = 9 DownTo 1 { HD[cnt] = HD[cnt-1]; HT[cnt] = HT[cnt-1]; HV[cnt] = HV[cnt-1]; } HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]); TL_SetColor(ZigZagTL,Red); TL_SetSize(ZigZagTL,1); tx = Text_New(sdate,stime,HV[0],NumToStr(HV[0],2)); Text_SetStyle(tx,2,1); } Else if trend >= 0 and DownTrend Then//하락추세 전환 { trend = -1; For cnt = 9 DownTo 1 { LD[cnt] = LD[cnt-1]; LT[cnt] = LT[cnt-1]; LV[cnt] = LV[cnt-1]; } LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]); TL_SetColor(ZigZagTL,Blue); TL_SetSize(ZigZagTL,1); tx = Text_New(sdate,stime,LV[0],NumToStr(LV[0],2)); Text_SetStyle(tx,2,0); } Else { //상승구간 if trend == 1 Then { //고점이 갱신되면 if HPrice > HV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //지그재그 추세선의 끝점을 현재봉으로 이동 TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]); Text_SetLocation(Tx,HD[0],HT[0],HV[0]); Text_SetString(tx,NumToStr(HV[0],2)); } } //하락구간 if trend == -1 Then { //저점이 갱신되면 if LPrice < LV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; //지그재그 추세선의 끝점을 현재봉으로 이동 TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]); Text_SetLocation(Tx,LD[0],LT[0],LV[0]); Text_SetString(tx,NumToStr(LV[0],2)); } } } } 즐거운 하루되세요 > 외국인 님이 쓴 글입니다. > 제목 : 수정부탁드립니다 > 변곡점마다 수치,수직선표시 및 변곡점변경시 사각box색상 부탁드립니다 1) Input:변동률(2),레벨0(1),레벨1(1),레벨2(1),레벨3(1),레벨4(1); Var:고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[15](0); //=========================================================// Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분); If 레벨0 == 1 Then { If 최종상태[0] == 고점 Then { If 처리구분[0] == 신규 Then TL[0] = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 처리구분[0] == 연장 Then TL_SetEnd(TL[0],고[1,3],고[1,4],고[1,1]); } If 최종상태[0] == 저점 Then { If 처리구분[0] == 신규 Then TL[0] = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 처리구분[0] == 연장 Then TL_SetEnd(TL[0],저[1,3],저[1,4],저[1,1]); } TL_SetColor(TL[0],BLACK); TL_SetSize(TL[0],1); } If 레벨1 == 1 Then { If 최종상태[1] == 고점 Then { If 처리구분[1] == 신규 Then TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],고[1,13],고[1,14],고[1,11]); If 처리구분[1] == 연속 Then { TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]); TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); } If 처리구분[1] == 삼선 Then { TL[1] = TL_New(저[2,13],저[2,14],저[2,11],고[2,13],고[2,14],고[2,11]); TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]); TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); } } If 최종상태[1] == 저점 Then { If 처리구분[1] == 신규 Then TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],저[1,13],저[1,14],저[1,11]); If 처리구분[1] == 연속 Then { TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]); TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); } If 처리구분[1] == 삼선 Then { TL[1] = TL_New(고[2,13],고[2,14],고[2,11],저[2,13],저[2,14],저[2,11]); TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]); TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); } } TL_SetColor(TL[1],BLUE); TL_SetSize(TL[1],2); TL_SetColor(TL[2],BLUE); TL_SetSize(TL[2],2); TL_SetColor(TL[3],BLUE); TL_SetSize(TL[3],2); } If 레벨2 == 1 Then { If 최종상태[2] == 고점 Then { If 처리구분[2] == 신규 Then TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],고[1,23],고[1,24],고[1,21]); If 처리구분[2] == 연속 Then { TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]); TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); } If 처리구분[2] == 삼선 Then { TL[4] = TL_New(저[2,23],저[2,24],저[2,21],고[2,23],고[2,24],고[2,21]); TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]); TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); } } If 최종상태[2] == 저점 Then { If 처리구분[2] == 신규 Then TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],저[1,23],저[1,24],저[1,21]); If 처리구분[2] == 연속 Then { TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]); TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); } If 처리구분[2] == 삼선 Then { TL[4] = TL_New(고[2,23],고[2,24],고[2,21],저[2,23],저[2,24],저[2,21]); TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]); TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); } } TL_SetColor(TL[4],MAGENTA); TL_SetSize(TL[4],3); TL_SetColor(TL[5],MAGENTA); TL_SetSize(TL[5],3); TL_SetColor(TL[6],MAGENTA); TL_SetSize(TL[6],3); } If 레벨3 == 1 Then { If 최종상태[3] == 고점 Then { If 처리구분[3] == 신규 Then TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],고[1,33],고[1,34],고[1,31]); If 처리구분[3] == 연속 Then { TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]); TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); } If 처리구분[3] == 삼선 Then { TL[7] = TL_New(저[2,33],저[2,34],저[2,31],고[2,33],고[2,34],고[2,31]); TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]); TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); } } If 최종상태[3] == 저점 Then { If 처리구분[3] == 신규 Then TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],저[1,33],저[1,34],저[1,31]); If 처리구분[3] == 연속 Then { TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]); TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); } If 처리구분[3] == 삼선 Then { TL[7] = TL_New(고[2,33],고[2,34],고[2,31],저[2,33],저[2,34],저[2,31]); TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]); TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); } } TL_SetColor(TL[7],RED); TL_SetSize(TL[7],4); TL_SetColor(TL[8],RED); TL_SetSize(TL[8],4); TL_SetColor(TL[9],RED); TL_SetSize(TL[9],4); } If 레벨4 == 1 Then { If 최종상태[4] == 고점 Then { If 처리구분[4] == 신규 Then TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],고[1,43],고[1,44],고[1,41]); If 처리구분[4] == 연속 Then { TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]); TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); } If 처리구분[4] == 삼선 Then { TL[10] = TL_New(저[2,43],저[2,44],저[2,41],고[2,43],고[2,44],고[2,41]); TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]); TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); } } If 최종상태[4] == 저점 Then { If 처리구분[4] == 신규 Then TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],저[1,43],저[1,44],저[1,41]); If 처리구분[4] == 연속 Then { TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]); TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); } If 처리구분[4] == 삼선 Then { TL[10] = TL_New(고[2,43],고[2,44],고[2,41],저[2,43],저[2,44],저[2,41]); TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]); TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); } } TL_SetColor(TL[10],BWHITE); TL_SetSize(TL[10],5); TL_SetColor(TL[11],BWHITE); TL_SetSize(TL[11],5); TL_SetColor(TL[12],BWHITE); TL_SetSize(TL[12],5); } 2)지그재그표시가 불안정합니다. 수정부탁드립니다. Input:hRate(1),하락색(LimE),상승색(Red),색상뚜게(40),선굵기(1); Var:J(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),Trnd(0),Trnd1(0), dateF11(0),dateF12(0),timeF11(0),timeF12(0),TL1(0),수정TL(0),box(0), dateF21(0),dateF22(0),timeF21(0),timeF22(0); Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0); upRate = 1 + (hRate/100); dnRate = 1 - (hRate/100); for J = 1 to 9 { loBar[J] = loBar[J] + 1; hiBar[J] = hiBar[J] + 1; } if hiVal[0] <= H or hiVal[0] == 0 then { hiVal[0] = H; hiBar[0] = 0; } else { hiBar[0] = hiBar[0] + 1; } if loVal[0] >= L or loVal[0] == 0 then { loVal[0] = L; loBar[0] = 0; } else { loBar[0] = loBar[0] + 1; } if Trnd != dnTr && hiVal[0] > H && hiVal[0] * dnRate > L then Trnd = dnTr; else if Trnd != upTr && loVal[0] < L && loVal[0] * upRate < H then Trnd = upTr; if Trnd[1] == upTr and Trnd == dnTr then { for J = 8 downto 1 { hiVal[J+1] = hiVal[J]; hiBar[J+1] = hiBar[J]; } hiVal[1] = hiVal[0]; hiBar[1] = hiBar[0]; hiVal[0] = H; hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; dateF11 = date[loBar[1]]; timeF11 = stime[loBar[1]]; Value81 = loVal[1]; dateF12 = date[hiBar[1]]; timeF12 = stime[hiBar[1]]; Value92 = hiVal[1]; Text_New(sdate,stime,Value92,"하락"+NumToStr(Value92,2)); TL1 = TL_New(dateF11,timeF11,Value81,dateF12,timeF12,Value92); } if Trnd[1] == dnTr and Trnd == dnTr and hiVal[1] < hiVal[0] and hiVal[0] * dnRate > L then { hiVal[1] = hiVal[0]; hiBar[1] = hiBar[0]; hiVal[0] = H; hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; dateF12 = date[hiBar[1]]; timeF12 = stime[hiBar[1]]; Value92 = hiVal[1]; TL_SetEnd(TL1, dateF12,timeF12,Value92); } if Trnd[1] == dnTr and Trnd == upTr then { for J = 8 downto 1 { loVal[J+1] = loVal[J]; loBar[J+1] = loBar[J]; } loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; dateF11 = date[hiBar[1]]; timeF11 = stime[hiBar[1]]; Value91 = hiVal[1]; dateF12 = date[loBar[1]]; timeF12 = stime[loBar[1]]; Value82 = loVal[1]; Text_New(sdate,stime,Value82,"상승"+NumToStr(Value82,2)); TL1 = TL_New(dateF11,timeF11,Value91,dateF12,timeF12,Value82); } if Trnd[1] == upTr and Trnd == upTr and loVal[1] > loVal[0] and loVal[0] * upRate < H then { loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; dateF12 = date[loBar[1]]; timeF12 = stime[loBar[1]]; Value82 = loVal[1]; TL_SetEnd(TL1, dateF12,timeF12,Value82); } TL_SetSize(TL1,2);