커뮤니티

수식수정부탁드립니다=======

프로필 이미지
leekss1
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틱차트에 적용하려는데 잘안되요 애러납니다 수정 부탁드립니다