커뮤니티
수식 부탁드립니다.
2018-05-03 08:15:14
208
글번호 118659
이 수식은 거래량 터진 과거봉에 시가 고가 저가 종가에 수평 추세선 긋는 수식인대요..
이 수식에서 과거봉의 갯수를 제가 지정할수가 있읍니다.이렇게 갯수를 지정하면
여기에 덧붙여서 거래량 터진 봉의 거래량이 몇주인지 오늘자 거래량 옆 오른쪽 빈공간에
1번거래량 몇주(숫자로표시 예를들어 상위1번 1,500) 2번 거래량 몇주 이렇게 표시되게
개선이 가능한지요...수고스럽지만 부탁드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),cnt3(0),idx(0),color(0);
var : SameO(0),SameH(0),SameL(0),SameC(0);
Array : VV[50](0),OO[50](0),HH[50](0),LL[50](0),CC[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0),ii[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
OO[cnt] = 0;
HH[cnt] = 0;
LL[cnt] = 0;
CC[cnt] = 0;
ii[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
TL_Delete(OTL[cnt1]);
TL_Delete(HTL[cnt1]);
TL_Delete(LTL[cnt1]);
TL_Delete(CTL[cnt1]);
Text_Delete(OTx[cnt1]);
Text_Delete(HTx[cnt1]);
Text_Delete(LTx[cnt1]);
Text_Delete(CTx[cnt1]);
Text_Delete(Tx[cnt1]);
if cnt1 == 1 Then
color = black;
if cnt1 == 2 Then
color = red;
if cnt1 == 3 Then
color = blue;
if cnt1 == 4 Then
color = GREEN;
if cnt1 == 5 Then
color = YELLOW;
#차트 과거봉 전체 스캔
for cnt2 = 0 to idx
{
#Price대비 +- Per%안에 종가가 형성된
if !(L[cnt2] > Price*(1+Per/100) or H[cnt2] < Price*(1-Per/100)) and
V[cnt2] > VV[cnt1] and (cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then
{
VV[cnt1] = V[cnt2];
OO[cnt1] = O[cnt2];
HH[cnt1] = H[cnt2];
LL[cnt1] = L[cnt2];
CC[cnt1] = C[cnt2];
ii[cnt1] = cnt2;
}
}
#동일값 체크
sameO = 0;
sameH = 0;
sameL = 0;
sameC = 0;
for cnt3 = 1 to N
{
if OO[cnt1] == OO[cnt3] or OO[cnt1] == HH[cnt3] or OO[cnt1] == LL[cnt3] or OO[cnt1] == CC[cnt3] Then
SameO = SameO+1;
if HH[cnt1] == OO[cnt3] or HH[cnt1] == HH[cnt3] or HH[cnt1] == LL[cnt3] or HH[cnt1] == CC[cnt3] Then
SameH = SameH+1;
if LL[cnt1] == OO[cnt3] or LL[cnt1] == HH[cnt3] or LL[cnt1] == LL[cnt3] or LL[cnt1] == CC[cnt3] Then
SameL = SameL+1;
if CC[cnt1] == OO[cnt3] or CC[cnt1] == HH[cnt3] or CC[cnt1] == LL[cnt3] or CC[cnt1] == CC[cnt3] Then
SameC = SameC+1;
}
#시가선
if SameO == 1 then
{
if LastBarOnChart == 1 Then
MessageLog("O %.2f",color);
#시가선 추세선 출력
OTL[cnt1] = TL_New(Sdate[1],stime[1],OO[cnt1],sdate,stime,OO[cnt1]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
TL_SetColor(OTL[cnt1],color);
#시가선값 텍스트 출력
OTx[cnt1] = Text_New(sdate,stime,OO[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(OO[cnt1],0));
Text_SetStyle(OTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameH == 1 then
{
#고가선 추세선 출력
HTL[cnt1] = TL_New(Sdate[1],stime[1],HH[cnt1],sdate,stime,HH[cnt1]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
TL_SetColor(HTL[cnt1],color);
HTx[cnt1] = Text_New(sdate,stime,HH[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(HH[cnt1],0));
Text_SetStyle(HTx[cnt1],0,0);
Text_SetColor(HTx[cnt1],color);
}
if SameL == 1 then
{
LTL[cnt1] = TL_New(Sdate[1],stime[1],LL[cnt1],sdate,stime,LL[cnt1]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
TL_SetColor(LTL[cnt1],color);
LTx[cnt1] = Text_New(sdate,stime,LL[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(LL[cnt1],0));
Text_SetStyle(LTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameC == 1 then
{
CTL[cnt1] = TL_New(Sdate[1],stime[1],CC[cnt1],sdate,stime,CC[cnt1]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
TL_SetColor(CTL[cnt1],color);
CTx[cnt1] = Text_New(sdate,stime,CC[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(CC[cnt1],0));
Text_SetStyle(CTx[cnt1],0,0);
Text_SetColor(CTx[cnt1],color);
}
if CC[cnt1] > 0 then{
Tx[cnt1] = Text_New(sdate[ii[cnt1]],stime[ii[cnt1]],CC[cnt1],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
Text_SetColor(Tx[cnt1],color);
Text_SetColor(Tx[cnt1],white);
}
}
답변 1
예스스탁 예스스탁 답변
2018-05-04 10:02:56
안녕하세요
예스스탁입니다.
거래량 옆으로 출력을 시킬수는 없습니다.
기존에 출력되는 값에 추가해 드릴수는 있습니다.
시가옆으로 추가해 드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),cnt3(0),idx(0),color(0);
var : SameO(0),SameH(0),SameL(0),SameC(0);
Array : VV[50](0),OO[50](0),HH[50](0),LL[50](0),CC[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0),ii[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
OO[cnt] = 0;
HH[cnt] = 0;
LL[cnt] = 0;
CC[cnt] = 0;
ii[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
TL_Delete(OTL[cnt1]);
TL_Delete(HTL[cnt1]);
TL_Delete(LTL[cnt1]);
TL_Delete(CTL[cnt1]);
Text_Delete(OTx[cnt1]);
Text_Delete(HTx[cnt1]);
Text_Delete(LTx[cnt1]);
Text_Delete(CTx[cnt1]);
Text_Delete(Tx[cnt1]);
if cnt1 == 1 Then
color = black;
if cnt1 == 2 Then
color = red;
if cnt1 == 3 Then
color = blue;
if cnt1 == 4 Then
color = GREEN;
if cnt1 == 5 Then
color = YELLOW;
#차트 과거봉 전체 스캔
for cnt2 = 0 to idx
{
#Price대비 +- Per%안에 종가가 형성된
if !(L[cnt2] > Price*(1+Per/100) or H[cnt2] < Price*(1-Per/100)) and
V[cnt2] > VV[cnt1] and (cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then
{
VV[cnt1] = V[cnt2];
OO[cnt1] = O[cnt2];
HH[cnt1] = H[cnt2];
LL[cnt1] = L[cnt2];
CC[cnt1] = C[cnt2];
ii[cnt1] = cnt2;
}
}
#동일값 체크
sameO = 0;
sameH = 0;
sameL = 0;
sameC = 0;
for cnt3 = 1 to N
{
if OO[cnt1] == OO[cnt3] or OO[cnt1] == HH[cnt3] or OO[cnt1] == LL[cnt3] or OO[cnt1] == CC[cnt3] Then
SameO = SameO+1;
if HH[cnt1] == OO[cnt3] or HH[cnt1] == HH[cnt3] or HH[cnt1] == LL[cnt3] or HH[cnt1] == CC[cnt3] Then
SameH = SameH+1;
if LL[cnt1] == OO[cnt3] or LL[cnt1] == HH[cnt3] or LL[cnt1] == LL[cnt3] or LL[cnt1] == CC[cnt3] Then
SameL = SameL+1;
if CC[cnt1] == OO[cnt3] or CC[cnt1] == HH[cnt3] or CC[cnt1] == LL[cnt3] or CC[cnt1] == CC[cnt3] Then
SameC = SameC+1;
}
#시가선
if SameO == 1 then
{
if LastBarOnChart == 1 Then
MessageLog("O %.2f",color);
#시가선 추세선 출력
OTL[cnt1] = TL_New(Sdate[1],stime[1],OO[cnt1],sdate,stime,OO[cnt1]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
TL_SetColor(OTL[cnt1],color);
#시가선값 텍스트 출력
OTx[cnt1] = Text_New(sdate,stime,OO[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(OO[cnt1],0)+"|"+NumToStr(VV[cnt1],0));
Text_SetStyle(OTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameH == 1 then
{
#고가선 추세선 출력
HTL[cnt1] = TL_New(Sdate[1],stime[1],HH[cnt1],sdate,stime,HH[cnt1]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
TL_SetColor(HTL[cnt1],color);
HTx[cnt1] = Text_New(sdate,stime,HH[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(HH[cnt1],0));
Text_SetStyle(HTx[cnt1],0,0);
Text_SetColor(HTx[cnt1],color);
}
if SameL == 1 then
{
LTL[cnt1] = TL_New(Sdate[1],stime[1],LL[cnt1],sdate,stime,LL[cnt1]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
TL_SetColor(LTL[cnt1],color);
LTx[cnt1] = Text_New(sdate,stime,LL[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(LL[cnt1],0));
Text_SetStyle(LTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameC == 1 then
{
CTL[cnt1] = TL_New(Sdate[1],stime[1],CC[cnt1],sdate,stime,CC[cnt1]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
TL_SetColor(CTL[cnt1],color);
CTx[cnt1] = Text_New(sdate,stime,CC[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(CC[cnt1],0));
Text_SetStyle(CTx[cnt1],0,0);
Text_SetColor(CTx[cnt1],color);
}
if CC[cnt1] > 0 then{
Tx[cnt1] = Text_New(sdate[ii[cnt1]],stime[ii[cnt1]],CC[cnt1],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
Text_SetColor(Tx[cnt1],color);
Text_SetColor(Tx[cnt1],white);
}
}
즐거운 하루되세요
> 앙이 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다.
> 이 수식은 거래량 터진 과거봉에 시가 고가 저가 종가에 수평 추세선 긋는 수식인대요..
이 수식에서 과거봉의 갯수를 제가 지정할수가 있읍니다.이렇게 갯수를 지정하면
여기에 덧붙여서 거래량 터진 봉의 거래량이 몇주인지 오늘자 거래량 옆 오른쪽 빈공간에
1번거래량 몇주(숫자로표시 예를들어 상위1번 1,500) 2번 거래량 몇주 이렇게 표시되게
개선이 가능한지요...수고스럽지만 부탁드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),cnt3(0),idx(0),color(0);
var : SameO(0),SameH(0),SameL(0),SameC(0);
Array : VV[50](0),OO[50](0),HH[50](0),LL[50](0),CC[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0),ii[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
OO[cnt] = 0;
HH[cnt] = 0;
LL[cnt] = 0;
CC[cnt] = 0;
ii[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
TL_Delete(OTL[cnt1]);
TL_Delete(HTL[cnt1]);
TL_Delete(LTL[cnt1]);
TL_Delete(CTL[cnt1]);
Text_Delete(OTx[cnt1]);
Text_Delete(HTx[cnt1]);
Text_Delete(LTx[cnt1]);
Text_Delete(CTx[cnt1]);
Text_Delete(Tx[cnt1]);
if cnt1 == 1 Then
color = black;
if cnt1 == 2 Then
color = red;
if cnt1 == 3 Then
color = blue;
if cnt1 == 4 Then
color = GREEN;
if cnt1 == 5 Then
color = YELLOW;
#차트 과거봉 전체 스캔
for cnt2 = 0 to idx
{
#Price대비 +- Per%안에 종가가 형성된
if !(L[cnt2] > Price*(1+Per/100) or H[cnt2] < Price*(1-Per/100)) and
V[cnt2] > VV[cnt1] and (cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then
{
VV[cnt1] = V[cnt2];
OO[cnt1] = O[cnt2];
HH[cnt1] = H[cnt2];
LL[cnt1] = L[cnt2];
CC[cnt1] = C[cnt2];
ii[cnt1] = cnt2;
}
}
#동일값 체크
sameO = 0;
sameH = 0;
sameL = 0;
sameC = 0;
for cnt3 = 1 to N
{
if OO[cnt1] == OO[cnt3] or OO[cnt1] == HH[cnt3] or OO[cnt1] == LL[cnt3] or OO[cnt1] == CC[cnt3] Then
SameO = SameO+1;
if HH[cnt1] == OO[cnt3] or HH[cnt1] == HH[cnt3] or HH[cnt1] == LL[cnt3] or HH[cnt1] == CC[cnt3] Then
SameH = SameH+1;
if LL[cnt1] == OO[cnt3] or LL[cnt1] == HH[cnt3] or LL[cnt1] == LL[cnt3] or LL[cnt1] == CC[cnt3] Then
SameL = SameL+1;
if CC[cnt1] == OO[cnt3] or CC[cnt1] == HH[cnt3] or CC[cnt1] == LL[cnt3] or CC[cnt1] == CC[cnt3] Then
SameC = SameC+1;
}
#시가선
if SameO == 1 then
{
if LastBarOnChart == 1 Then
MessageLog("O %.2f",color);
#시가선 추세선 출력
OTL[cnt1] = TL_New(Sdate[1],stime[1],OO[cnt1],sdate,stime,OO[cnt1]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
TL_SetColor(OTL[cnt1],color);
#시가선값 텍스트 출력
OTx[cnt1] = Text_New(sdate,stime,OO[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(OO[cnt1],0));
Text_SetStyle(OTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameH == 1 then
{
#고가선 추세선 출력
HTL[cnt1] = TL_New(Sdate[1],stime[1],HH[cnt1],sdate,stime,HH[cnt1]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
TL_SetColor(HTL[cnt1],color);
HTx[cnt1] = Text_New(sdate,stime,HH[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(HH[cnt1],0));
Text_SetStyle(HTx[cnt1],0,0);
Text_SetColor(HTx[cnt1],color);
}
if SameL == 1 then
{
LTL[cnt1] = TL_New(Sdate[1],stime[1],LL[cnt1],sdate,stime,LL[cnt1]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
TL_SetColor(LTL[cnt1],color);
LTx[cnt1] = Text_New(sdate,stime,LL[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(LL[cnt1],0));
Text_SetStyle(LTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameC == 1 then
{
CTL[cnt1] = TL_New(Sdate[1],stime[1],CC[cnt1],sdate,stime,CC[cnt1]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
TL_SetColor(CTL[cnt1],color);
CTx[cnt1] = Text_New(sdate,stime,CC[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(CC[cnt1],0));
Text_SetStyle(CTx[cnt1],0,0);
Text_SetColor(CTx[cnt1],color);
}
if CC[cnt1] > 0 then{
Tx[cnt1] = Text_New(sdate[ii[cnt1]],stime[ii[cnt1]],CC[cnt1],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
Text_SetColor(Tx[cnt1],color);
Text_SetColor(Tx[cnt1],white);
}
}
이전글