커뮤니티
재문의드립니다
2018-12-25 20:45:21
343
글번호 124743
60590 번 다시한번더문의드립니다 그럼 지그재그선을 마지막선만(표시한부분만) 나오게 수정부탁드립니다~~
- 1. 125350_1.png (0.04 MB)
답변 1
예스스탁 예스스탁 답변
2018-12-26 10:09:19
안녕하세요
예스스탁입니다.
Input:length(10);
Var:lastHi(0),lastLo(0),lastVertex(""),procBit("");
//ssssssssssssssssssssssssssssssssss
Var:sBar(0),TL1(0);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Var:PK1(0),PK2(0),PK3(0),PK4(0),PK5(0),PK6(0),PK7(0),PK8(0),PK9(0),PK10(0),
VL1(0),VL2(0),VL3(0),VL4(0),VL5(0),VL6(0),VL7(0),VL8(0),VL9(0),VL10(0),
pkBN1(0),pkBN2(0),pkBN3(0),pkBN4(0),pkBN5(0),
pkBN6(0),pkBN7(0),pkBN8(0),pkBN9(0),pkBN10(0),
vlBN1(0),vlBN2(0),vlBN3(0),vlBN4(0),vlBN5(0),
vlBN6(0),vlBN7(0),vlBN8(0),vlBN9(0),vlBN10(0);
//==========================================
Condition1 = Highest(H,length) == H and lastHi <> H;
Condition2 = Lowest (L,length) == L and lastLo <> L;
procBit = "";
If Condition1 and Condition2 Then Begin
If lastVertex == "Valley" Then Begin
If VL1 > L Then procBit = "Valley";
Else procBit = "Peak";
End
Else If lastVertex == "Peak" Then Begin
If PK1 < H Then procBit = "Peak" ;
Else procBit = "Valley";
End;
End
Else If Condition1 Then procBit = "Peak";
Else If Condition2 Then procBit = "Valley";
//==========================================
If procBit == "Peak" Then Begin
lastHi = H;
If lastVertex == "Valley" Then Begin
PK9 = PK8; pkBN9 = pkBN8;
PK8 = PK7; pkBN8 = pkBN7;
PK7 = PK6; pkBN7 = pkBN6;
PK6 = PK5; pkBN6 = pkBN5;
PK5 = PK4; pkBN5 = pkBN4;
PK4 = PK3; pkBN4 = pkBN3;
PK3 = PK2; pkBN3 = pkBN2;
PK2 = PK1; pkBN2 = pkBN1;
PK1 = C; pkBN1 = index;
//ssssssssssssssssssssssssssssssssss
// 직전저점에서 현재의 고점까지 잇는 추세선을 생성
// 추세선생성 함수 TL_New(시작점 일자,시작점 시각,시작점 값,끝점 일자, 끝점 시각,끝점 값)
// 시작점의 일자와 시각을 구하기 위해 현재 봉에서 얼마나 떨어졌나를 계산
// 끝점은 현재 봉이므로 Date[0], Time[0]이라 [0]을 생략
sBar = index - vlBN1;
TL_Delete(tL1);
TL1 = TL_New(Date[sBar],Time[sBar],VL1,Date,Time,PK1);
// TL1은 추세선의 번호를 결과로 돌려받는다.
// 리턴된 추세선 번호를 이용해서 선의 두께와 색깔을 설정
TL_SetSize(TL1,2);
TL_SetColor(TL1,MAGENTA);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End
Else If PK1 < H Then Begin
PK1 = H; pkBN1 = index;
//ssssssssssssssssssssssssssssssssss
// 신규 고점이 생긴게 아니라 고점의 위치가 바뀐 것이므로 추세선의 끝점만 바꿔주면 된다.
// 여기서 끝점은 현재 봉이다.
TL_SetEnd(TL1,Date,Time,PK1);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End ;
lastVertex = "Peak";
End ;
//==========================================
If procBit == "Valley" Then Begin
lastLo = L;
If lastVertex == "Peak" then Begin
VL9 = VL8; vlBN9 = vlBN8;
VL8 = VL7; vlBN8 = vlBN7;
VL7 = VL6; vlBN7 = vlBN6;
VL6 = VL5; vlBN6 = vlBN5;
VL5 = VL4; vlBN5 = vlBN4;
VL4 = VL3; vlBN4 = vlBN3;
VL3 = VL2; vlBN3 = vlBN2;
VL2 = VL1; vlBN2 = vlBN1;
VL1 = L; vlBN1 = index;
//ssssssssssssssssssssssssssssssssss
sBar = index - pkBN1;
TL_Delete(tL1);
TL1 = TL_New(Date[sBar],Time[sBar],PK1,Date,Time,VL1);
TL_SetSize(TL1,2);
TL_SetColor(TL1,BLUE);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End
Else If VL1 > L then Begin
VL1 = L; vlBN1 = index;
//ssssssssssssssssssssssssssssssssss
TL_SetEnd(TL1,Date,Time,VL1);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End ;
lastVertex = "Valley";
End ;
Plot2(highest(H,length));
plot3(lowest(L,length));
즐거운 하루되세요
> 장군 님이 쓴 글입니다.
> 제목 : 재문의드립니다
>
60590 번 다시한번더문의드립니다 그럼 지그재그선을 마지막선만(표시한부분만) 나오게 수정부탁드립니다~~
다음글
이전글