커뮤니티
문의
2019-04-26 10:57:54
236
글번호 128151
인터넷에서 퍼온 지료식입니다
swingzigzag 를 정의 하지 않고 했는데 (사용자 함수식이라는데 ????)
이것을 지표식 , 시스템식으로 만들려면 어떻게 하나요 ?
( 설명은 이렇게 하네요
Value1 = SwingZigZag(봉개수, 종가사용여부, 고, 저, 신규구분);
Value1에는 -1, 0, 1의 3가지 값이 반환되는데 마지막 전환점이 고점이면 1, 저점이면 -1입니다. 0은 초기값입니다.
SwingZigZag()에 사용되는 인자는 5개인데 그중 봉개수와 종가사용여부가 입력값이고 고, 저, 신규구분이 반환받는 결과 값입니다.
종가차트에서 사용하고 싶으면 종가사용여부를 1로 주면 됩니다.
고와 저 변수는 2차원 배열로 선언되어 있는데 각각의 고점과 저점에 대해 가격, index, 날짜, 시각 4가지 정보를 담고 있습니다.
고점과 저점의 번호는 최근 발생한 것부터 번호를 매기는데 오른쪽의 끝점부터 왼쪽으로 번호가 증가됩니다.
그래서 가장 최근에 발생한 고점의 가격은 고[1,1]이란 배열변수에 값이 들어 있고 그 고점의 Index는 고[1,2]에 들어 있습니다.
Index는 봉의 번호와 같습니다. Index를 알면 고점에서 현재 봉까지의 거리를 알 수 있습니다.
고점에서 현재봉까지의 거리는 Index - 고[1,2]로 표현됩니다.
그리고, 고점1과 고점2의 거리는 고[1,2] - 고[2,2]가 됩니다. 가장 최근에 발생한 고점1의 봉번호가 고점2의 봉번호보다 큽니다.
고점1의 날짜는 고[1,3]에 시각은 고[1,4]에 들어갑니다.
사실 Index만 알아도 고점1의 날짜와 시각을 알 수 있으며 다음과 같은 관계가 성립됩니다.
고[1,3] == sDate[Index - 고[1,2]]
고[1,4] == sTime[Index - 고[1,2]]
지표식이나 시스템식에서 sDate[Index - 고[1,2]]이라고 쓰는 것보다 고[1,3]이라고 쓰는 것이 더 편하죠.
마지막으로 신규구분은 추세선을 새로 추가할 것인지 기존 추세선을 연장할 것인지를 알려줍니다.
신규는 1, 연장은 2를 반환합니다.
하락하던 가격이 하락을 멈추고 상승하면 저점1에서 새로운 고점1까지 잇는 추세선을 새로 그려 줍니다. (신규)
가격이 계속 상승하면 고점1의 값만 바뀌기 때문에 추세선의 시작점은 변동이 없습니다. (연장)
Input:봉개수(5),종가사용여부(0);
Var:TL1(0),신규구분(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = SwingZigZag(봉개수, 종가사용여부, 고, 저, 신규구분);
If Value1 == 1 Then { // 고점
If 신규구분 == 1 Then // 신규
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
Else If 신규구분 == 2 Then // 연장
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
} Else If Value1 == -1 Then { // 저점
If 신규구분 == 1 Then // 신규
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
Else If 신규구분 == 2 Then // 연장
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
TL_SetSize(TL1,2);
답변 1
예스스탁 예스스탁 답변
2019-04-29 09:31:43
안녕하세요
예스스탁입니다.
올리신 내용으로 저희가 함수내용을 알수 없습니다.
해당 수식의 찾으신 사이트에서 함수구해보셔야 합니다.
즐거운 하루되세요
> 구다이전설 님이 쓴 글입니다.
> 제목 : 문의
> 인터넷에서 퍼온 지료식입니다
swingzigzag 를 정의 하지 않고 했는데 (사용자 함수식이라는데 ????)
이것을 지표식 , 시스템식으로 만들려면 어떻게 하나요 ?
( 설명은 이렇게 하네요
Value1 = SwingZigZag(봉개수, 종가사용여부, 고, 저, 신규구분);
Value1에는 -1, 0, 1의 3가지 값이 반환되는데 마지막 전환점이 고점이면 1, 저점이면 -1입니다. 0은 초기값입니다.
SwingZigZag()에 사용되는 인자는 5개인데 그중 봉개수와 종가사용여부가 입력값이고 고, 저, 신규구분이 반환받는 결과 값입니다.
종가차트에서 사용하고 싶으면 종가사용여부를 1로 주면 됩니다.
고와 저 변수는 2차원 배열로 선언되어 있는데 각각의 고점과 저점에 대해 가격, index, 날짜, 시각 4가지 정보를 담고 있습니다.
고점과 저점의 번호는 최근 발생한 것부터 번호를 매기는데 오른쪽의 끝점부터 왼쪽으로 번호가 증가됩니다.
그래서 가장 최근에 발생한 고점의 가격은 고[1,1]이란 배열변수에 값이 들어 있고 그 고점의 Index는 고[1,2]에 들어 있습니다.
Index는 봉의 번호와 같습니다. Index를 알면 고점에서 현재 봉까지의 거리를 알 수 있습니다.
고점에서 현재봉까지의 거리는 Index - 고[1,2]로 표현됩니다.
그리고, 고점1과 고점2의 거리는 고[1,2] - 고[2,2]가 됩니다. 가장 최근에 발생한 고점1의 봉번호가 고점2의 봉번호보다 큽니다.
고점1의 날짜는 고[1,3]에 시각은 고[1,4]에 들어갑니다.
사실 Index만 알아도 고점1의 날짜와 시각을 알 수 있으며 다음과 같은 관계가 성립됩니다.
고[1,3] == sDate[Index - 고[1,2]]
고[1,4] == sTime[Index - 고[1,2]]
지표식이나 시스템식에서 sDate[Index - 고[1,2]]이라고 쓰는 것보다 고[1,3]이라고 쓰는 것이 더 편하죠.
마지막으로 신규구분은 추세선을 새로 추가할 것인지 기존 추세선을 연장할 것인지를 알려줍니다.
신규는 1, 연장은 2를 반환합니다.
하락하던 가격이 하락을 멈추고 상승하면 저점1에서 새로운 고점1까지 잇는 추세선을 새로 그려 줍니다. (신규)
가격이 계속 상승하면 고점1의 값만 바뀌기 때문에 추세선의 시작점은 변동이 없습니다. (연장)
Input:봉개수(5),종가사용여부(0);
Var:TL1(0),신규구분(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = SwingZigZag(봉개수, 종가사용여부, 고, 저, 신규구분);
If Value1 == 1 Then { // 고점
If 신규구분 == 1 Then // 신규
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
Else If 신규구분 == 2 Then // 연장
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
} Else If Value1 == -1 Then { // 저점
If 신규구분 == 1 Then // 신규
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
Else If 신규구분 == 2 Then // 연장
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
TL_SetSize(TL1,2);
다음글
이전글