커뮤니티
질문을 너무 자주하네요..
2012-06-21 08:50:26
479
글번호 52217
수식지왕님의 추세선 수식입니다..
근데 수식이 현물용인거같아서 선물용으로 좀 바꿔볼려고하는데요..
첨부파일처럼 오류가뜨는데 어떻게 바꿔야될지모르겠습니다 ㅠㅠ
밑에 오류 2줄은 간단히 해결했는데 나머지가 문제네요..
DayOfWeek / WeekHigh / MonthHigh를 없애고 당일범위내에서만
추세선을 그릴수있도록할수없을까요??
Ps. 질문을 잘못해서 다시수정했습니다;
#==========================================#
# 지표명 : 하락추세선 확장형(추세강화 반영)
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:기간단위(1), //1(일단위),2(주단위),3(월단위),4(년단위),그외(전기간)
추세강화판단(5);
Var:j(0),k(0),n(0),Yes(1),No(0),
최종고Bar(0),추세선추가(0),기울기(0),추세강화(0);
Array:기준고[100](0),기준고Bar[100](0),고[100](0),고Bar[100](0),
추세선[100](0),체크Bit[100](0);
#==========================================#
# 기준점들의 index 값 증가
#==========================================#
최종고Bar = 최종고Bar + 1;
For j = 1 To 99
{
기준고Bar[j] = 기준고Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 기간단위별 초기화
#==========================================#
If (기간단위 == 1 && Date[1] < Date) ||
(기간단위 == 2 && Date[1] < Date && _DayOfWeek[1] >= _DayOfWeek) || //사용자함수
(기간단위 == 3 && Int(Date/100)[1] < Int(Date/100)) ||
(기간단위 == 4 && Int(Date/10000)[1] < Int(Date/10000)) Then
{
For j = 1 To 99
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
}
n = 0;
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 추세의 출발점 찾기
#==========================================#
If 기준고[n] == 0 &&
((기간단위 == 1 && H[1] == DayHigh) ||
(기간단위 == 2 && H[1] == _WeekHigh(0)) || //사용자함수
(기간단위 > 2 && H[1] == _MonthHigh(0))) && //사용자함수
H[1] > H Then
{
n = n + 1;
기준고[n] = H[1];
기준고Bar[n] = 1;
고[n] = H;
고Bar[n] = 0;
체크Bit[n] = Yes;
추세선추가 = No;
}
#==========================================#
# 추세선 계산
#==========================================#
For j = 1 To n
{
추세선[j] = ((고[j]-기준고[j])/(기준고Bar[j]-고Bar[j]) * 기준고Bar[j] + 기준고[j]) * 체크Bit[j];
}
#==========================================#
# 추세선 유효성 판단
#==========================================#
If 기준고[n] > 0 && 기준고[n] > H Then //출발점보다 고가가 낮은 상태를 유지
{
#------------------------------------------#
# 고가가 추세선 상향 이탈시 신규 추세선 추가
#------------------------------------------#
If 추세선[n] < H Then //추세이탈 발생
{
If 추세선추가 == Yes Then //추세선 추가 가능
{
If 추세강화 == Yes Then
{
For j = n - 1 DownTo 1
{
If 추세선[n] <= 추세선[j] &&
추세선[j] > 0 &&
추세선[j] < H Then
{
For k = n DownTo j + 1
{
추세선[k] = 0;
기준고[k] = 0;
체크Bit[k] = No;
}
n = j;
추세강화 = No;
j = 1;
}
}
}
n = n + 1;
기준고[n] = 기준고[n-1];
기준고Bar[n] = 기준고Bar[n-1];
추세선추가 = No;
}
고[n] = H;
고Bar[n] = 0;
최종고Bar = 0;
체크Bit[n] = Yes;
추세선[n] = ((고[n]-기준고[n])/(기준고Bar[n]-고Bar[n]) * 기준고Bar[n] + 기준고[n]) * 체크Bit[n];
}
Else If 추세선[n] > 0 Then
{
#------------------------------------------#
# 추세강화시 새로운 출발점의 추세선을 추가
#------------------------------------------#
If 추세강화 == No &&
최종고Bar > 추세강화판단 Then
{
n = n + 1;
기준고[n] = 고[n-1];
기준고Bar[n] = 고Bar[n-1];
#------------------------------------------#
# 출발점부터 현재봉까지 추세선 소급 계산
#------------------------------------------#
고[n] = H[기준고Bar[n]-1];
기울기 = (고[n]-기준고[n]);
고Bar[n] = 기준고Bar[n]-1;
For j = 2 To 기준고Bar[n]
{
추세선[n] = 기울기 * j + 기준고[n];
If 추세선[n] < H[기준고Bar[n]-j] Then
{
고[n] = H[기준고Bar[n]-j];
기울기 = (고[n]-기준고[n])/j;
고Bar[n] = 기준고Bar[n]-j;
최종고Bar = 고Bar[n];
추세선[n] = 기울기 * j + 기준고[n];
}
}
체크Bit[n] = Yes;
For k = n - 2 DownTo 1
{
체크Bit[k] = No;
추세선[k] = 0;
}
추세강화 = Yes;
추세선추가 = No;
}
Else If 고[n] > H && 고Bar[n] > 1 Then 추세선추가 = Yes;
}
}
#------------------------------------------#
# 출발점의 유효성 판단
#------------------------------------------#
Else If 기준고[n] > 0 && 기준고[n] <= H Then //출발점보다 고가가 높아지면
{
For j = n DownTo 1
{
If 기준고[j] > 0 && 기준고[j] <= H Then //출발점이 무너진 추세선만 초기화
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
n = j - 1;
}
}
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 지표식 출력
#==========================================#
If 추세선[1] > 0 Then Plot1(추세선[1]);
생 략
If 추세선[39] > 0 Then Plot39(추세선[39]);
- 1. QH.jpg (0.05 MB)
답변 2
예스스탁 예스스탁 답변
2012-06-21 10:54:00
안녕하세요
예스스탁입니다.
올리신 식은 작성자가 직접 만든 함수를 사용하고 있습니다.
위에4개의 오류가 바로 해당 함수가 없다는 내용입니다.
식을 구하신 사이트나 블러그에 가시면
해당 함수에 대한 내용도 같이 있을 것입니다.
이름으로 유추하면 주간고가와 월간고가, 요일을 나타내는 내용으로
해당 내용을 변수로 변경해서 추가했습니다.
기간 단위가 1이면 일간단위이므로
따로 수정하지 않고 기간단위를 1로만 사용하시면 됩니다.
#==========================================#
# 지표명 : 하락추세선 확장형(추세강화 반영)
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:기간단위(1), //1(일단위),2(주단위),3(월단위),4(년단위),그외(전기간)
추세강화판단(5);
Var:j(0),k(0),n(0),Yes(1),No(0),
최종고Bar(0),추세선추가(0),기울기(0),추세강화(0);
Array:기준고[100](0),기준고Bar[100](0),고[100](0),고Bar[100](0),
추세선[100](0),체크Bit[100](0);
var : _WeekHigh(0),_MonthHigh(0);
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{
_WeekHigh = H;
}
if H > _WeekHigh Then
_WeekHigh = H;
if date > date[1]+30 Then
_MonthHigh = H;
if H > _MonthHigh Then
_MonthHigh = H;
#==========================================#
# 기준점들의 index 값 증가
#==========================================#
최종고Bar = 최종고Bar + 1;
For j = 1 To 99
{
기준고Bar[j] = 기준고Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 기간단위별 초기화
#==========================================#
If (기간단위 == 1 && Date[1] < Date) ||
(기간단위 == 2 && Date[1] < Date && DayOfWeek(sdate[1]) >= DayOfWeek(sdate)) || //사용자함수
(기간단위 == 3 && Int(Date/100)[1] < Int(Date/100)) ||
(기간단위 == 4 && Int(Date/10000)[1] < Int(Date/10000)) Then
{
For j = 1 To 99
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
}
n = 0;
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 추세의 출발점 찾기
#==========================================#
If 기준고[n] == 0 &&
((기간단위 == 1 && H[1] == DayHigh) ||
(기간단위 == 2 && H[1] == _WeekHigh) || //사용자함수
(기간단위 > 2 && H[1] == _MonthHigh)) && //사용자함수
H[1] > H Then
{
n = n + 1;
기준고[n] = H[1];
기준고Bar[n] = 1;
고[n] = H;
고Bar[n] = 0;
체크Bit[n] = Yes;
추세선추가 = No;
}
#==========================================#
# 추세선 계산
#==========================================#
For j = 1 To n
{
추세선[j] = ((고[j]-기준고[j])/(기준고Bar[j]-고Bar[j]) * 기준고Bar[j] + 기준고[j]) * 체크Bit[j];
}
#==========================================#
# 추세선 유효성 판단
#==========================================#
If 기준고[n] > 0 && 기준고[n] > H Then //출발점보다 고가가 낮은 상태를 유지
{
#------------------------------------------#
# 고가가 추세선 상향 이탈시 신규 추세선 추가
#------------------------------------------#
If 추세선[n] < H Then //추세이탈 발생
{
If 추세선추가 == Yes Then //추세선 추가 가능
{
If 추세강화 == Yes Then
{
For j = n - 1 DownTo 1
{
If 추세선[n] <= 추세선[j] &&
추세선[j] > 0 &&
추세선[j] < H Then
{
For k = n DownTo j + 1
{
추세선[k] = 0;
기준고[k] = 0;
체크Bit[k] = No;
}
n = j;
추세강화 = No;
j = 1;
}
}
}
n = n + 1;
기준고[n] = 기준고[n-1];
기준고Bar[n] = 기준고Bar[n-1];
추세선추가 = No;
}
고[n] = H;
고Bar[n] = 0;
최종고Bar = 0;
체크Bit[n] = Yes;
추세선[n] = ((고[n]-기준고[n])/(기준고Bar[n]-고Bar[n]) * 기준고Bar[n] + 기준고[n]) * 체크Bit[n];
}
Else If 추세선[n] > 0 Then
{
#------------------------------------------#
# 추세강화시 새로운 출발점의 추세선을 추가
#------------------------------------------#
If 추세강화 == No &&
최종고Bar > 추세강화판단 Then
{
n = n + 1;
기준고[n] = 고[n-1];
기준고Bar[n] = 고Bar[n-1];
#------------------------------------------#
# 출발점부터 현재봉까지 추세선 소급 계산
#------------------------------------------#
고[n] = H[기준고Bar[n]-1];
기울기 = (고[n]-기준고[n]);
고Bar[n] = 기준고Bar[n]-1;
For j = 2 To 기준고Bar[n]
{
추세선[n] = 기울기 * j + 기준고[n];
If 추세선[n] < H[기준고Bar[n]-j] Then
{
고[n] = H[기준고Bar[n]-j];
기울기 = (고[n]-기준고[n])/j;
고Bar[n] = 기준고Bar[n]-j;
최종고Bar = 고Bar[n];
추세선[n] = 기울기 * j + 기준고[n];
}
}
체크Bit[n] = Yes;
For k = n - 2 DownTo 1
{
체크Bit[k] = No;
추세선[k] = 0;
}
추세강화 = Yes;
추세선추가 = No;
}
Else If 고[n] > H && 고Bar[n] > 1 Then 추세선추가 = Yes;
}
}
#------------------------------------------#
# 출발점의 유효성 판단
#------------------------------------------#
Else If 기준고[n] > 0 && 기준고[n] <= H Then //출발점보다 고가가 높아지면
{
For j = n DownTo 1
{
If 기준고[j] > 0 && 기준고[j] <= H Then //출발점이 무너진 추세선만 초기화
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
n = j - 1;
}
}
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 지표식 출력
#==========================================#
If 추세선[1] > 0 Then Plot1(추세선[1]);
If 추세선[39] > 0 Then Plot39(추세선[39]);
위 식에서
즐거운 하루되세요
> 돈깡 님이 쓴 글입니다.
> 제목 : 질문을 너무 자주하네요..
> 수식지왕님의 추세선 수식입니다..
근데 수식이 현물용인거같아서 선물용으로 좀 바꿔볼려고하는데요..
첨부파일처럼 오류가뜨는데 어떻게 바꿔야될지모르겠습니다 ㅠㅠ
밑에 오류 2줄은 간단히 해결했는데 나머지가 문제네요..
DayOfWeek / WeekHigh / MonthHigh를 없애고 당일범위내에서만
추세선을 그릴수있도록할수없을까요??
Ps. 질문을 잘못해서 다시수정했습니다;
#==========================================#
# 지표명 : 하락추세선 확장형(추세강화 반영)
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:기간단위(1), //1(일단위),2(주단위),3(월단위),4(년단위),그외(전기간)
추세강화판단(5);
Var:j(0),k(0),n(0),Yes(1),No(0),
최종고Bar(0),추세선추가(0),기울기(0),추세강화(0);
Array:기준고[100](0),기준고Bar[100](0),고[100](0),고Bar[100](0),
추세선[100](0),체크Bit[100](0);
#==========================================#
# 기준점들의 index 값 증가
#==========================================#
최종고Bar = 최종고Bar + 1;
For j = 1 To 99
{
기준고Bar[j] = 기준고Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 기간단위별 초기화
#==========================================#
If (기간단위 == 1 && Date[1] < Date) ||
(기간단위 == 2 && Date[1] < Date && _DayOfWeek[1] >= _DayOfWeek) || //사용자함수
(기간단위 == 3 && Int(Date/100)[1] < Int(Date/100)) ||
(기간단위 == 4 && Int(Date/10000)[1] < Int(Date/10000)) Then
{
For j = 1 To 99
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
}
n = 0;
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 추세의 출발점 찾기
#==========================================#
If 기준고[n] == 0 &&
((기간단위 == 1 && H[1] == DayHigh) ||
(기간단위 == 2 && H[1] == _WeekHigh(0)) || //사용자함수
(기간단위 > 2 && H[1] == _MonthHigh(0))) && //사용자함수
H[1] > H Then
{
n = n + 1;
기준고[n] = H[1];
기준고Bar[n] = 1;
고[n] = H;
고Bar[n] = 0;
체크Bit[n] = Yes;
추세선추가 = No;
}
#==========================================#
# 추세선 계산
#==========================================#
For j = 1 To n
{
추세선[j] = ((고[j]-기준고[j])/(기준고Bar[j]-고Bar[j]) * 기준고Bar[j] + 기준고[j]) * 체크Bit[j];
}
#==========================================#
# 추세선 유효성 판단
#==========================================#
If 기준고[n] > 0 && 기준고[n] > H Then //출발점보다 고가가 낮은 상태를 유지
{
#------------------------------------------#
# 고가가 추세선 상향 이탈시 신규 추세선 추가
#------------------------------------------#
If 추세선[n] < H Then //추세이탈 발생
{
If 추세선추가 == Yes Then //추세선 추가 가능
{
If 추세강화 == Yes Then
{
For j = n - 1 DownTo 1
{
If 추세선[n] <= 추세선[j] &&
추세선[j] > 0 &&
추세선[j] < H Then
{
For k = n DownTo j + 1
{
추세선[k] = 0;
기준고[k] = 0;
체크Bit[k] = No;
}
n = j;
추세강화 = No;
j = 1;
}
}
}
n = n + 1;
기준고[n] = 기준고[n-1];
기준고Bar[n] = 기준고Bar[n-1];
추세선추가 = No;
}
고[n] = H;
고Bar[n] = 0;
최종고Bar = 0;
체크Bit[n] = Yes;
추세선[n] = ((고[n]-기준고[n])/(기준고Bar[n]-고Bar[n]) * 기준고Bar[n] + 기준고[n]) * 체크Bit[n];
}
Else If 추세선[n] > 0 Then
{
#------------------------------------------#
# 추세강화시 새로운 출발점의 추세선을 추가
#------------------------------------------#
If 추세강화 == No &&
최종고Bar > 추세강화판단 Then
{
n = n + 1;
기준고[n] = 고[n-1];
기준고Bar[n] = 고Bar[n-1];
#------------------------------------------#
# 출발점부터 현재봉까지 추세선 소급 계산
#------------------------------------------#
고[n] = H[기준고Bar[n]-1];
기울기 = (고[n]-기준고[n]);
고Bar[n] = 기준고Bar[n]-1;
For j = 2 To 기준고Bar[n]
{
추세선[n] = 기울기 * j + 기준고[n];
If 추세선[n] < H[기준고Bar[n]-j] Then
{
고[n] = H[기준고Bar[n]-j];
기울기 = (고[n]-기준고[n])/j;
고Bar[n] = 기준고Bar[n]-j;
최종고Bar = 고Bar[n];
추세선[n] = 기울기 * j + 기준고[n];
}
}
체크Bit[n] = Yes;
For k = n - 2 DownTo 1
{
체크Bit[k] = No;
추세선[k] = 0;
}
추세강화 = Yes;
추세선추가 = No;
}
Else If 고[n] > H && 고Bar[n] > 1 Then 추세선추가 = Yes;
}
}
#------------------------------------------#
# 출발점의 유효성 판단
#------------------------------------------#
Else If 기준고[n] > 0 && 기준고[n] <= H Then //출발점보다 고가가 높아지면
{
For j = n DownTo 1
{
If 기준고[j] > 0 && 기준고[j] <= H Then //출발점이 무너진 추세선만 초기화
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
n = j - 1;
}
}
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 지표식 출력
#==========================================#
If 추세선[1] > 0 Then Plot1(추세선[1]);
생 략
If 추세선[39] > 0 Then Plot39(추세선[39]);
돈깡
2012-06-21 11:07:37
DayOfWeek / WeekHigh / MonthHigh를
5분봉 / 10분봉 / 30분봉 이렇게 바꿔서 사용할수도있을까요??
당일로는 추세선이 하나뿐이안나와서ㅠㅠ
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 질문을 너무 자주하네요..
> 안녕하세요
예스스탁입니다.
올리신 식은 작성자가 직접 만든 함수를 사용하고 있습니다.
위에4개의 오류가 바로 해당 함수가 없다는 내용입니다.
식을 구하신 사이트나 블러그에 가시면
해당 함수에 대한 내용도 같이 있을 것입니다.
이름으로 유추하면 주간고가와 월간고가, 요일을 나타내는 내용으로
해당 내용을 변수로 변경해서 추가했습니다.
기간 단위가 1이면 일간단위이므로
따로 수정하지 않고 기간단위를 1로만 사용하시면 됩니다.
#==========================================#
# 지표명 : 하락추세선 확장형(추세강화 반영)
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:기간단위(1), //1(일단위),2(주단위),3(월단위),4(년단위),그외(전기간)
추세강화판단(5);
Var:j(0),k(0),n(0),Yes(1),No(0),
최종고Bar(0),추세선추가(0),기울기(0),추세강화(0);
Array:기준고[100](0),기준고Bar[100](0),고[100](0),고Bar[100](0),
추세선[100](0),체크Bit[100](0);
var : _WeekHigh(0),_MonthHigh(0);
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{
_WeekHigh = H;
}
if H > _WeekHigh Then
_WeekHigh = H;
if date > date[1]+30 Then
_MonthHigh = H;
if H > _MonthHigh Then
_MonthHigh = H;
#==========================================#
# 기준점들의 index 값 증가
#==========================================#
최종고Bar = 최종고Bar + 1;
For j = 1 To 99
{
기준고Bar[j] = 기준고Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 기간단위별 초기화
#==========================================#
If (기간단위 == 1 && Date[1] < Date) ||
(기간단위 == 2 && Date[1] < Date && DayOfWeek(sdate[1]) >= DayOfWeek(sdate)) || //사용자함수
(기간단위 == 3 && Int(Date/100)[1] < Int(Date/100)) ||
(기간단위 == 4 && Int(Date/10000)[1] < Int(Date/10000)) Then
{
For j = 1 To 99
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
}
n = 0;
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 추세의 출발점 찾기
#==========================================#
If 기준고[n] == 0 &&
((기간단위 == 1 && H[1] == DayHigh) ||
(기간단위 == 2 && H[1] == _WeekHigh) || //사용자함수
(기간단위 > 2 && H[1] == _MonthHigh)) && //사용자함수
H[1] > H Then
{
n = n + 1;
기준고[n] = H[1];
기준고Bar[n] = 1;
고[n] = H;
고Bar[n] = 0;
체크Bit[n] = Yes;
추세선추가 = No;
}
#==========================================#
# 추세선 계산
#==========================================#
For j = 1 To n
{
추세선[j] = ((고[j]-기준고[j])/(기준고Bar[j]-고Bar[j]) * 기준고Bar[j] + 기준고[j]) * 체크Bit[j];
}
#==========================================#
# 추세선 유효성 판단
#==========================================#
If 기준고[n] > 0 && 기준고[n] > H Then //출발점보다 고가가 낮은 상태를 유지
{
#------------------------------------------#
# 고가가 추세선 상향 이탈시 신규 추세선 추가
#------------------------------------------#
If 추세선[n] < H Then //추세이탈 발생
{
If 추세선추가 == Yes Then //추세선 추가 가능
{
If 추세강화 == Yes Then
{
For j = n - 1 DownTo 1
{
If 추세선[n] <= 추세선[j] &&
추세선[j] > 0 &&
추세선[j] < H Then
{
For k = n DownTo j + 1
{
추세선[k] = 0;
기준고[k] = 0;
체크Bit[k] = No;
}
n = j;
추세강화 = No;
j = 1;
}
}
}
n = n + 1;
기준고[n] = 기준고[n-1];
기준고Bar[n] = 기준고Bar[n-1];
추세선추가 = No;
}
고[n] = H;
고Bar[n] = 0;
최종고Bar = 0;
체크Bit[n] = Yes;
추세선[n] = ((고[n]-기준고[n])/(기준고Bar[n]-고Bar[n]) * 기준고Bar[n] + 기준고[n]) * 체크Bit[n];
}
Else If 추세선[n] > 0 Then
{
#------------------------------------------#
# 추세강화시 새로운 출발점의 추세선을 추가
#------------------------------------------#
If 추세강화 == No &&
최종고Bar > 추세강화판단 Then
{
n = n + 1;
기준고[n] = 고[n-1];
기준고Bar[n] = 고Bar[n-1];
#------------------------------------------#
# 출발점부터 현재봉까지 추세선 소급 계산
#------------------------------------------#
고[n] = H[기준고Bar[n]-1];
기울기 = (고[n]-기준고[n]);
고Bar[n] = 기준고Bar[n]-1;
For j = 2 To 기준고Bar[n]
{
추세선[n] = 기울기 * j + 기준고[n];
If 추세선[n] < H[기준고Bar[n]-j] Then
{
고[n] = H[기준고Bar[n]-j];
기울기 = (고[n]-기준고[n])/j;
고Bar[n] = 기준고Bar[n]-j;
최종고Bar = 고Bar[n];
추세선[n] = 기울기 * j + 기준고[n];
}
}
체크Bit[n] = Yes;
For k = n - 2 DownTo 1
{
체크Bit[k] = No;
추세선[k] = 0;
}
추세강화 = Yes;
추세선추가 = No;
}
Else If 고[n] > H && 고Bar[n] > 1 Then 추세선추가 = Yes;
}
}
#------------------------------------------#
# 출발점의 유효성 판단
#------------------------------------------#
Else If 기준고[n] > 0 && 기준고[n] <= H Then //출발점보다 고가가 높아지면
{
For j = n DownTo 1
{
If 기준고[j] > 0 && 기준고[j] <= H Then //출발점이 무너진 추세선만 초기화
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
n = j - 1;
}
}
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 지표식 출력
#==========================================#
If 추세선[1] > 0 Then Plot1(추세선[1]);
If 추세선[39] > 0 Then Plot39(추세선[39]);
위 식에서
즐거운 하루되세요
> 돈깡 님이 쓴 글입니다.
> 제목 : 질문을 너무 자주하네요..
> 수식지왕님의 추세선 수식입니다..
근데 수식이 현물용인거같아서 선물용으로 좀 바꿔볼려고하는데요..
첨부파일처럼 오류가뜨는데 어떻게 바꿔야될지모르겠습니다 ㅠㅠ
밑에 오류 2줄은 간단히 해결했는데 나머지가 문제네요..
DayOfWeek / WeekHigh / MonthHigh를 없애고 당일범위내에서만
추세선을 그릴수있도록할수없을까요??
Ps. 질문을 잘못해서 다시수정했습니다;
#==========================================#
# 지표명 : 하락추세선 확장형(추세강화 반영)
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:기간단위(1), //1(일단위),2(주단위),3(월단위),4(년단위),그외(전기간)
추세강화판단(5);
Var:j(0),k(0),n(0),Yes(1),No(0),
최종고Bar(0),추세선추가(0),기울기(0),추세강화(0);
Array:기준고[100](0),기준고Bar[100](0),고[100](0),고Bar[100](0),
추세선[100](0),체크Bit[100](0);
#==========================================#
# 기준점들의 index 값 증가
#==========================================#
최종고Bar = 최종고Bar + 1;
For j = 1 To 99
{
기준고Bar[j] = 기준고Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 기간단위별 초기화
#==========================================#
If (기간단위 == 1 && Date[1] < Date) ||
(기간단위 == 2 && Date[1] < Date && _DayOfWeek[1] >= _DayOfWeek) || //사용자함수
(기간단위 == 3 && Int(Date/100)[1] < Int(Date/100)) ||
(기간단위 == 4 && Int(Date/10000)[1] < Int(Date/10000)) Then
{
For j = 1 To 99
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
}
n = 0;
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 추세의 출발점 찾기
#==========================================#
If 기준고[n] == 0 &&
((기간단위 == 1 && H[1] == DayHigh) ||
(기간단위 == 2 && H[1] == _WeekHigh(0)) || //사용자함수
(기간단위 > 2 && H[1] == _MonthHigh(0))) && //사용자함수
H[1] > H Then
{
n = n + 1;
기준고[n] = H[1];
기준고Bar[n] = 1;
고[n] = H;
고Bar[n] = 0;
체크Bit[n] = Yes;
추세선추가 = No;
}
#==========================================#
# 추세선 계산
#==========================================#
For j = 1 To n
{
추세선[j] = ((고[j]-기준고[j])/(기준고Bar[j]-고Bar[j]) * 기준고Bar[j] + 기준고[j]) * 체크Bit[j];
}
#==========================================#
# 추세선 유효성 판단
#==========================================#
If 기준고[n] > 0 && 기준고[n] > H Then //출발점보다 고가가 낮은 상태를 유지
{
#------------------------------------------#
# 고가가 추세선 상향 이탈시 신규 추세선 추가
#------------------------------------------#
If 추세선[n] < H Then //추세이탈 발생
{
If 추세선추가 == Yes Then //추세선 추가 가능
{
If 추세강화 == Yes Then
{
For j = n - 1 DownTo 1
{
If 추세선[n] <= 추세선[j] &&
추세선[j] > 0 &&
추세선[j] < H Then
{
For k = n DownTo j + 1
{
추세선[k] = 0;
기준고[k] = 0;
체크Bit[k] = No;
}
n = j;
추세강화 = No;
j = 1;
}
}
}
n = n + 1;
기준고[n] = 기준고[n-1];
기준고Bar[n] = 기준고Bar[n-1];
추세선추가 = No;
}
고[n] = H;
고Bar[n] = 0;
최종고Bar = 0;
체크Bit[n] = Yes;
추세선[n] = ((고[n]-기준고[n])/(기준고Bar[n]-고Bar[n]) * 기준고Bar[n] + 기준고[n]) * 체크Bit[n];
}
Else If 추세선[n] > 0 Then
{
#------------------------------------------#
# 추세강화시 새로운 출발점의 추세선을 추가
#------------------------------------------#
If 추세강화 == No &&
최종고Bar > 추세강화판단 Then
{
n = n + 1;
기준고[n] = 고[n-1];
기준고Bar[n] = 고Bar[n-1];
#------------------------------------------#
# 출발점부터 현재봉까지 추세선 소급 계산
#------------------------------------------#
고[n] = H[기준고Bar[n]-1];
기울기 = (고[n]-기준고[n]);
고Bar[n] = 기준고Bar[n]-1;
For j = 2 To 기준고Bar[n]
{
추세선[n] = 기울기 * j + 기준고[n];
If 추세선[n] < H[기준고Bar[n]-j] Then
{
고[n] = H[기준고Bar[n]-j];
기울기 = (고[n]-기준고[n])/j;
고Bar[n] = 기준고Bar[n]-j;
최종고Bar = 고Bar[n];
추세선[n] = 기울기 * j + 기준고[n];
}
}
체크Bit[n] = Yes;
For k = n - 2 DownTo 1
{
체크Bit[k] = No;
추세선[k] = 0;
}
추세강화 = Yes;
추세선추가 = No;
}
Else If 고[n] > H && 고Bar[n] > 1 Then 추세선추가 = Yes;
}
}
#------------------------------------------#
# 출발점의 유효성 판단
#------------------------------------------#
Else If 기준고[n] > 0 && 기준고[n] <= H Then //출발점보다 고가가 높아지면
{
For j = n DownTo 1
{
If 기준고[j] > 0 && 기준고[j] <= H Then //출발점이 무너진 추세선만 초기화
{
추세선[j] = 0;
기준고[j] = 0;
체크Bit[j] = No;
n = j - 1;
}
}
최종고Bar = 0;
추세강화 = No;
}
#==========================================#
# 지표식 출력
#==========================================#
If 추세선[1] > 0 Then Plot1(추세선[1]);
생 략
If 추세선[39] > 0 Then Plot39(추세선[39]);