예스스탁
예스스탁 답변
2023-02-07 16:16:55
안녕하세요
예스스탁입니다.
input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),Text1(0),process(0),T(0);
Array:HH[10,2](0),LL[10,2](0);
process=0;
If Highest(H,length)==H and lastHiVal <> H and Lowest(L,length)==L and lastLoVal<>L Then
{
If LL[1,1]>L Then process=-1;
If HH[1,1]<H Then process=1;
}
Else If Highest(H,length)==H and lastHiVal <> H Then process=1;
Else If Lowest(L,length)==L and lastLoVal <> L Then process=-1;
If process==1 Then
{
T=1;
lastHiVal=H;
If HH[1,2] < LL[1,2] Then
{
For j=10 DownTo 2
{
HH[j,1]=HH[j-1,1];
HH[j,2]=HH[j-1,2];
}
}
If HH[1,2]<LL[1,2] or HH[1,1]<H Then
{
HH[1,1]=H;
HH[1,2]=Index;
sBar=Index-LL[1,2];
eBar=0;
}
}
If process==-1 Then
{
T=-1;
lastLoVal=L;
If LL[1,2]<HH[1,2] Then
{
For j=10 DownTo 2
{
LL[j,1]=LL[j-1,1];
LL[j,2]=LL[j-1,2];
}
}
If LL[1,2]<HH[1,2] or LL[1,1]> L Then
{
LL[1,1]=L;
LL[1,2]=Index;
sBar=Index-HH[1,2];
eBar=0;
}
}
if (T == -1 and CrossUp(C,HH[1,1])) or
(T == 1 and CrossUp(C,HH[2,1])) Then
Find(1);
즐거운 하루되세요
> 구호리 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 차트내 분홍색 사각형 발생시 사각형고점을 돌파하는 수식 요청합니다.
input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),Text1(0),process(0),T(0);
Array:HH[10,2](0),LL[10,2](0);
process=0;
If Highest(H,length)==H and lastHiVal <> H and Lowest(L,length)==L and lastLoVal<>L Then
{
If LL[1,1]>L Then process=-1;
If HH[1,1]<H Then process=1;
}
Else If Highest(H,length)==H and lastHiVal <> H Then process=1;
Else If Lowest(L,length)==L and lastLoVal <> L Then process=-1;
If process==1 Then
{
T=1;
lastHiVal=H;
If HH[1,2]<LL[1,2] Then
{
For j=10 DownTo 2
{
HH[j,1]=HH[j-1,1];
HH[j,2]=HH[j-1,2];
}
}
If HH[1,2]<LL[1,2] or HH[1,1]<H Then
{
HH[1,1]=H;
HH[1,2]=Index;
sBar=Index-LL[1,2];
eBar=0;
If TL_GetBeginDate(TL1)==sDate[sBar]and TL_GetBeginTime(TL1)==sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if LL[1,1]>0 Then
{
TL1=TL_New(sDate[sBar],sTime[sBar],LL[1,1],sDate[eBar],sTime[eBar],HH[1,1]);
Text1=Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1,2,1);
}
Else
{
Text_Delete(text1);
Text1=Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1,2,1);
}
Text_SetStyle(Text1,2,1);
}
}
If process==-1 Then
{
T=-1;
lastLoVal=L;
If LL[1,2]<HH[1,2] Then
{
For j=10 DownTo 2
{
LL[j,1]=LL[j-1,1];
LL[j,2]=LL[j-1,2];
}
}
If LL[1,2]<HH[1,2] or LL[1,1]> L Then
{
LL[1,1]=L;
LL[1,2]=Index;
sBar=Index-HH[1,2];
eBar=0;
If TL_GetBeginDate(TL1)==sDate[sBar] and TL_GetBeginTime(TL1)==sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if HH[1,1]> 0 Then
{
TL1=TL_New(sDate[sBar],sTime[sBar],HH[1,1],sDate[eBar],sTime[eBar],LL[1,1]);
Text1=Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1,2,0);
}
Else
{
Text_Delete(text1);
Text1=Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1,2,0);
}
}
}