커뮤니티
수식수정부탁드립니다=======
2016-09-29 06:02:56
137
글번호 102284
input:틱배수(10), // 기존 개념 point 대신에 1호가 단위에 몇 배수를 곱한 값을 사용키로 했다.
Figure(3);
Var:j(0),k(0),n(0),pnt(0),
Col(0), // 칼럼(열)수를 증가하면서 관리한다.
LowLimit(0), // csv 파일 출력시 불필요한 라인을 줄이기 위해 최저값을 계산
출력개수(50); // 아래 xo[200,100]으로 선언했기 때문에 100칼럼까지 출력이 가능하지만
// 최근 상황만 파악하기 위해 50으로 줄였다.
// 더 많은 칼럼을 출력하고자 한다면 xo[200,100]에서 100을 더 큰 수로 바꿔준다.
Array:고[100](0),저[100](0),구분[100](""), // 100개의 칼럼을 선언
price[200](0), // 200개의 행
xo[200,100](""); // 엑셀에서 cells(row,column)과 같은 개념
#=====================================================#
# P&F 계산
#=====================================================#
pnt = TickSize(C) * 틱배수; // P&F 는 종가를 기반으로 계산한다. 변형해서 다르게 계산해도 무방
// TickSize()는 사용자함수임. 아래 포스트에 있음
// http://yahoosir.blog.me/220651602149
if 구분[0] == "" then
{
if 고[0] == 0 then 고[0] = C;
if 저[0] == 0 then 저[0] = C;
Col = 1;
if 저[0] + Figure * pnt <= C then
{
구분[0] = "X";
고[0] = 저[0] + int( ( C - 저[0] ) / pnt ) * pnt;
}
else if 고[0] - Figure * pnt >= C then
{
구분[0] = "O";
저[0] = 고[0] - int( ( 고[0] - C ) / pnt ) * pnt;
}
}
else if 구분[0] == "X" then
{
if 고[0] - Figure * pnt >= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "O";
고[0] = 고[1] - pnt;
저[0] = 고[1] - int( ( 고[1] - C ) / pnt ) * pnt;
}
else if 고[0] + pnt <= C then
{
고[0] = 고[0] + int( ( C - 고[0] ) / pnt ) * pnt;
}
}
else if 구분[0] == "O" then
{
if 저[0] + Figure * pnt <= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "X";
고[0] = 저[1] + int( ( C - 저[1] ) / pnt ) * pnt;
저[0] = 저[1] + pnt;
}
else if 저[0] - pnt >= C then
{
저[0] = 저[0] - int( ( 저[0] - C ) / pnt ) * pnt;
}
}
Plot1( iff( 구분[0] == "X", 고[0], 저[0] ) ); // _Plot1 > _Plot2 일때 와 _Plot1 < _Plot2 일때 각각 채워넣기를 한다.
plot2( iff( 구분[0] == "X", 저[0], 고[0] ) );
#=====================================================#
# 엑셀용 자료 가공
#=====================================================#
if lastbaronchart() then
{
price[1] = 고[0];
LowLimit = 저[0];
for k = 1 to 출력개수 // 50개 열까지만 출력하도록 하였으므로 이 부분은 취향에 맞춰 수정한다.
{
price[1] = max( price[1], 고[k] );
if 저[k] > 0 then
LowLimit = min( LowLimit, 저[k] );
}
n = 199;
for k = 2 to 199
{
price[k] = price[k-1] - ( TickSize( price[k-1] ) * 틱배수);
if price[k] < LowLimit then
{
n = k - 1;
k = 200;
}
}
col = min( col, 출력개수 );
for j = Col - 1 DownTo 0
{
for k = 1 to n
{
if 고[j] >= price[k] and price[k] >= 저[j] then
{
xo[k,Col-j] = 구분[j];
}
}
}
for k = 1 to n
{
Print(SymbolName+"_PnF.csv",",%.2f,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s"
,price[k],xo[k,1],xo[k,2],xo[k,3],xo[k,4],xo[k,5],xo[k,6],xo[k,7],xo[k,8],xo[k,9],xo[k,10]
,xo[k,11],xo[k,12],xo[k,13],xo[k,14],xo[k,15],xo[k,16],xo[k,17],xo[k,18],xo[k,19],xo[k,20]
,xo[k,21],xo[k,22],xo[k,23],xo[k,24],xo[k,25],xo[k,26],xo[k,27],xo[k,28],xo[k,29],xo[k,30]
,xo[k,31],xo[k,32],xo[k,33],xo[k,34],xo[k,35],xo[k,36],xo[k,37],xo[k,38],xo[k,39],xo[k,40]
,xo[k,41],xo[k,42],xo[k,43],xo[k,44],xo[k,45],xo[k,46],xo[k,47],xo[k,48],xo[k,49],xo[k,50]
);
}
}
선물지수100틱차트에 적용하려는데 잘안되요 애러납니다
수정 부탁드립니다
답변 1
예스스탁 예스스탁 답변
2016-09-29 14:13:55
안녕하세요
예스스탁입니다.
input:틱배수(10), // 기존 개념 point 대신에 1호가 단위에 몇 배수를 곱한 값을 사용키로 했다.
Figure(3);
Var:j(0),k(0),n(0),pnt(0),
Col(0), // 칼럼(열)수를 증가하면서 관리한다.
LowLimit(0), // csv 파일 출력시 불필요한 라인을 줄이기 위해 최저값을 계산
출력개수(50); // 아래 xo[200,100]으로 선언했기 때문에 100칼럼까지 출력이 가능하지만
// 최근 상황만 파악하기 위해 50으로 줄였다.
// 더 많은 칼럼을 출력하고자 한다면 xo[200,100]에서 100을 더 큰 수로 바꿔준다.
Array:고[100](0),저[100](0),구분[100](""), // 100개의 칼럼을 선언
price[200](0), // 200개의 행
xo[200,100](""); // 엑셀에서 cells(row,column)과 같은 개념
#=====================================================#
# P&F 계산
#=====================================================#
pnt = PriceScale * 틱배수; // P&F 는 종가를 기반으로 계산한다. 변형해서 다르게 계산해도 무방
// TickSize()는 사용자함수임. 아래 포스트에 있음
// http://yahoosir.blog.me/220651602149
if 구분[0] == "" then
{
if 고[0] == 0 then 고[0] = C;
if 저[0] == 0 then 저[0] = C;
Col = 1;
if 저[0] + Figure * pnt <= C then
{
구분[0] = "X";
고[0] = 저[0] + int( ( C - 저[0] ) / pnt ) * pnt;
}
else if 고[0] - Figure * pnt >= C then
{
구분[0] = "O";
저[0] = 고[0] - int( ( 고[0] - C ) / pnt ) * pnt;
}
}
else if 구분[0] == "X" then
{
if 고[0] - Figure * pnt >= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "O";
고[0] = 고[1] - pnt;
저[0] = 고[1] - int( ( 고[1] - C ) / pnt ) * pnt;
}
else if 고[0] + pnt <= C then
{
고[0] = 고[0] + int( ( C - 고[0] ) / pnt ) * pnt;
}
}
else if 구분[0] == "O" then
{
if 저[0] + Figure * pnt <= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "X";
고[0] = 저[1] + int( ( C - 저[1] ) / pnt ) * pnt;
저[0] = 저[1] + pnt;
}
else if 저[0] - pnt >= C then
{
저[0] = 저[0] - int( ( 저[0] - C ) / pnt ) * pnt;
}
}
Plot1( iff( 구분[0] == "X", 고[0], 저[0] ) ); // _Plot1 > _Plot2 일때 와 _Plot1 < _Plot2 일때 각각 채워넣기를 한다.
plot2( iff( 구분[0] == "X", 저[0], 고[0] ) );
#=====================================================#
# 엑셀용 자료 가공
#=====================================================#
if lastbaronchart() then
{
price[1] = 고[0];
LowLimit = 저[0];
for k = 1 to 출력개수 // 50개 열까지만 출력하도록 하였으므로 이 부분은 취향에 맞춰 수정한다.
{
price[1] = max( price[1], 고[k] );
if 저[k] > 0 then
LowLimit = min( LowLimit, 저[k] );
}
n = 199;
for k = 2 to 199
{
price[k] = price[k-1] - ( PriceScale * 틱배수);
if price[k] < LowLimit then
{
n = k - 1;
k = 200;
}
}
col = min( col, 출력개수 );
for j = Col - 1 DownTo 0
{
for k = 1 to n
{
if 고[j] >= price[k] and price[k] >= 저[j] then
{
xo[k,Col-j] = 구분[j];
}
}
}
for k = 1 to n
{
Print(SymbolName+"_PnF.csv",",%.2f,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s"
,price[k],xo[k,1],xo[k,2],xo[k,3],xo[k,4],xo[k,5],xo[k,6],xo[k,7],xo[k,8],xo[k,9],xo[k,10]
,xo[k,11],xo[k,12],xo[k,13],xo[k,14],xo[k,15],xo[k,16],xo[k,17],xo[k,18],xo[k,19],xo[k,20]
,xo[k,21],xo[k,22],xo[k,23],xo[k,24],xo[k,25],xo[k,26],xo[k,27],xo[k,28],xo[k,29],xo[k,30]
,xo[k,31],xo[k,32],xo[k,33],xo[k,34],xo[k,35],xo[k,36],xo[k,37],xo[k,38],xo[k,39],xo[k,40]
,xo[k,41],xo[k,42],xo[k,43],xo[k,44],xo[k,45],xo[k,46],xo[k,47],xo[k,48],xo[k,49],xo[k,50]
);
}
}
즐거운 하루되세요
> leekss1 님이 쓴 글입니다.
> 제목 : 수식수정부탁드립니다=======
> input:틱배수(10), // 기존 개념 point 대신에 1호가 단위에 몇 배수를 곱한 값을 사용키로 했다.
Figure(3);
Var:j(0),k(0),n(0),pnt(0),
Col(0), // 칼럼(열)수를 증가하면서 관리한다.
LowLimit(0), // csv 파일 출력시 불필요한 라인을 줄이기 위해 최저값을 계산
출력개수(50); // 아래 xo[200,100]으로 선언했기 때문에 100칼럼까지 출력이 가능하지만
// 최근 상황만 파악하기 위해 50으로 줄였다.
// 더 많은 칼럼을 출력하고자 한다면 xo[200,100]에서 100을 더 큰 수로 바꿔준다.
Array:고[100](0),저[100](0),구분[100](""), // 100개의 칼럼을 선언
price[200](0), // 200개의 행
xo[200,100](""); // 엑셀에서 cells(row,column)과 같은 개념
#=====================================================#
# P&F 계산
#=====================================================#
pnt = TickSize(C) * 틱배수; // P&F 는 종가를 기반으로 계산한다. 변형해서 다르게 계산해도 무방
// TickSize()는 사용자함수임. 아래 포스트에 있음
// http://yahoosir.blog.me/220651602149
if 구분[0] == "" then
{
if 고[0] == 0 then 고[0] = C;
if 저[0] == 0 then 저[0] = C;
Col = 1;
if 저[0] + Figure * pnt <= C then
{
구분[0] = "X";
고[0] = 저[0] + int( ( C - 저[0] ) / pnt ) * pnt;
}
else if 고[0] - Figure * pnt >= C then
{
구분[0] = "O";
저[0] = 고[0] - int( ( 고[0] - C ) / pnt ) * pnt;
}
}
else if 구분[0] == "X" then
{
if 고[0] - Figure * pnt >= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "O";
고[0] = 고[1] - pnt;
저[0] = 고[1] - int( ( 고[1] - C ) / pnt ) * pnt;
}
else if 고[0] + pnt <= C then
{
고[0] = 고[0] + int( ( C - 고[0] ) / pnt ) * pnt;
}
}
else if 구분[0] == "O" then
{
if 저[0] + Figure * pnt <= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "X";
고[0] = 저[1] + int( ( C - 저[1] ) / pnt ) * pnt;
저[0] = 저[1] + pnt;
}
else if 저[0] - pnt >= C then
{
저[0] = 저[0] - int( ( 저[0] - C ) / pnt ) * pnt;
}
}
Plot1( iff( 구분[0] == "X", 고[0], 저[0] ) ); // _Plot1 > _Plot2 일때 와 _Plot1 < _Plot2 일때 각각 채워넣기를 한다.
plot2( iff( 구분[0] == "X", 저[0], 고[0] ) );
#=====================================================#
# 엑셀용 자료 가공
#=====================================================#
if lastbaronchart() then
{
price[1] = 고[0];
LowLimit = 저[0];
for k = 1 to 출력개수 // 50개 열까지만 출력하도록 하였으므로 이 부분은 취향에 맞춰 수정한다.
{
price[1] = max( price[1], 고[k] );
if 저[k] > 0 then
LowLimit = min( LowLimit, 저[k] );
}
n = 199;
for k = 2 to 199
{
price[k] = price[k-1] - ( TickSize( price[k-1] ) * 틱배수);
if price[k] < LowLimit then
{
n = k - 1;
k = 200;
}
}
col = min( col, 출력개수 );
for j = Col - 1 DownTo 0
{
for k = 1 to n
{
if 고[j] >= price[k] and price[k] >= 저[j] then
{
xo[k,Col-j] = 구분[j];
}
}
}
for k = 1 to n
{
Print(SymbolName+"_PnF.csv",",%.2f,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s"
,price[k],xo[k,1],xo[k,2],xo[k,3],xo[k,4],xo[k,5],xo[k,6],xo[k,7],xo[k,8],xo[k,9],xo[k,10]
,xo[k,11],xo[k,12],xo[k,13],xo[k,14],xo[k,15],xo[k,16],xo[k,17],xo[k,18],xo[k,19],xo[k,20]
,xo[k,21],xo[k,22],xo[k,23],xo[k,24],xo[k,25],xo[k,26],xo[k,27],xo[k,28],xo[k,29],xo[k,30]
,xo[k,31],xo[k,32],xo[k,33],xo[k,34],xo[k,35],xo[k,36],xo[k,37],xo[k,38],xo[k,39],xo[k,40]
,xo[k,41],xo[k,42],xo[k,43],xo[k,44],xo[k,45],xo[k,46],xo[k,47],xo[k,48],xo[k,49],xo[k,50]
);
}
}
선물지수100틱차트에 적용하려는데 잘안되요 애러납니다
수정 부탁드립니다