답변완료
수정부탁드립니다
변곡점마다 수치,수직선표시 및 변곡점변경시 사각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);
2023-03-26
1297
글번호 167533
지표