커뮤니티
수식부탁드립니다
2019-01-22 22:53:18
179
글번호 125497
$,안녕하세요~
아래수식은 전봉기준으로 텍스트함수가 출력되고 있습니다, 이수식을 현재봉 기준으로
텍스트함수가 출력되게 수정 부탁드립니다.
Input:length(10),기준일(20190115),기준시간(100000),파동선두께(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); // 1:가격, 2:Index, 3:sDate, 4:sTime
var : Tcond(false);
if sdate >= 기준일 and stime >= 기준시간 Then
Tcond = true;
#==========================================#
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,GREEN);
}
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] Then
{
For jjj = 1 To 4 // 1:가격, 2:Index, 3:sDate, 4:sTime
{
역사적고점[jjj] = 고[1,jjj];
}
}
최종변곡점 = "고점";
}
#==========================================#
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,GREEN);
}
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]); // 라인을 생성
TL_SetColor(fr[j,3],BLUE);
TL_SetStyle(fr[j,3],1.0);
TL_SetExtRight(fr[j,3],true);
}
}
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]);
}
}
}
Text_Delete(var1);
var1 = Text_New(sdate,stime,fr[1,2],NumToStr(fr[1,1]*100,1)+"% : "+NumToStr(fr[1,2],2));
Text_Delete(var2);
var2 = Text_New(sdate,stime,fr[2,2],NumToStr(fr[2,1]*100,1)+"% : "+NumToStr(fr[2,2],2));
Text_Delete(var3);
var3 = Text_New(sdate,stime,fr[3,2],NumToStr(fr[3,1]*100,1)+"% : "+NumToStr(fr[3,2],2));
Text_Delete(var4);
var4 = Text_New(sdate,stime,fr[4,2],NumToStr(fr[4,1]*100,1)+"% : "+NumToStr(fr[4,2],2));
Text_Delete(var5);
var5 = Text_New(sdate,stime,fr[5,2],NumToStr(fr[5,1]*100,1)+"% : "+NumToStr(fr[5,2],2));
Text_Delete(var6);
var6 = Text_New(sdate,stime,fr[6,2],NumToStr(fr[6,1]*100,1)+"% : "+NumToStr(fr[6,2],2));
Text_Delete(var7);
var7 = Text_New(sdate,stime,fr[7,2],NumToStr(fr[7,1]*100,1)+"% : "+NumToStr(fr[7,2],2));
Text_SetStyle(var1,5,2);
Text_SetStyle(var2,5,2);
Text_SetStyle(var3,5,2);
Text_SetStyle(var4,5,2);
Text_SetStyle(var5,5,2);
Text_SetStyle(var6,5,2);
Text_SetStyle(var7,5,2);
Text_SetColor(var1,BLUE);
Text_SetColor(var2,BLUE);
Text_SetColor(var3,BLUE);
Text_SetColor(var4,BLUE);
Text_SetColor(var5,BLUE);
Text_SetColor(var6,BLUE);
Text_SetColor(var7,BLUE);
답변 1
예스스탁 예스스탁 답변
2019-01-24 11:08:04
안녕하세요
예스스탁입니다.
텍스트나 추세선은 봉완성시에만 동작합니다.
미완성시에는 동작하지 않아 차트의 마지막봉(미완성봉)에서
값을 출력하지 못합니다.
즐거운 하루되세요
> 골든키 님이 쓴 글입니다.
> 제목 : 수식부탁드립니다
> $,안녕하세요~
아래수식은 전봉기준으로 텍스트함수가 출력되고 있습니다, 이수식을 현재봉 기준으로
텍스트함수가 출력되게 수정 부탁드립니다.
Input:length(10),기준일(20190115),기준시간(100000),파동선두께(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); // 1:가격, 2:Index, 3:sDate, 4:sTime
var : Tcond(false);
if sdate >= 기준일 and stime >= 기준시간 Then
Tcond = true;
#==========================================#
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,GREEN);
}
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] Then
{
For jjj = 1 To 4 // 1:가격, 2:Index, 3:sDate, 4:sTime
{
역사적고점[jjj] = 고[1,jjj];
}
}
최종변곡점 = "고점";
}
#==========================================#
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,GREEN);
}
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]); // 라인을 생성
TL_SetColor(fr[j,3],BLUE);
TL_SetStyle(fr[j,3],1.0);
TL_SetExtRight(fr[j,3],true);
}
}
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]);
}
}
}
Text_Delete(var1);
var1 = Text_New(sdate,stime,fr[1,2],NumToStr(fr[1,1]*100,1)+"% : "+NumToStr(fr[1,2],2));
Text_Delete(var2);
var2 = Text_New(sdate,stime,fr[2,2],NumToStr(fr[2,1]*100,1)+"% : "+NumToStr(fr[2,2],2));
Text_Delete(var3);
var3 = Text_New(sdate,stime,fr[3,2],NumToStr(fr[3,1]*100,1)+"% : "+NumToStr(fr[3,2],2));
Text_Delete(var4);
var4 = Text_New(sdate,stime,fr[4,2],NumToStr(fr[4,1]*100,1)+"% : "+NumToStr(fr[4,2],2));
Text_Delete(var5);
var5 = Text_New(sdate,stime,fr[5,2],NumToStr(fr[5,1]*100,1)+"% : "+NumToStr(fr[5,2],2));
Text_Delete(var6);
var6 = Text_New(sdate,stime,fr[6,2],NumToStr(fr[6,1]*100,1)+"% : "+NumToStr(fr[6,2],2));
Text_Delete(var7);
var7 = Text_New(sdate,stime,fr[7,2],NumToStr(fr[7,1]*100,1)+"% : "+NumToStr(fr[7,2],2));
Text_SetStyle(var1,5,2);
Text_SetStyle(var2,5,2);
Text_SetStyle(var3,5,2);
Text_SetStyle(var4,5,2);
Text_SetStyle(var5,5,2);
Text_SetStyle(var6,5,2);
Text_SetStyle(var7,5,2);
Text_SetColor(var1,BLUE);
Text_SetColor(var2,BLUE);
Text_SetColor(var3,BLUE);
Text_SetColor(var4,BLUE);
Text_SetColor(var5,BLUE);
Text_SetColor(var6,BLUE);
Text_SetColor(var7,BLUE);
다음글
이전글