답변완료
추세선
Input:length(10),n(1),카운팅시작일자(20200317), 카운팅시작시간(070000);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0),Tcond(false); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
if sdate >= 카운팅시작일자 and stime >= 카운팅시작시간 Then
Tcond = true;
if Tcond == true Then
{
/* if (sdate != sdate[1] and stime >= 카운팅시작시간) or
(sdate == sdate[1] and stime >= 카운팅시작시간 and stime[1] < 카운팅시작시간) Then
{*/
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then // 고점
{
If TL_NewBit == 1 Then // 신규 고점
{
//TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
k = 0;
For j = 2 To 10
{
If 저[1,1] > 저[j,1] and 저[j,1] > 0 Then { // 전저점보다 낮은 이전 전저점 찾는다
k = j;
j = 10; // exit loop
}
}
If k > 1 Then // 낮은 전저점이 찾아졌다면
{
TL2 = TL_New(저[k,3],저[k,4],저[k,1],sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
TL_SetColor(TL2,BLUE);
TL_SetExtright(TL2,True);
}
q = q + 1; // 고점이 새로 추가되었으므로 1 증가
If q > 2 and q <= 10 Then // 1 증가했으니 2보다 커야 하고 배열 크기가 10이므로 10 이내
{
TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
}
Else // 신규 고점이 아니면 기존 추세선만 연장
{
If k > 1 Then
{
TL_SetEnd(TL2,sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
If q > 2 and q <= 10 Then
{
TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
}
If TL_NewBit == 2 Then
{
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
}
Else If Value1 == -1 Then // 저점
{
If TL_NewBit == 1 Then // 신규 저점
{
//TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
k = k + 1; // 저점이 새로 추가되었으므로 1 증가
If k > 2 and k <= 10 Then // 1 증가했으니 2보다 커야 하고 배열의 크기가 10이므로 10 이내
{
TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
q = 0;
For j = 2 To 10
{
If 고[1,1] < 고[j,1] Then // 전고점보다 높은 이전 전고점을 찾는다
{
q = j;
j = 10; // exit loop
}
}
If q > 1 Then // 높은 전고점이 찾아졌다면
{
TL3 = TL_New(고[q,3],고[q,4],고[q,1],sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
TL_SetColor(TL3,RED);
TL_SetExtright(TL3,True);
}
}
Else
{ // 신규 저점이 아니면 기존 추세선만 연장
If k > 2 and k <= 10 Then
{
TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
If q > 1 Then
{
TL_SetEnd(TL3,sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
}
If TL_NewBit == 2 Then
{
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
}
// }
}
상기 그림과같이 상승추세일때 ①당일저점추세선형성후 ②당일저점추세선이형성되었을시
현재봉이 전고점③보다높게 형성되면 ①당일저점추세선이 삭제되고 ②당일추세선만 나타나게 상기수식을 수정시켜주시면 대단히 감사하겠습니다
반대로 하락추세일때도 같이상기수식으로 수정 부탁드립니다
2020-03-17
378
글번호 136951
지표