예스스탁
예스스탁 답변
2022-02-24 13:27:39
안녕하세요
예스스탁입니다.
2개식 모두 수정해 드립니다.
1 시종
input : N(30);
var : cnt(0),HH(0),LL(0),HTL1(0),LTL1(0),H1(0),L1(0);
Array : HTL[100](0),LTL[100](0),dd[100](0);
if Sdate != sDate[1] Then
{
value1 = sDate;
Value2 = value1[1];
Value3 = sTime;
Value4 = Value3[1];
For cnt = 1 to N
{
TL_Delete(HTL[cnt]);
TL_Delete(LTL[cnt]);
var1 = max(DayOpen(cnt),DayClose(cnt));
var2 = min(DayOpen(cnt),DayClose(cnt));
if cnt == 1 Then
{
HTL[cnt] = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
TL_SetColor(HTL[cnt],RED);
TL_SetExtRight(HTL[cnt],true);
TL_SetDrawMode(HTL[cnt],0);
HH = var1;
LTL[cnt] = TL_New(sDate,sTime,var2,NextBarSdate,NextBarStime,var2);
TL_SetColor(LTL[cnt],BLUE);
TL_SetExtRight(LTL[cnt],true);
TL_SetDrawMode(LTL[cnt],0);
LL = var2;
}
Else
{
if abs(var1-DayOpen(0)) < 10 and (var1 > HH or var1 < LL) Then
{
HTL[cnt] = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
TL_SetColor(HTL[cnt],RED);
TL_SetExtRight(HTL[cnt],true);
TL_SetDrawMode(HTL[cnt],0);
}
if abs(Var2-DayOpen(0)) < 10 and (Var2 > HH or Var2 < LL) Then
{
LTL[cnt] = TL_New(sDate,sTime,Var2,NextBarSdate,NextBarStime,Var2);
TL_SetColor(LTL[cnt],BLUE);
TL_SetExtRight(LTL[cnt],true);
TL_SetDrawMode(LTL[cnt],0);
}
if var1 > HH and abs(var1-DayOpen(0)) < 10 Then
HH = var1;
if Var2 < LL and abs(Var2-DayOpen(0)) < 10 Then
LL = var2;
}
var3 = max(DayOpen(cnt+1),DayClose(cnt+1));
var4 = min(DayOpen(cnt+1),DayClose(cnt+1));
if cnt == 1 Then
{
HTL1 = TL_New(Value2,value4,var3,sDate[1],sTime[1],var3);
TL_SetColor(HTL1,RED);
TL_SetDrawMode(HTL1,0);
H1 = var3;
LTL1 = TL_New(Value2,Value3,var4,sDate[1],sTime[1],var4);
TL_SetColor(LTL1,BLUE);
TL_SetDrawMode(LTL1,0);
L1 = var4;
}
Else
{
if abs(var3-DayOpen(1)) < 10 and (var3 > H1 or var3 < L1) Then
{
HTL1 = TL_New(Value2,value4,var3,sDate[1],sTime[1],var3);
TL_SetColor(HTL1,RED);
TL_SetDrawMode(HTL1,0);
}
if abs(Var4-DayOpen(1)) < 10 and (Var4 > H1 or Var4 < L1) Then
{
LTL1 = TL_New(Value2,Value3,var4,sDate[1],sTime[1],var4);
TL_SetColor(LTL1,BLUE);
TL_SetDrawMode(LTL1,0);
}
if var3 > H1 and abs(var3-DayOpen(1)) < 10 Then
H1 = Var3;
if Var4 < L1 and abs(Var2-DayOpen(1)) < 10 Then
L1 = Var4;
}
}
}
2 고저
input : N(30);
var : cnt(0),HH(0),LL(0),HTL1(0),LTL1(0),H1(0),L1(0);
Array : HTL[100](0),LTL[100](0),dd[100](0);
if Sdate != sDate[1] Then
{
value1 = sDate;
Value2 = value1[1];
Value3 = sTime;
Value4 = Value3[1];
For cnt = 1 to N
{
TL_Delete(HTL[cnt]);
TL_Delete(LTL[cnt]);
var1 = max(DayHigh(cnt),DayLow(cnt));
var2 = min(DayHigh(cnt),DayLow(cnt));
if cnt == 1 Then
{
HTL[cnt] = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
TL_SetColor(HTL[cnt],RED);
TL_SetExtRight(HTL[cnt],true);
TL_SetDrawMode(HTL[cnt],0);
HH = var1;
LTL[cnt] = TL_New(sDate,sTime,var2,NextBarSdate,NextBarStime,var2);
TL_SetColor(LTL[cnt],BLUE);
TL_SetExtRight(LTL[cnt],true);
TL_SetDrawMode(LTL[cnt],0);
LL = var2;
}
Else
{
if abs(var1-DayOpen(0)) < 10 and (var1 > HH or var1 < LL) Then
{
HTL[cnt] = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
TL_SetColor(HTL[cnt],RED);
TL_SetExtRight(HTL[cnt],true);
TL_SetDrawMode(HTL[cnt],0);
}
if abs(Var2-DayOpen(0)) < 10 and (Var2 > HH or Var2 < LL) Then
{
LTL[cnt] = TL_New(sDate,sTime,Var2,NextBarSdate,NextBarStime,Var2);
TL_SetColor(LTL[cnt],BLUE);
TL_SetExtRight(LTL[cnt],true);
TL_SetDrawMode(LTL[cnt],0);
}
if var1 > HH and abs(var1-DayOpen(0)) < 10 Then
HH = var1;
if Var2 < LL and abs(Var2-DayOpen(0)) < 10 Then
LL = var2;
}
var3 = max(DayHigh(cnt+1),DayLow(cnt+1));
var4 = min(DayHigh(cnt+1),DayLow(cnt+1));
if cnt == 1 Then
{
HTL1 = TL_New(Value2,value4,var3,sDate[1],sTime[1],var3);
TL_SetColor(HTL1,RED);
TL_SetDrawMode(HTL1,0);
H1 = var3;
LTL1 = TL_New(Value2,Value3,var4,sDate[1],sTime[1],var4);
TL_SetColor(LTL1,BLUE);
TL_SetDrawMode(LTL1,0);
L1 = var4;
}
Else
{
if abs(var3-DayOpen(1)) < 10 and (var3 > H1 or var3 < L1) Then
{
HTL1 = TL_New(Value2,value4,var3,sDate[1],sTime[1],var3);
TL_SetColor(HTL1,RED);
TL_SetDrawMode(HTL1,0);
}
if abs(Var4-DayOpen(1)) < 10 and (Var4 > H1 or Var4 < L1) Then
{
LTL1 = TL_New(Value2,Value3,var4,sDate[1],sTime[1],var4);
TL_SetColor(LTL1,BLUE);
TL_SetDrawMode(LTL1,0);
}
if var3 > H1 and abs(var3-DayOpen(1)) < 10 Then
H1 = Var3;
if Var4 < L1 and abs(Var2-DayOpen(1)) < 10 Then
L1 = Var4;
}
}
}
즐거운 하루되세요
> 원칙투자자 님이 쓴 글입니다.
> 제목 : 지표수식(76111번) 재수정 질문드립니다.
> 담당자님, 안녕하세요.
담당자님께서 이전 답변에서 말씀하신대로
앞으로는 시간이 많이 소요되는 질문(요청)은 삼가하겠습니다.
기존 지표에 대한 결과가 다르게 산출되어
부득이 죄송한 마음으로 또 부탁드립니다.
(Q&A 76111번에서 수정해주신 지표에 대한 재수정 질의입니다. / 76111번은 76016번에 대한 수정)
담당자님께서 76111번의 답변에서 수정해주신 <1 시종>지표의 시스템 산출 결과가
의도했던 것과는 또 다른 결과가 산출되어 재수정 문의드립니다.
<1 시종>지표는 (D-1)의 일봉 (시가~종가) 상하단 범위 부터 시작해서 과거로 소급하면서
과거 각 해당일까지 '수평라인 수치'로 추가 선택된 (일봉) 시가, 고가 중 가장 바깥 쪽의
상단과 하단을 각 1개씩 새로운 '상하단 범위 기준'으로 정합니다.
그리고 이 상하단 범위 밖에 있는 시가, 종가를 '수평라인 수치'로 계속 추가 선택하는
과정을 설정한 기간 (D-30) 까지 과거 일자로 순차적으로 소급하여 반복하는 연산입니다.
담당자님께서 76111번의 답변에서 수정해주신 <1 시종> 지표를 실행해보면
특정 해당일에 적용되는 '상하단 범위 기준' 범위 내에 있는 시가, 종가(사례에서는 종가만 발생)도
선택되어 당일(D)의 추세선으로 표시되는 사례가 발생합니다.
(지표 요건은 '상하단 범위 기준' 범위 밖에 있는 시가, 종가만이 선택되어
당일의 추세선으로 표시되어야 함)
첨부된 그림 파일의 예시로 설명드립니다.
기간을 30일(n=30)으로 설정하고 지표를 조회하면,
2022.2.22을 당일(D)로 볼 때 과거로 소급해서 연산하면서
2.15 종가(360.55)로 새로운 하단범위, 2.10 종가(371.75)로 새로운 상단범위가 설정됩니다.
그렇게 되면 2.10 보다 과거로 소급해서 연산하는 과정에서 그 범위 내에 있는
2.8 종가(363.20), 2.7 종가(363.25), 2.3 종가(361.50)가 추세선 수치로 선택되면 안되는데,
지표 실행 결과는 당일(D)인 2022.2.22의 추세선 수치로 표시됩니다.
<1 시종>지표에 대해서 다른 결과가 도출되는 점에 대해 검토해주시고
재수정해 주실 것을 부탁드립니다.
제가 오래전 부터 계속 고민하던 지지, 저항선입니다. 부탁드립니다.
수정 요청으로 담당자님을 번거롭게 해드리는 점 양해 바라면서
재수정해서 작성해 주시는 것에 대해 담당자님께 미리 감사드립니다.
(담당자님께서 76111번의 답변에서 수정해주신 <1 시종>을 아래에 기재합니다.)
cf. N(3은) 제가 N(30)으로 변경했습니다.
----------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
두식 모두 수정해 드립니다.
1 시종
input : N(30);
var : cnt(0),HH(0),LL(0),HTL1(0),LTL1(0),H1(0),L1(0);
Array : HTL[100](0),LTL[100](0);
if Sdate != sDate[1] Then
{
value1 = sDate;
Value2 = value1[1];
Value3 = sTime;
Value4 = Value3[1];
For cnt = 1 to N
{
TL_Delete(HTL[cnt]);
TL_Delete(LTL[cnt]);
var1 = max(DayOpen(cnt),DayClose(cnt));
var2 = min(DayOpen(cnt),DayClose(cnt));
if cnt == 1 Then
{
HTL[cnt] = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
TL_SetColor(HTL[cnt],RED);
TL_SetExtRight(HTL[cnt],true);
TL_SetDrawMode(HTL[cnt],0);
HH = var1;
LTL[cnt] = TL_New(sDate,sTime,var2,NextBarSdate,NextBarStime,var2);
TL_SetColor(LTL[cnt],BLUE);
TL_SetExtRight(LTL[cnt],true);
TL_SetDrawMode(LTL[cnt],0);
LL = var2;
}
Else
{
if abs(var1-DayOpen(0)) < 10 and (var1 > HH or var1 < LL) Then
{
HTL[cnt] = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
TL_SetColor(HTL[cnt],RED);
TL_SetExtRight(HTL[cnt],true);
TL_SetDrawMode(HTL[cnt],0);
}
if abs(Var2-DayOpen(0)) < 10 and (Var2 > HH or Var2 < LL) Then
{
LTL[cnt] = TL_New(sDate,sTime,Var2,NextBarSdate,NextBarStime,Var2);
TL_SetColor(LTL[cnt],BLUE);
TL_SetExtRight(LTL[cnt],true);
TL_SetDrawMode(LTL[cnt],0);
}
if var1 > HH and abs(var1-DayOpen(0)) < 10 Then
HH = DayHigh(cnt);
if Var2 < LL and abs(Var2-DayOpen(0)) < 10 Then
LL = DayLow(cnt);
}
var3 = max(DayOpen(cnt+1),DayClose(cnt+1));
var4 = min(DayOpen(cnt+1),DayClose(cnt+1));
if cnt == 1 Then
{
HTL1 = TL_New(Value2,value4,var3,sDate[1],sTime[1],var3);
TL_SetColor(HTL1,RED);
TL_SetDrawMode(HTL1,0);
H1 = var3;
LTL1 = TL_New(Value2,Value3,var4,sDate[1],sTime[1],var4);
TL_SetColor(LTL1,BLUE);
TL_SetDrawMode(LTL1,0);
L1 = var4;
}
Else
{
if abs(var3-DayOpen(1)) < 10 and (var3 > H1 or var3 < L1) Then
{
HTL1 = TL_New(Value2,value4,var3,sDate[1],sTime[1],var3);
TL_SetColor(HTL1,RED);
TL_SetDrawMode(HTL1,0);
}
if abs(Var4-DayOpen(1)) < 10 and (Var4 > H1 or Var4 < L1) Then
{
LTL1 = TL_New(Value2,Value3,var4,sDate[1],sTime[1],var4);
TL_SetColor(LTL1,BLUE);
TL_SetDrawMode(LTL1,0);
}
if var3 > H1 and abs(var3-DayOpen(1)) < 10 Then
H1 = Var3;
if Var2 < L1 and abs(Var2-DayOpen(0)) < 10 Then
L1 = Var4;
}
}
}
---------------------------------------------------------------------------