커뮤니티
문의드립니다
2018-12-20 12:21:41
432
글번호 124614
1)60534번다시한번문의드립니다 ,지그재그상승과하락을찍는선을 현재봉보다(-1)전봉에 선을찍게하고싶습니다 그림과같이고점다음봉에저점다음봉에 찍히는데(스마일표시한부분)고점과저점에찍히도록 (화살표로표시한부분에) 하고십습니다 다시부탁드립니다~~항상감사드립니다
2)Input:barCnt(5);
Var:j(0),turnPntBit(""),TL1(0),TL33(0),TL44(0),HD(0),HT(0),LD(0),LT(0),HH(0),LL(0);
var : TL121(0),TL122(0),tx121(0),tx122(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9 {
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다
// 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다
Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt);
Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt);
// 전환점구분 null값으로 초기화;
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점;
// else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환전구분 = 저점;
turnPntBit = "";
If Condition1 and Condition2 Then {
If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 then
// 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다.
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
// if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then
// 배열값들을 이전값으로 Move;
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
// if 전환점구분이 바뀌었거나 또는
// (전환점구분은 안바뀌었는데
// (이전 고점보다 높은 고점이 발생했거나 또는
// 이전 저점보다 낮은 저점이 발생했으면)) then
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or
(turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then {
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 입력변수의 봉개수 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
turnPntArr[1] = turnPntBit;
// if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고;
// else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,0);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL11,true);
TL_SetColor(TL11,BLUE);
TL_SetSize(TL11,3);
TL_Delete(TL121);
var1 = valArr[1]-abs(valArr[1]-valArr[2])*0.382;
var2 = valArr[1]-abs(valArr[1]-valArr[2])*0.618;
TL_SetExtRight(TL121,true);
TL_SetColor(TL121,GREEN);
TL_SetSize(TL121,1);
TL_Delete(TL122);
TL_SetExtRight(TL122,true);
TL_SetColor(TL122,GREEN);
TL_SetSize(TL122,1);
Text_Delete(tx121);
Text_Delete(tx122);
tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2));
tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2));
}
if turnPntArr[1][0] == "Lo" Then{
TL_Delete(TL12);
TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL12,true);
TL_SetColor(TL12,RED);
TL_SetSize(TL12,3);
TL_Delete(TL121);
var1 = valArr[1]+abs(valArr[1]-valArr[2])*0.382;
var2 = valArr[1]+abs(valArr[1]-valArr[2])*0.618;
TL_SetExtRight(TL121,true);
TL_SetColor(TL121,GREEN);
TL_SetSize(TL121,1);
TL_Delete(TL122);
TL_SetExtRight(TL122,true);
TL_SetColor(TL122,GREEN);
TL_SetSize(TL122,1);
Text_Delete(tx121);
Text_Delete(tx122);
tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2));
tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2));
}
if bdate != BDate[1] Then{
HD = sdate;
HT = stime;
LD = sdate;
LT = stime;
HH = H;
LL = L;
}
if H > HH Then{
HH = H;
HD = sdate;
HT = stime;
}
TL_Delete(TL33);
if turnPntArr[1][0] == "Hi" Then{
TL33 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],HD,HT,dayhigh);
}
if turnPntArr[1][0] == "Lo" Then{
TL33 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],HD,HT,dayhigh);
}
TL_SetExtRight(TL33,true);
if L < LL Then{
LL = L;
LD = sdate;
LT = stime;
}
TL_Delete(TL44);
if turnPntArr[1][0] == "Hi" Then{
TL44 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],LD,LT,daylow);
}
if turnPntArr[1][0] == "Lo" Then{
TL44 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],LD,LT,daylow);
}
TL_SetExtRight(TL44,true);
Text_SetLocation(Tx121,sdate,stime,Text_GetValue(Tx121));
Text_SetLocation(Tx122,sdate,stime,Text_GetValue(Tx122));
Text_SetStyle(tx121,0,1);
Text_SetStyle(tx122,0,1);
고점과저점두선을나오게 하였는데 고점을찍으면청색으로 나오면 밑에빨강저점은사라지게,
반대로 저점빨강이나오면 고점청색은 사라지게 즉 하나만 나오게부탁드립니다~~
- 1. 125226_11.png (0.02 MB)
- 2. 20.png (0.03 MB)
답변 1
예스스탁 예스스탁 답변
2018-12-20 13:53:48
안녕하세요
예스스탁입니다.
1
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),tl2(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;
TL1 = TL_New(sDate[sBar],sTime[sBar],VL1,sDate,sTime,PK1);
TL_Delete(TL2);
TL2 = TL_New(sDate[sBar],sTime[sBar],VL1,sDate,sTime,VL1);
// 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,sDate,sTime,PK1);
TL_SetEnd(TL2,sDate,sTime,VL1);
//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;
TL1 = TL_New(sDate[sBar],sTime[sBar],PK1,sDate,sTime,VL1);
TL_Delete(TL2);
TL2 = TL_New(sDate[sBar],sTime[sBar],PK1,sDate,sTime,PK1);
TL_SetSize(TL1,2);
TL_SetColor(TL1,BLUE);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End
Else If VL1 > L then Begin
VL1 = L; vlBN1 = index;
//ssssssssssssssssssssssssssssssssss
TL_SetEnd(TL1,sDate,sTime,VL1);
TL_SetEnd(TL2,sDate,sTime,PK1);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End ;
lastVertex = "Valley";
End ;
Plot2(highest(H,length));
plot3(lowest(L,length));
2
input:barCnt(5);
Var:j(0),turnPntBit(""),TL1(0),TL33(0),TL44(0),HD(0),HT(0),LD(0),LT(0),HH(0),LL(0);
var : TL121(0),TL122(0),tx121(0),tx122(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9 {
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다
// 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다
Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt);
Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt);
// 전환점구분 null값으로 초기화;
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점;
// else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환전구분 = 저점;
turnPntBit = "";
If Condition1 and Condition2 Then {
If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 then
// 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다.
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
// if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then
// 배열값들을 이전값으로 Move;
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
// if 전환점구분이 바뀌었거나 또는
// (전환점구분은 안바뀌었는데
// (이전 고점보다 높은 고점이 발생했거나 또는
// 이전 저점보다 낮은 저점이 발생했으면)) then
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or
(turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then {
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 입력변수의 봉개수 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
turnPntArr[1] = turnPntBit;
// if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고;
// else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,0);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0);
if turnPntArr[1][0] == "Hi" Then
{
TL_delete(TL12);
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL11,true);
TL_SetColor(TL11,BLUE);
TL_SetSize(TL11,3);
TL_Delete(TL121);
var1 = valArr[1]-abs(valArr[1]-valArr[2])*0.382;
var2 = valArr[1]-abs(valArr[1]-valArr[2])*0.618;
TL_SetExtRight(TL121,true);
TL_SetColor(TL121,GREEN);
TL_SetSize(TL121,1);
TL_Delete(TL122);
TL_SetExtRight(TL122,true);
TL_SetColor(TL122,GREEN);
TL_SetSize(TL122,1);
Text_Delete(tx121);
Text_Delete(tx122);
tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2));
tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2));
}
if turnPntArr[1][0] == "Lo" Then
{
TL_delete(TL11);
TL_Delete(TL12);
TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL12,true);
TL_SetColor(TL12,RED);
TL_SetSize(TL12,3);
TL_Delete(TL121);
var1 = valArr[1]+abs(valArr[1]-valArr[2])*0.382;
var2 = valArr[1]+abs(valArr[1]-valArr[2])*0.618;
TL_SetExtRight(TL121,true);
TL_SetColor(TL121,GREEN);
TL_SetSize(TL121,1);
TL_Delete(TL122);
TL_SetExtRight(TL122,true);
TL_SetColor(TL122,GREEN);
TL_SetSize(TL122,1);
Text_Delete(tx121);
Text_Delete(tx122);
tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2));
tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2));
}
if bdate != BDate[1] Then{
HD = sdate;
HT = stime;
LD = sdate;
LT = stime;
HH = H;
LL = L;
}
if H > HH Then{
HH = H;
HD = sdate;
HT = stime;
}
TL_Delete(TL33);
if turnPntArr[1][0] == "Hi" Then{
TL33 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],HD,HT,dayhigh);
}
if turnPntArr[1][0] == "Lo" Then{
TL33 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],HD,HT,dayhigh);
}
TL_SetExtRight(TL33,true);
if L < LL Then{
LL = L;
LD = sdate;
LT = stime;
}
TL_Delete(TL44);
if turnPntArr[1][0] == "Hi" Then{
TL44 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],LD,LT,daylow);
}
if turnPntArr[1][0] == "Lo" Then{
TL44 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],LD,LT,daylow);
}
TL_SetExtRight(TL44,true);
Text_SetLocation(Tx121,sdate,stime,Text_GetValue(Tx121));
Text_SetLocation(Tx122,sdate,stime,Text_GetValue(Tx122));
Text_SetStyle(tx121,0,1);
Text_SetStyle(tx122,0,1);
즐거운 하루되세요
> 장군 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 1)60534번다시한번문의드립니다 ,지그재그상승과하락을찍는선을 현재봉보다(-1)전봉에 선을찍게하고싶습니다 그림과같이고점다음봉에저점다음봉에 찍히는데(스마일표시한부분)고점과저점에찍히도록 (화살표로표시한부분에) 하고십습니다 다시부탁드립니다~~항상감사드립니다
2)Input:barCnt(5);
Var:j(0),turnPntBit(""),TL1(0),TL33(0),TL44(0),HD(0),HT(0),LD(0),LT(0),HH(0),LL(0);
var : TL121(0),TL122(0),tx121(0),tx122(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9 {
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다
// 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다
Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt);
Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt);
// 전환점구분 null값으로 초기화;
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점;
// else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환전구분 = 저점;
turnPntBit = "";
If Condition1 and Condition2 Then {
If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 then
// 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다.
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
// if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then
// 배열값들을 이전값으로 Move;
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
// if 전환점구분이 바뀌었거나 또는
// (전환점구분은 안바뀌었는데
// (이전 고점보다 높은 고점이 발생했거나 또는
// 이전 저점보다 낮은 저점이 발생했으면)) then
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or
(turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then {
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 입력변수의 봉개수 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
turnPntArr[1] = turnPntBit;
// if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고;
// else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,0);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL11,true);
TL_SetColor(TL11,BLUE);
TL_SetSize(TL11,3);
TL_Delete(TL121);
var1 = valArr[1]-abs(valArr[1]-valArr[2])*0.382;
var2 = valArr[1]-abs(valArr[1]-valArr[2])*0.618;
TL_SetExtRight(TL121,true);
TL_SetColor(TL121,GREEN);
TL_SetSize(TL121,1);
TL_Delete(TL122);
TL_SetExtRight(TL122,true);
TL_SetColor(TL122,GREEN);
TL_SetSize(TL122,1);
Text_Delete(tx121);
Text_Delete(tx122);
tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2));
tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2));
}
if turnPntArr[1][0] == "Lo" Then{
TL_Delete(TL12);
TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL12,true);
TL_SetColor(TL12,RED);
TL_SetSize(TL12,3);
TL_Delete(TL121);
var1 = valArr[1]+abs(valArr[1]-valArr[2])*0.382;
var2 = valArr[1]+abs(valArr[1]-valArr[2])*0.618;
TL_SetExtRight(TL121,true);
TL_SetColor(TL121,GREEN);
TL_SetSize(TL121,1);
TL_Delete(TL122);
TL_SetExtRight(TL122,true);
TL_SetColor(TL122,GREEN);
TL_SetSize(TL122,1);
Text_Delete(tx121);
Text_Delete(tx122);
tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2));
tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2));
}
if bdate != BDate[1] Then{
HD = sdate;
HT = stime;
LD = sdate;
LT = stime;
HH = H;
LL = L;
}
if H > HH Then{
HH = H;
HD = sdate;
HT = stime;
}
TL_Delete(TL33);
if turnPntArr[1][0] == "Hi" Then{
TL33 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],HD,HT,dayhigh);
}
if turnPntArr[1][0] == "Lo" Then{
TL33 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],HD,HT,dayhigh);
}
TL_SetExtRight(TL33,true);
if L < LL Then{
LL = L;
LD = sdate;
LT = stime;
}
TL_Delete(TL44);
if turnPntArr[1][0] == "Hi" Then{
TL44 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],LD,LT,daylow);
}
if turnPntArr[1][0] == "Lo" Then{
TL44 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],LD,LT,daylow);
}
TL_SetExtRight(TL44,true);
Text_SetLocation(Tx121,sdate,stime,Text_GetValue(Tx121));
Text_SetLocation(Tx122,sdate,stime,Text_GetValue(Tx122));
Text_SetStyle(tx121,0,1);
Text_SetStyle(tx122,0,1);
고점과저점두선을나오게 하였는데 고점을찍으면청색으로 나오면 밑에빨강저점은사라지게,
반대로 저점빨강이나오면 고점청색은 사라지게 즉 하나만 나오게부탁드립니다~~