예스스탁
예스스탁 답변
2022-10-17 15:38:11
안녕하세요
예스스탁입니다.
현재수식은 기준일로 날짜를 지정하게 되어 있습니다.
기준일에 현재 컴퓨터날짜를 저장되게 해서 당일로 처리되게 수정해 드립니다.
Input:length(10),파동선두께(2);
Var:j(0),jj(0),jjj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),
TL1(0),기준일(0);
Array:고[5,4](0),저[5,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime
역사적고점[5](0),역사적저점[5](0);
기준일 = CurrentDate;
#==========================================#
If Index == 0 Then
{
고[1,1] = H;
저[1,1] = L;
}
Condition1 = Highest(H,length) == H and 최종고가 <> H;
Condition2 = Lowest (L,length) == L and 최종저가 <> L;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = H; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,RED);
}
Else If 고[1,1] < H Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
If 기준일 <= Date and (역사적고점[1] < 고[1,1] or 역사적고점[1] == 0) Then
{
For jjj = 1 To 4
{
역사적고점[jjj] = 고[1,jjj];
역사적저점[jjj] = 0;
}
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = L;
If 최종변곡점 == "고점" then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUE);
}
Else If 저[1,1] > L then
{
저[1,1] = L;
저[1,3] = sDate;
저[1,4] = sTime;
저[1,2] = Index;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
If 기준일 <= Date and ( 역사적저점[1] > 저[1,1] or 역사적저점[1] == 0 ) Then
{
For jjj = 1 To 4
{
역사적저점[jjj] = 저[1,jjj];
//역사적고점[jjj] = 0; // 역사적 고점 초기화
}
}
최종변곡점 = "저점";
}
#==========================================#
Var:기울기(0);
Array:fr[7,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호
If Index == 0 Then
{
fr[1,1] = 0;
fr[2,1] = 0.236;
fr[3,1] = 0.382;
fr[4,1] = 0.50;
fr[5,1] = 0.618;
fr[6,1] = 0.764;
fr[7,1] = 1;
}
If 역사적고점[1] > 0 and 역사적저점[1] > 0 Then
{
If 역사적고점[1][1] != 역사적고점[1] or 역사적저점[1][1] != 역사적저점[1] Then
{
기울기 = (역사적고점[1] - 역사적저점[1]) / (역사적고점[2] - 역사적저점[2]);
for j = 1 to 7
{
If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 기존의 라인은 지우고
fr[j,2] = 기울기 * fr[j,1] * (index - 역사적고점[2]) + 역사적고점[1]; // 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(역사적고점[3],역사적고점[4],역사적고점[1],sDate,sTime,fr[j,2]); // 라인을 생성
if j == 4 Then
TL_SetSize(Fr[4,3],2);
}
}
Else
{
for j = 1 to 7
{
fr[j,2] = 기울기 * fr[j,1] * (index - 역사적고점[2]) + 역사적고점[1];
TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
}
}
}
즐거운 하루되세요
> 레전드 님이 쓴 글입니다.
> 제목 : 문의
> 당일을 기준으로 나타나게 부탁드리며 0.5 라인은 색깔이 다르게 할수 있도록 부탁드립니다
Input:length(10),기준일(20110101),파동선두께(2);
Var:j(0),jj(0),jjj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),
TL1(0);
Array:고[5,4](0),저[5,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime
역사적고점[5](0),역사적저점[5](0);
#==========================================#
If Index == 0 Then
{
고[1,1] = H;
저[1,1] = L;
}
Condition1 = Highest(H,length) == H and 최종고가 <> H;
Condition2 = Lowest (L,length) == L and 최종저가 <> L;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = H; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,RED);
}
Else If 고[1,1] < H Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
If 기준일 <= Date and (역사적고점[1] < 고[1,1] or 역사적고점[1] == 0) Then
{
For jjj = 1 To 4
{
역사적고점[jjj] = 고[1,jjj];
역사적저점[jjj] = 0;
}
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = L;
If 최종변곡점 == "고점" then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUE);
}
Else If 저[1,1] > L then
{
저[1,1] = L;
저[1,3] = sDate;
저[1,4] = sTime;
저[1,2] = Index;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
If 기준일 <= Date and ( 역사적저점[1] > 저[1,1] or 역사적저점[1] == 0 ) Then
{
For jjj = 1 To 4
{
역사적저점[jjj] = 저[1,jjj];
//역사적고점[jjj] = 0; // 역사적 고점 초기화
}
}
최종변곡점 = "저점";
}
#==========================================#
Var:기울기(0);
Array:fr[7,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호
If Index == 0 Then
{
fr[1,1] = 0;
fr[2,1] = 0.236;
fr[3,1] = 0.382;
fr[4,1] = 0.50;
fr[5,1] = 0.618;
fr[6,1] = 0.764;
fr[7,1] = 1;
}
If 역사적고점[1] > 0 and 역사적저점[1] > 0 Then
{
If 역사적고점[1][1] != 역사적고점[1] or 역사적저점[1][1] != 역사적저점[1] Then
{
기울기 = (역사적고점[1] - 역사적저점[1]) / (역사적고점[2] - 역사적저점[2]);
for j = 1 to 7
{
If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 기존의 라인은 지우고
fr[j,2] = 기울기 * fr[j,1] * (index - 역사적고점[2]) + 역사적고점[1]; // 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(역사적고점[3],역사적고점[4],역사적고점[1],sDate,sTime,fr[j,2]); // 라인을 생성
}
}
Else
{
for j = 1 to 7
{
fr[j,2] = 기울기 * fr[j,1] * (index - 역사적고점[2]) + 역사적고점[1];
TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
}
}
}