커뮤니티
수식수정 부탁드립니다
아래의 지표수식에 대해 수정 요망합니다.
#기본조건 설정
#===================================================================================================
input : 상승단갭율(1.45), 양봉기준율(0.050), 음봉기준율(0.0499), 가격라인율(11.8);
var : 양봉(False),음봉(False), GapUp(False), GapDown(False) ;
input : 하락갭율양(1.75), 하락갭율음(-1.75);
양봉 = C >= O *(1+양봉기준율/100) ;
음봉 = C < O*(1+음봉기준율/100) or C < O ;
GapUp = ( O - C[1] ) / C[1] * 100 >= 상승단갭율 ;
GapDown = ( (C[1] * (1-하락갭율양/100) >= O) or ((O-C[1])/C[1] * 100 <= 하락갭율음) ) and C[1] > O and O[1] > O ;
#시가 상승갭 발생의 경우
#===================================================================================================
if GapUp == true and C[1] <= O[1] and C > O Then
{
Var1 = C[1] ;
Var2 = (C-O)*가격라인율/100+O ;
}
if GapUp == true and C[1] <= O[1] and C <= O Then
{
Var1 = C[1] ;
Var2 = O ;
}
if GapUp == true and C[1] > O[1] and C > O Then
{
Var1 = C[1] ;
Var2 = (C-O)*가격라인율/100+O ;
}
if GapUp == true and C[1] > O[1] and C <= O Then
{
Var1 = C[1] ;
Var2 = O ;
}
Plot1(Var1, "상승갭전일종가라인");
Plot2(Var2, "상승갭당일시가라인");
#===================================================================================
#갭하락캔들의 음봉 또는 양봉를 구별하여 라인 설정
#===================================================================================
if GapDown == true and C <= O Then #하락갭이면서 음봉인 경우
{
if 양봉[1] == true Then
{
Var3 = O[1] ;
Var4 = O ;
}
if 음봉[1] == true Then
{
Var3 = C[1] ;
Var4 = C ;
}
}
if GapDown == true and C > O Then #하락갭이면서 양봉인 경우
{
if 양봉[1] == true and C <= C[1] Then #1봉전의 캔들이 양봉이면서 전일종가보다 당일종가가 낮은 경우는 1봉전 시가와 당일시가로 두개의 가격라인이 생성되고
{
Var3 = O[1] ;
Var4 = O ;
}
if 양봉[1] == true and C > C[1] Then #1봉전의 캔들이 양봉이면서 전일종가보다 당일종가가 높은 경우는 당일종가와 1봉전 종가로 두개의 가격라인이 생성되고
{
Var3 = O[1] ;
Var4 = O ;
}
if 음봉[1] == true and C <= C[1] Then #1봉전의 캔들이 음봉이면서 전일종가보다 당일종가가 낮은 경우는 1봉전 종가와 당일종가로 두개의 가격라인이 생성되고
{
Var3 = C[1] ;
Var4 = O ;
}
if 음봉[1] == true and C > C[1] Then #1봉전의 캔들이 음봉이면서 전일종가보다 당일종가가 높은 경우는 1봉전 종가와 당일시가로 두개의 가격라인이 생성되고
{
Var3 = C[1] ;
Var4 = O ;
}
}
Plot3(Var3, "하락갭전일종가라인음양봉");
Plot4(Var4, "하락갭당일가격라인음양봉");
#==============================================================================================
# 1. 상승 갭(Var1) 계단식 변동 추적
#==============================================================================================
var : UGap0(0), UGap1(0), UGap2(0), UGap3(0);
var : UIdx0(0), UIdx1(0), UIdx2(0), UIdx3(0); # 변동이 발생한 봉 번호(Index)
var : URate(0), txUp(0);
Input : U최소변동하락율(40),U계단변동율텍스트표시(1),글자크기UU(13),글자긁기UU(1),글자크기UD(13),글자긁기UD(1);
var : U_UpCnt(0), U_DnCnt(0);
var : U_PrevCnt1(0), U_PrevCnt2(0);
if Var1 > 0 and Var1 != Var1[1] Then
{
# 1-1. 가격 데이터 계단식 이관
if Var1[1] == Var1[2] Then
{
UGap3 = UGap2;
UGap2 = UGap1;
UGap1 = UGap0;
}
UGap0 = Var1;
# 1-2. 발생 위치(인덱스) 계단식 이관
if Var1[1] == Var1[2] Then
{
UIdx3 = UIdx2;
UIdx2 = UIdx1;
UIdx1 = UIdx0;
}
UIdx0 = Index;
# 1-3. 변동률 계산 및 텍스트 출력
if UGap1 > 0 Then
{
URate = (UGap0 - UGap1) / UGap1 * 100; # (현재-과거)/과거 * 100
if Var1[1] != Var1[2] Then
{
Text_Delete(txUp);
}
Else
{
# 연속 카운팅 및 과거 파동 저장 로직
if URate > 0 Then # 위로 변동 (상승)
{
if U_DnCnt > 0 Then
{
U_PrevCnt2 = U_PrevCnt1;
U_PrevCnt1 = -U_DnCnt;
}
U_UpCnt = U_UpCnt + 1; # 상승 카운트 1 증가
U_DnCnt = 0; # 하락 카운트 초기화
}
Else if URate < 0 Then # 아래로 변동 (하락)
{
if U_UpCnt > 0 Then
{
U_PrevCnt2 = U_PrevCnt1;
U_PrevCnt1 = U_UpCnt;
}
U_DnCnt = U_DnCnt + 1;
U_UpCnt = 0;
}
}
if U계단변동율텍스트표시 == 1 and Abs(URate) >= U최소변동하락율 Then
{
if URate > 0 Then # 위로 변동 (상승)
{
txUp = Text_New(sDate, sTime, H * 1.05, "+" + NumToStr(URate, 2) + "%");
Text_SetColor(txUp, BlacK);
Text_SetStyle(txUp, 2, 1);
Text_SetSize(txUp, 글자크기UU);
Text_SetBold(txUp, 글자긁기UU);
}
Else if URate < 0 Then # 아래로 변동 (하락)
{
txUp = Text_New(sDate, sTime, L * 0.95, NumToStr(URate, 2) + "%");
Text_SetColor(txUp, WhitE);
Text_SetStyle(txUp, 2, 0);
Text_SetSize(txUp, 글자크기UD);
Text_SetBold(txUp, 글자긁기UD);
}
}
}
}
#==============================================================================================
# 2. 하락 갭(Var3) 계단식 변동 추적 및 텍스트 표시
#==============================================================================================
var : DGap0(0), DGap1(0), DGap2(0), DGap3(0);
var : DIdx0(0), DIdx1(0), DIdx2(0), DIdx3(0); # 변동이 발생한 봉 번호(Index)
var : DRate(0), txDown(0);
Input : D최소변동하락율(30),D계단변동율텍스트표시(1),글자크기DU(15),글자긁기DU(1),글자크기DD(15),글자긁기DD(1);
var : D_UpCnt(0), D_DnCnt(0);
var : D_PrevCnt1(0), D_PrevCnt2(0);
if Var3 > 0 and Var3 != Var3[1] Then
{
# 2-1. 가격 데이터 계단식 이관
if Var3[1] == Var3[2] Then
{
DGap3 = DGap2;
DGap2 = DGap1;
DGap1 = DGap0;
}
DGap0 = Var3;
# 2-2. 발생 위치(인덱스) 계단식 이관
if Var3[1] == Var3[2] Then
{
DIdx3 = DIdx2;
DIdx2 = DIdx1;
DIdx1 = DIdx0;
}
DIdx0 = Index;
# 2-3. 변동률 계산 및 텍스트 출력
if DGap1 > 0 Then
{
DRate = (DGap0 - DGap1) / DGap1 * 100;
if Var3[1] != Var3[2] Then
{
Text_Delete(txDown);
}
Else
{
# 연속 카운팅 및 과거 파동 저장 로직
if DRate > 0 Then # 위로 변동 (상승)
{
if D_DnCnt > 0 Then
{
D_PrevCnt2 = D_PrevCnt1;
D_PrevCnt1 = -D_DnCnt;
}
D_UpCnt = D_UpCnt + 1;
D_DnCnt = 0;
}
Else if DRate < 0 Then
{
if D_UpCnt > 0 Then
{
D_PrevCnt2 = D_PrevCnt1;
D_PrevCnt1 = D_UpCnt;
}
D_DnCnt = D_DnCnt + 1;
D_UpCnt = 0;
}
}
if D계단변동율텍스트표시 == 1 and Abs(DRate) >= D최소변동하락율 Then
{
if DRate > 0 Then # 위로 변동 (상승)
{
txDown = Text_New(sDate, sTime, H * 1.05, "+" + NumToStr(DRate, 2) + "%");
Text_SetColor(txDown, Red);
Text_SetStyle(txDown, 2, 1);
Text_SetSize(txDown, 글자크기DU);
Text_SetBold(txDown, 글자긁기DU);
}
Else if DRate < 0 Then # 아래로 변동 (하락)
{
txDown = Text_New(sDate, sTime, L * 0.95, NumToStr(DRate, 2) + "%");
Text_SetColor(txDown, Blue);
Text_SetStyle(txDown, 2, 0);
Text_SetSize(txDown, 글자크기DD);
Text_SetBold(txDown, 글자긁기DD);
}
}
}
}
plot1~4의 라인은 계단식 상승 또는 하락의 변동라인을 표시하게 되어 있는데 이 변동의 변동율을 차트에 표시하게 하는 수식입니다.
문제는 일정한 변동율이 있을 때에만 표시되게 수식을 구성하였는데 일정율이상의 변동율이 발생했음에도 불구하고 차트에
표시가 되지 않아서 수정 검토를 요청드리는 것입니다.
예를 들어 현대건설의 주봉차트에서 문제가 되고 있는 부분에 대해서 예시해보겠습니다.
1. 2020년 3월 27일 주봉의 경우는 Plot3(Var3, "하락갭전일종가라인음양봉");라인의 하락변동율이 38.90%가 됨에도 불구하고
U최소변동하락율(40)와 D최소변동하락율을 23이상 입력하면 표시가 안되지만 22이하로 입력하면 표시가 됩니다. 그런데 U최소변동하락율을
39이하로 설정하고 D최소변동하락율을 38까지 입력하면 변동율이 표시가 됩니다. 즉 U최소변동하락율과 D최소변동하락율는 각각 독립적으로
작동을 해야하는데 연동되어 표시가 된다는 것입니다.
2. 2015년 07월 03일의 주봉은 28.32%, 2016년 02월 12일의 주봉은 27.49%인데 D최소변동하락율을 각 변화율보다 낮은 변화율을
설정하면 표시가 되어야 하는데 U최소변동하락율(40)와 25%, 15%등을 설정하면 표시가 안되다가 D최소변동하락율을 0에 가깝게 설정하거나
U최소변동하락율(40)을 일정이하로 변동시키면 표시가 된다는 것입니다
갭상승라인과 갭하락라인의 변동율이 독립적으로 설정한 변동율이상이면 표시가 될 수 있게끔 수정해주시기 바랍니다.
답변 1
예스스탁 예스스탁 답변
2026-02-23 11:12:23