예스스탁
예스스탁 답변
2020-01-28 17:09:46
안녕하세요
예스스탁입니다.
1
수식에서 hh와 LL은 현재봉 기준최근 n분간 최고가, 최저가입니다.
해당 변수는 hh[1],LL[1]로 전봉값 가져오시면 됩니다.
O1,H1,L1,C1은 오늘 1분봉 단위 시고저종가입니다.
배열변수로 처리해서 n봉전 값을 가져오게 수정해 드립니다.
O1[1],H1[1],L1[1],C1[1]과 같이 이전봉 값을 가져오게 수정해 드립니다.
2
input : n(3),CC(10),CF(3),Per1(25),Per2(50),Per3(75);
input : 굵기1(1),굵기2(1),굵기3(1),굵기4(1),굵기5(1),굵기6(1);
input : 색상1(RED),색상2(MAGENTA),색상3(GREEN),색상4(CYAN),색상5(BLUE),색상6(BLACK);
var : TF(0),S1(0),D1(0),TM(0),cnt(0),T1(0),HH(0),LL(0),ii(0),TT(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0);
var : sum(0),mav(0),VD(0),VT(0),VM(0),VP(0);
Array : O1[100](0),H1[100](0),L1[100](0),C1[100](0),V1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
TT = stime;
ii = 0;
}
Else
ii = ii+1;
if D1 > 0 then
{
#영업일변경 기준으로 경과된 분
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
//n분 미만
if TM < n then
{
//당일최고와 최저가를 기준으로 선 출력
hh = DayHigh;
ll = daylow;
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH,Sdate,stime,HH);
TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100));
TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100));
TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100));
TL5 = TL_New(D1,TT,LL,Sdate,stime,LL);
}
else //분이상 경과
{
//최근 n분 이내에서 최고가와 최저가 계산해서 선 출력
HH = H;
LL = L;
for cnt = 0 to ii
{
if TM[cnt] > TM-N then
{
if H[cnt] > HH Then
HH = H[cnt];
if L[cnt] < LL Then
LL = L[cnt];
TT = stime[cnt];
}
if TM[cnt] < TM-N Then
cnt = ii+1;
}
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH[1],Sdate,stime,HH[1]);
TL2 = TL_New(D1,TT,HH[1]-(HH[1]-LL[1])*0.25,Sdate,stime,HH[1]-(HH[1]-LL[1])*(Per1/100));
TL3 = TL_New(D1,TT,HH[1]-(HH-LL[1])*0.50,Sdate,stime,HH[1]-(HH[1]-LL[1])*(Per2/100));
TL4 = TL_New(D1,TT,HH[1]-(HH-LL[1])*0.75,Sdate,stime,HH[1]-(HH[1]-LL[1])*(Per3/100));
TL5 = TL_New(D1,TT,LL[1],Sdate,stime,LL[1]);
}
TL_SetColor(TL1,RED);
TL_SetColor(TL2,MAGENTA);
TL_SetColor(TL3,GREEN);
TL_SetColor(TL4,CYAN);
TL_SetColor(TL5,BLUE);
TL_SetSize(TL1, 굵기1);
TL_SetSize(TL2, 굵기2);
TL_SetSize(TL3, 굵기3);
TL_SetSize(TL4, 굵기4);
TL_SetSize(TL5, 굵기5);
#1분봉 기준(시,고,저,종,거래량 계산)
if bdate != bdate[1] or (Bdate == bdate[1] and TM > TM[1]) Then
{
O1[0] = O;
H1[0] = H;
L1[0] = L;
V1[0] = 0 ;
for cnt = 1 to 99
{
O1[cnt] = O1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
C1[cnt] = C1[cnt-1][1];
V1[cnt] = v1[cnt-1][1];
}
}
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
C1[0] = C;
V1[0] = V1[0]+V;
TL_Delete(TL6);
if V1[cc] > 0 then
{
sum = 0;
for cnt = 1 to CC
{
sum = sum + V1[cnt];
}
mav = sum/CC;
//최근 1분거래량이 이전 cc봉 평균대비 CF배 이상이면
if V1[0] >= mav*CF Then
{
//날짜,시간,TM값, 평균값 저장
VD = sdate;
VT = stime;
VM = TM;
VP = (O1[0]+H1[0]+L1[0]+C1[0])/4;
}
//오늘 거래량조건이 발생한적 있고 현재부터 20분 이내이면 출력
if VD == sdate and VM > TM-n Then
{
TL6 = TL_new(D1,TT,VP,Sdate,stime,VP);
TL_SetColor(TL6,BLACK);
TL_SetSize(TL6,굵기6);
}
}
}
즐거운 하루되세요
> maker 님이 쓴 글입니다.
> 제목 : 지표 수정 부탁드립니다.
> 틱봉에서 N분봉으로 변환 후 N분간 고/저점을 나타내는 수식을
이전에 부탁드려 받은 적이 있습니다.
현재 봉이 고가나 저가를 갱신하면 해당 지표의 고/저점도 같이 갱신되므로
사용하지 못하고 있습니다.
1봉 전의 N분간 고/저점을 나타내고 싶은데 수식을 봐도 어디에
[1]을 넣어야 할지 몰라 이렇게 문의 드립니다.
수정 부탁드립니다.
감사합니다.
아래는 이전에 받았던 수식 입니다.
input : n(3),CC(10),CF(3),Per1(25),Per2(50),Per3(75);
input : 굵기1(1),굵기2(1),굵기3(1),굵기4(1),굵기5(1),굵기6(1);
input : 색상1(RED),색상2(MAGENTA),색상3(GREEN),색상4(CYAN),색상5(BLUE),색상6(BLACK);
var : TF(0),S1(0),D1(0),TM(0),cnt(0),T1(0),HH(0),LL(0),ii(0),TT(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0);
var : O1(0),H1(0),L1(0),C1(0),sum(0),mav(0),VD(0),VT(0),VM(0),VP(0);
Array : V1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
TT = stime;
ii = 0;
}
Else
ii = ii+1;
if D1 > 0 then
{
#영업일변경 기준으로 경과된 분
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
//n분 미만
if TM < n then
{
//당일최고와 최저가를 기준으로 선 출력
hh = DayHigh;
ll = daylow;
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH,Sdate,stime,HH);
TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100));
TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100));
TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100));
TL5 = TL_New(D1,TT,LL,Sdate,stime,LL);
}
else //분이상 경과
{
//최근 n분 이내에서 최고가와 최저가 계산해서 선 출력
HH = H;
LL = L;
for cnt = 0 to ii
{
if TM[cnt] > TM-N then
{
if H[cnt] > HH Then
HH = H[cnt];
if L[cnt] < LL Then
LL = L[cnt];
TT = stime[cnt];
}
if TM[cnt] < TM-N Then
cnt = ii+1;
}
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH,Sdate,stime,HH);
TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100));
TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100));
TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100));
TL5 = TL_New(D1,TT,LL,Sdate,stime,LL);
}
TL_SetColor(TL1,RED);
TL_SetColor(TL2,MAGENTA);
TL_SetColor(TL3,GREEN);
TL_SetColor(TL4,CYAN);
TL_SetColor(TL5,BLUE);
TL_SetSize(TL1, 굵기1);
TL_SetSize(TL2, 굵기2);
TL_SetSize(TL3, 굵기3);
TL_SetSize(TL4, 굵기4);
TL_SetSize(TL5, 굵기5);
#1분봉 기준(시,고,저,종,거래량 계산)
if bdate != bdate[1] or (Bdate == bdate[1] and TM > TM[1]) Then
{
O1 = O;
H1 = H;
L1 = L;
V1[0] = 0 ;
for cnt = 1 to 99
{
V1[cnt] = v1[cnt-1][1];
}
}
if H > H1 Then
H1 = H;
if L < L1 Then
L1 = L;
C1 = C;
V1[0] = V1[0]+V;
TL_Delete(TL6);
if V1[cc] > 0 then
{
sum = 0;
for cnt = 1 to CC
{
sum = sum + V1[cnt];
}
mav = sum/CC;
//최근 1분거래량이 이전 cc봉 평균대비 CF배 이상이면
if V1[0] >= mav*CF Then
{
//날짜,시간,TM값, 평균값 저장
VD = sdate;
VT = stime;
VM = TM;
VP = (O1+H1+L1+C1)/4;
}
//오늘 거래량조건이 발생한적 있고 현재부터 20분 이내이면 출력
if VD == sdate and VM > TM-n Then
{
TL6 = TL_new(D1,TT,VP,Sdate,stime,VP);
TL_SetColor(TL6,BLACK);
TL_SetSize(TL6,굵기6);
}
}
}