커뮤니티
부탁 드립니다.
2018-06-18 13:13:35
151
글번호 119796
도움 주심에 감사 드립니다.
질문1)
다음은 현재일 기준 4일전 까지만 선을 긋고 있습니다.
이것을 과거일을 지정하고
그날자 이전 4일동안 선을 긋고 싶습니다.
미리 감사 드립니다.
input:시간(080000);
if sTime >= 시간 and stime[1] < 시간 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
질문2)
다음 수식에서
추세선인TL2,TL3가
현재 그어지는 선의 길이에서
좌우 끝단까지 연장해서 그을수 있도록 부탁 드립니다.
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}
답변 3
예스스탁 예스스탁 답변
2018-06-18 15:16:36
안녕하세요
예스스탁입니다.
1.
input : 일자(20180615),시간(080000);
if sTime >= 시간 and stime[1] < 시간 and sdate <= 일자 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
2
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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 { // 낮은 전저점이 찾아졌다면
TL_SetExtLeft(TL2,false);
TL_SetExtRight(TL2,false);
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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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 { // 높은 전고점이 찾아졌다면
TL_SetExtLeft(TL3,false);
TL_SetExtRight(TL3,false);
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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetExtLeft(TL3,true);
TL_SetExtRight(TL3,true);
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 부탁 드립니다.
> 도움 주심에 감사 드립니다.
질문1)
다음은 현재일 기준 4일전 까지만 선을 긋고 있습니다.
이것을 과거일을 지정하고
그날자 이전 4일동안 선을 긋고 싶습니다.
미리 감사 드립니다.
input:시간(080000);
if sTime >= 시간 and stime[1] < 시간 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
질문2)
다음 수식에서
추세선인TL2,TL3가
현재 그어지는 선의 길이에서
좌우 끝단까지 연장해서 그을수 있도록 부탁 드립니다.
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}
yes
2018-06-18 15:26:22
답변 감사 드립니다.
답변2) 수식을 실행결과 여러개의 추세선중에(tl2, tl3)
단 2개만 연장 되고 있습니다.
모든 추세선이 연장 되도록 부탁 드리고자 합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 부탁 드립니다.
>
안녕하세요
예스스탁입니다.
1.
input : 일자(20180615),시간(080000);
if sTime >= 시간 and stime[1] < 시간 and sdate <= 일자 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
2
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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 { // 낮은 전저점이 찾아졌다면
TL_SetExtLeft(TL2,false);
TL_SetExtRight(TL2,false);
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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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 { // 높은 전고점이 찾아졌다면
TL_SetExtLeft(TL3,false);
TL_SetExtRight(TL3,false);
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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetExtLeft(TL3,true);
TL_SetExtRight(TL3,true);
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 부탁 드립니다.
> 도움 주심에 감사 드립니다.
질문1)
다음은 현재일 기준 4일전 까지만 선을 긋고 있습니다.
이것을 과거일을 지정하고
그날자 이전 4일동안 선을 긋고 싶습니다.
미리 감사 드립니다.
input:시간(080000);
if sTime >= 시간 and stime[1] < 시간 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
질문2)
다음 수식에서
추세선인TL2,TL3가
현재 그어지는 선의 길이에서
좌우 끝단까지 연장해서 그을수 있도록 부탁 드립니다.
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}
예스스탁 예스스탁 답변
2018-06-18 15:37:31
안녕하세요
예스스탁입니다.
기존식은 마지막 TL2와 TL3만 연장됩니다.
모두 연장하고자 하시면 아래식 이용하시면 됩니다.
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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 { // 낮은 전저점이 찾아졌다면
# TL_SetExtLeft(TL2,false);
# TL_SetExtRight(TL2,false);
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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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 { // 높은 전고점이 찾아졌다면
# TL_SetExtLeft(TL3,false);
# TL_SetExtRight(TL3,false);
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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetExtLeft(TL3,true);
TL_SetExtRight(TL3,true);
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : Re : Re : 부탁 드립니다.
> 답변 감사 드립니다.
답변2) 수식을 실행결과 여러개의 추세선중에(tl2, tl3)
단 2개만 연장 되고 있습니다.
모든 추세선이 연장 되도록 부탁 드리고자 합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 부탁 드립니다.
>
안녕하세요
예스스탁입니다.
1.
input : 일자(20180615),시간(080000);
if sTime >= 시간 and stime[1] < 시간 and sdate <= 일자 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
2
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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 { // 낮은 전저점이 찾아졌다면
TL_SetExtLeft(TL2,false);
TL_SetExtRight(TL2,false);
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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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 { // 높은 전고점이 찾아졌다면
TL_SetExtLeft(TL3,false);
TL_SetExtRight(TL3,false);
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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetExtLeft(TL3,true);
TL_SetExtRight(TL3,true);
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 부탁 드립니다.
> 도움 주심에 감사 드립니다.
질문1)
다음은 현재일 기준 4일전 까지만 선을 긋고 있습니다.
이것을 과거일을 지정하고
그날자 이전 4일동안 선을 긋고 싶습니다.
미리 감사 드립니다.
input:시간(080000);
if sTime >= 시간 and stime[1] < 시간 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
질문2)
다음 수식에서
추세선인TL2,TL3가
현재 그어지는 선의 길이에서
좌우 끝단까지 연장해서 그을수 있도록 부탁 드립니다.
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==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,magenta);
TL_SetSize(TL2,추세선두께);
}
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 { // 신규 저점
if 파동선선택1==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,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} 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]);
}
}