예스스탁
예스스탁 답변
2026-01-02 11:18:42
안녕하세요
예스스탁입니다.
보조도구의 자동추세선은 자동업데이트는 되지 않습니다.
고/저점은 판단 기준은
예스랭귀지의 swinghigh,swinglow함수와 같습니다.
고/저점 동그라미는 아래 2가지일 경우 속이 빈 동그라미로 그려지게 됩니다.
해당 고저점이 유일한 값이 아닐 경우입니다.
고/저점을 체크하는 기간에 동일값이 없는 고저점이면 속을 채우고
같은 값이 있는 고저점이면 속이 비게 됩니다.
고점과 고점사이에 저점조건에 해당 하는 봉이 없으면
고점과 고점 사이의 최저가가 저점이 되고
해당 저점도 속이 빈 동그라미로 표시됩니다.
반대도 마찬가지 입니다.
이 외에 자동추세선에는 상황에 따라 이전 고저점 표시를 삭제하는 케이스가
있는데 해당 부분까지는 랭귀지로 구현이 어렵습니다.
아래식 참고하시기 바랍니다.
input : 기간(10);
var : T(0),cnt(0),tx(0),htl(0),ltl(0);
var : lefth(0),leftl(0);
var : tHH(0),tHD(0),tHT(0),tHI(0);
var : tLL(0),tLD(0),tLT(0),tLI(0);
Array : HD[20](0),HT[20](0),HH[20](0),HI[20](0);
Array : LD[20](0),LT[20](0),LL[20](0),LI[20](0);
lefth = highest(H,기간)[기간+1];
leftL = lowest(L,기간)[기간+1];
if SwingHigh(1,h,기간,기간,기간*2+1) != -1 Then
{
T = 1;
For cnt = 19 DownTo 1
{
HH[cnt] = HH[cnt-1];
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HI[cnt] = HI[cnt-1];
}
HH[0] = h[기간];
HD[0] = sDate[기간];
HT[0] = sTime[기간];
HI[0] = Index[기간];
if HH[0] != lefth Then
tx = Text_New(HD[0],HT[0],HH[0],"●");
Else
tx = Text_New(HD[0],HT[0],HH[0],"○");
Text_SetColor(tx,Red);
Text_SetStyle(tx,2,2);
Condition1 = False;
For cnt = 1 to 19
{
if Condition1 == False and HH[cnt] > HH[0] Then
{
TL_Delete(htl);
Condition1 = true;
htl = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]);
TL_SetColor(htl,Red);
TL_SetSize(htl,1);
TL_SetExtRight(htl,true);
}
}
if T[1] != 0 and T == T[1] Then
{
For cnt = 19 DownTo 1
{
LL[cnt] = LL[cnt-1];
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LI[cnt] = LI[cnt-1];
}
tLL = 0;
tLD = 0;
tLT = 0;
tLI = 0;
For cnt = index-HI[0] to index-HI[1]
{
if tLL == 0 or (tLL > 0 and L[cnt] < tLL) Then
{
tLL = L[cnt];
tLD = sDate[cnt];
tLT = sTime[cnt];
tLi = Index[cnt];
}
}
LL[0] = tLL;
LD[0] = tLD;
LT[0] = tLT;
LI[0] = tLI;
tx = Text_New(LD[0],LT[0],LL[0],"○");
Text_SetColor(tx,Blue);
Text_SetStyle(tx,2,2);
Condition2 = False;
For cnt = 1 to 19
{
if Condition2 == False and LL[cnt] < LL[0] Then
{
TL_Delete(ltl);
Condition2 = true;
ltl = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]);
TL_SetColor(ltl,Blue);
TL_SetSize(ltl,1);
TL_SetExtRight(ltl,true);
}
}
}
}
if Swinglow(1,L,기간,기간,기간*2+1) != -1 Then
{
T = -1;
For cnt = 19 DownTo 1
{
LL[cnt] = LL[cnt-1];
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LI[cnt] = LI[cnt-1];
}
LL[0] = L[기간];
LD[0] = sDate[기간];
LT[0] = sTime[기간];
LI[0] = Index[기간];
if LL[0] != leftl Then
tx = Text_New(LD[0],LT[0],LL[0],"●");
Else
tx = Text_New(LD[0],LT[0],LL[0],"○");
Text_SetColor(tx,Blue);
Text_SetStyle(tx,2,2);
Condition2 = False;
For cnt = 1 to 19
{
if Condition2 == False and LL[cnt] < LL[0] Then
{
TL_Delete(ltl);
Condition2 = true;
ltl = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]);
TL_SetColor(ltl,Blue);
TL_SetSize(ltl,1);
TL_SetExtRight(ltl,true);
}
}
if T[1] != 0 and T == T[1] Then
{
For cnt = 19 DownTo 1
{
HH[cnt] = HH[cnt-1];
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HI[cnt] = HI[cnt-1];
}
tHH = 0;
tHD = 0;
tHT = 0;
tHI = 0;
For cnt = index-Li[0] to index-Li[1]
{
if tHH == 0 or (tHH > 0 and H[cnt] > tHH) Then
{
tHH = H[cnt];
tHD = sDate[cnt];
tHT = sTime[cnt];
tHi = Index[cnt];
}
}
HH[0] = tHH;
HD[0] = tHD;
HT[0] = tHT;
HI[0] = tHI;
tx = Text_New(HD[0],HT[0],HH[0],"○");
Text_SetColor(tx,Red);
Text_SetStyle(tx,2,2);
Condition1 = False;
For cnt = 1 to 19
{
if Condition1 == False and HH[cnt] > HH[0] Then
{
TL_Delete(htl);
Condition1 = true;
htl = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]);
TL_SetColor(htl,Red);
TL_SetSize(htl,1);
TL_SetExtRight(htl,true);
}
}
}
}
새해 복 많이 받으세요