예스스탁
예스스탁 답변
2020-12-30 12:50:12
안녕하세요
예스스탁입니다.
1
기존식은 차트 전체데이타를 이용해 파동선을 그리고
당일 발생한 고점과 저점을 기준으로 2%이상 하락을 가지는 하락구간만 대상으로 합니다.
추세선 자체가 당일 데이타로만 그려지는 내용은 아닙니다.
2
length는 고점과 저점판단의 기준이로
지정한 봉수의 최고가와 최저가를 갱신이 기준이됩니다.
종가사용여부는 고저점판단을 종가로만 할것인지 고가와 저가를 사용할것인지 지정하는 부분입니다
0이면 고가와 저가. 1이면 종가를 사용합니다.
3
고저점을 %로 지정하는 식 작성해 드립니다.'
해당 내용 세부적으로 맞춰드리기에는 시간이 많이 소모가 되어 작성해 드리기는 어렵습니다.
아래식 이용하셔서 수정보완해 식 완성하시기 바랍니다.
Input:전환율(0.10);
Var:j(0), upTr(100), dnTr(-100), upRate(0), dnRate(0), trnd(0),
date11(0), date12(0), time11(0), time12(0), TL1(0), TL11(0),
date21(0), date22(0), time21(0), time22(0), TL2(0),
date31(0), date32(0), time31(0), time32(0), TL3(0),
고점(0),저점(0),폭(0);
Array : hiVal[2](0), loVal[2](0), hiBar[2](0), loBar[2](0);
upRate = 1 + (전환율/100);
dnRate = 1 - (전환율/100);
loBar[1] = loBar[1] + 1;
hiBar[1] = hiBar[1] + 1;
//======================================================
if Index == 0 or DayIndex == 0 then
{
if trnd == upTr then
{
date11 = date[loBar[1]]; //추세선 시작일
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1];
} //추세선 시작가격
else
{
date11 = date[hiBar[1]]; //추세선 시작일
time11 = stime[hiBar[1]]; //추세선 시작시간
Value11 = hiVal[1]; //추세선 시작가격
}
date12 = date[1]; //추세선 종료일
time12 = stime[1]; //추세선 종료시간
Value12 = C[1]; //추세선 종료가격
// if TL1 > TL1[1] then {
TL1 = TL_New(date11, time11, Value11, date12, time12, Value12); //전일 마지막 zizg 선
hiVal[1] = O;
hiBar[1] = 0;
loVal[1] = O;
loBar[1] = 0;
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
loVal[0] = L; //L; //C;
loBar[0] = 0;
trnd = 0;
if hiVal[1] * dnRate > L then
{
trnd = dnTr;
}
else if loVal[1] * upRate < H then
{
trnd = upTr;
}
}
else
{
if hiVal[0] < H then
{
hiVal[0] = h; //C;
hiBar[0] = 0;
}
else
{
hiBar[0] = hiBar[0] + 1;
}
if loVal[0] > l then
{
loVal[0] = L; //C;
loBar[0] = 0;
}
else
{
loBar[0] = loBar[0] + 1;
}
if trnd != dnTr && hiVal[0] * dnRate > C then
{
trnd = dnTr;
}
else if trnd != upTr && loVal[0] * upRate < C then
{
trnd = upTr;
}
//===================================
if trnd[1] != dnTr and trnd == dnTr then //상승추세였다가 하락추세로 바뀌었다면
{
hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입
hiBar[1] = hiBar[0];
hiVal[0] = H; //h; //C; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가
hiBar[0] = 0;
loVal[0] = L; //L; //C;
loBar[0] = 0;
//전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다.
date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜
time12 = stime[hiBar[1]]; //추세선 종료시간
Value12 = hiVal[1]; //추세선 종료가격
TL2 = TL_New(date11, time11, Value11, date12, time12, Value12); // (상승 zizg)
TL_SetColor(tL2,RED);
}
//-------------------------------------------------------------------------------------
if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데
hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면
hiVal[0] * dnRate > H then
{
hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다.
hiBar[1] = hiBar[0];
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
loVal[0] = L; //L; //C;
loBar[0] = 0;
//전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다.
date12 = date[hiBar[1]]; //추세선 종료일
time12 = stime[hiBar[1]];
Value12 = hiVal[1]; //0
TL_SetEnd(TL1, date12,time12,Value12);
//TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수.
//TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다.
}
if trnd[1] != upTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L; //L; //C;
loBar[0] = 0;
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
date11 = date[loBar[1]];
time11 = stime[loBar[1]];
Value11 = loVal[1];
date12 = date[hiBar[1]];
time12 = stime[hiBar[1]];
Value12 = hiVal[1];
TL2 = TL_New(date11, time11, Value11, date12, time12, Value12); //(하락zizg)
TL_SetColor(tL2,BLUE);
}
//---------------------------------------------------------------------------------
if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데
loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면
loVal[0] * upRate < H then {
loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다.
loBar[1] = loBar[0];
loVal[0] = L; //L; //C;
loBar[0] = 0;
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL_SetEnd(TL1, date12, time12, Value12);
}
//TL_SetColor(TL1,blue); //
//=================당일 마지막 zizg 선 ================
}
if trnd == upTr then {
date21 = date[loBar[1]]; //추세선 시작일
time21 = stime[loBar[1]]; //추세선 시작시간
Value21 = loVal[1]; } //추세선 시작가격
else {
date21 = date[hiBar[1]]; //추세선 시작일
time21 = stime[hiBar[1]]; //추세선 시작시간
Value21 = hiVal[1]; //추세선 시작가격
}
date22 = date[0]; //추세선 종료일
time22 = stime[0]; //추세선 종료시간
Value22 = C[0]; //추세선 종료가격
TL_Delete(TL1);
TL1 = TL_New(date21, time21, Value21, date22, time22, Value22); //당일 마지막 zizg 선
if sdate == sDate[1] Then
{
if trnd != trnd[1] and trnd == uptr Then
{
고점 = Hival[1];
저점 = Loval[1];
폭 = abs(고점-저점);
}
}
Plot1(고점);
Plot2(저점);
Plot3(폭);
새해 좋은일만 가득하시기 바랍니다.
> 골드드래곤 님이 쓴 글입니다.
> 제목 : 아래 70449 재질문 답변 부탁드립니다 (내용 무)
> .
골드드래곤
2021-01-11 14:45:02
안녕하세요.
다시 만들어 주신 수식을 적용했더니
위 그림1 으로 출력이 되네요.
< 답변에서 >
고저점을 %로 지정하는 식 작성해 드립니다.'
해당 내용 세부적으로 맞춰드리기에는 시간이 많이 소모가 되어 작성해 드리기는 어렵습니다.
아래식 이용하셔서 수정보완해 식 완성하시기 바랍니다.
제가 수정보완할 능력이 안되어서 정말 난감합니다.
고민 끝에
위 두번째 그림2 수식은 어렵지 않을 걸로 생각이 됩니다.
수식 부탁드립니다.
1. 분봉차트에서
당일 장시작 후의 고점1, 저점1, 폭 지표
2. 일봉차트에서
200봉에서의 고점1, 저점1, 폭 지표
수고하세요.
꾸벅 ~
========================================
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 아래 70449 재질문 답변 부탁드립니다 (내용 무)
> 안녕하세요
예스스탁입니다.
1
기존식은 차트 전체데이타를 이용해 파동선을 그리고
당일 발생한 고점과 저점을 기준으로 2%이상 하락을 가지는 하락구간만 대상으로 합니다.
추세선 자체가 당일 데이타로만 그려지는 내용은 아닙니다.
2
length는 고점과 저점판단의 기준이로
지정한 봉수의 최고가와 최저가를 갱신이 기준이됩니다.
종가사용여부는 고저점판단을 종가로만 할것인지 고가와 저가를 사용할것인지 지정하는 부분입니다
0이면 고가와 저가. 1이면 종가를 사용합니다.
3
고저점을 %로 지정하는 식 작성해 드립니다.'
해당 내용 세부적으로 맞춰드리기에는 시간이 많이 소모가 되어 작성해 드리기는 어렵습니다.
아래식 이용하셔서 수정보완해 식 완성하시기 바랍니다.
Input:전환율(0.10);
Var:j(0), upTr(100), dnTr(-100), upRate(0), dnRate(0), trnd(0),
date11(0), date12(0), time11(0), time12(0), TL1(0), TL11(0),
date21(0), date22(0), time21(0), time22(0), TL2(0),
date31(0), date32(0), time31(0), time32(0), TL3(0),
고점(0),저점(0),폭(0);
Array : hiVal[2](0), loVal[2](0), hiBar[2](0), loBar[2](0);
upRate = 1 + (전환율/100);
dnRate = 1 - (전환율/100);
loBar[1] = loBar[1] + 1;
hiBar[1] = hiBar[1] + 1;
//======================================================
if Index == 0 or DayIndex == 0 then
{
if trnd == upTr then
{
date11 = date[loBar[1]]; //추세선 시작일
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1];
} //추세선 시작가격
else
{
date11 = date[hiBar[1]]; //추세선 시작일
time11 = stime[hiBar[1]]; //추세선 시작시간
Value11 = hiVal[1]; //추세선 시작가격
}
date12 = date[1]; //추세선 종료일
time12 = stime[1]; //추세선 종료시간
Value12 = C[1]; //추세선 종료가격
// if TL1 > TL1[1] then {
TL1 = TL_New(date11, time11, Value11, date12, time12, Value12); //전일 마지막 zizg 선
hiVal[1] = O;
hiBar[1] = 0;
loVal[1] = O;
loBar[1] = 0;
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
loVal[0] = L; //L; //C;
loBar[0] = 0;
trnd = 0;
if hiVal[1] * dnRate > L then
{
trnd = dnTr;
}
else if loVal[1] * upRate < H then
{
trnd = upTr;
}
}
else
{
if hiVal[0] < H then
{
hiVal[0] = h; //C;
hiBar[0] = 0;
}
else
{
hiBar[0] = hiBar[0] + 1;
}
if loVal[0] > l then
{
loVal[0] = L; //C;
loBar[0] = 0;
}
else
{
loBar[0] = loBar[0] + 1;
}
if trnd != dnTr && hiVal[0] * dnRate > C then
{
trnd = dnTr;
}
else if trnd != upTr && loVal[0] * upRate < C then
{
trnd = upTr;
}
//===================================
if trnd[1] != dnTr and trnd == dnTr then //상승추세였다가 하락추세로 바뀌었다면
{
hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입
hiBar[1] = hiBar[0];
hiVal[0] = H; //h; //C; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가
hiBar[0] = 0;
loVal[0] = L; //L; //C;
loBar[0] = 0;
//전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다.
date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜
time12 = stime[hiBar[1]]; //추세선 종료시간
Value12 = hiVal[1]; //추세선 종료가격
TL2 = TL_New(date11, time11, Value11, date12, time12, Value12); // (상승 zizg)
TL_SetColor(tL2,RED);
}
//-------------------------------------------------------------------------------------
if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데
hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면
hiVal[0] * dnRate > H then
{
hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다.
hiBar[1] = hiBar[0];
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
loVal[0] = L; //L; //C;
loBar[0] = 0;
//전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다.
date12 = date[hiBar[1]]; //추세선 종료일
time12 = stime[hiBar[1]];
Value12 = hiVal[1]; //0
TL_SetEnd(TL1, date12,time12,Value12);
//TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수.
//TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다.
}
if trnd[1] != upTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L; //L; //C;
loBar[0] = 0;
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
date11 = date[loBar[1]];
time11 = stime[loBar[1]];
Value11 = loVal[1];
date12 = date[hiBar[1]];
time12 = stime[hiBar[1]];
Value12 = hiVal[1];
TL2 = TL_New(date11, time11, Value11, date12, time12, Value12); //(하락zizg)
TL_SetColor(tL2,BLUE);
}
//---------------------------------------------------------------------------------
if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데
loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면
loVal[0] * upRate < H then {
loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다.
loBar[1] = loBar[0];
loVal[0] = L; //L; //C;
loBar[0] = 0;
hiVal[0] = H; //h; //C;
hiBar[0] = 0;
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL_SetEnd(TL1, date12, time12, Value12);
}
//TL_SetColor(TL1,blue); //
//=================당일 마지막 zizg 선 ================
}
if trnd == upTr then {
date21 = date[loBar[1]]; //추세선 시작일
time21 = stime[loBar[1]]; //추세선 시작시간
Value21 = loVal[1]; } //추세선 시작가격
else {
date21 = date[hiBar[1]]; //추세선 시작일
time21 = stime[hiBar[1]]; //추세선 시작시간
Value21 = hiVal[1]; //추세선 시작가격
}
date22 = date[0]; //추세선 종료일
time22 = stime[0]; //추세선 종료시간
Value22 = C[0]; //추세선 종료가격
TL_Delete(TL1);
TL1 = TL_New(date21, time21, Value21, date22, time22, Value22); //당일 마지막 zizg 선
if sdate == sDate[1] Then
{
if trnd != trnd[1] and trnd == uptr Then
{
고점 = Hival[1];
저점 = Loval[1];
폭 = abs(고점-저점);
}
}
Plot1(고점);
Plot2(저점);
Plot3(폭);
새해 좋은일만 가득하시기 바랍니다.
> 골드드래곤 님이 쓴 글입니다.
> 제목 : 아래 70449 재질문 답변 부탁드립니다 (내용 무)
> .