커뮤니티
오차가 나는데 왜그런지 모르겠습니다.
2012-02-17 13:13:22
578
글번호 47872
-1 거래량 매물관련 지표를 만들고 있는 중입니다.
(저항대 지지대)
:가정: 봉의 시가 종가에만 에너기가 있다고 가정
과정: 지정수 만큼의 봉의 시가+종가 가격대에 거래량누적 통합
:출력 목표: 전일 종가대비 상하로 약100틱정도 안에 있는 지수대 에
거래량 누적 ,이동평균 고점 3개정도씩 의 지수선을
화면에 선으로 표시되게 하는것입이다..
**(참고 그림에서 나오는 녹색선만 화면에 나오게 하는게 목표)
나중에 그걸로 시스템을 한번 매매로직도 만들려고 하는데요
*참고 그림설명: 회색이 틱별로 거래량 누적
파랑선이 누적거래량 이동평균
녹색선 지지와 저항대 선(이동평균선 고점 3개)
------------------
일단 공부하면서 하는거라 많이 부족합니다.
첫째로 지수대별로 Array로 선언한 지수대를 배분을 하는것까지는 했는데
둘때로 분배한 함수랑 시가나 종가 일치시 거래량을 누적시키려는 과정에서
차트 그림에서 보면 자주색 선이 그날 종가값으로 나오게
선언한건데 종가랑 차이가 납니다.
종가자체가 제가 배분한값이랑 한틱정도씩 계속 오차가
나다가 안나다가 그러는데..
그래서 거래량 누적도 엉터리고..
도무지 수정이 안되내요
제힘으로 할려고 몇일동안 하다가 이유를 못찾아서.도움을 청합니다.
(여러 방법으로 한다고 정리가 안되서.수식이 좀 지저분합니다.)
지금 화면에 출력되게 해놓은것은.. 디버깅(?)할려고 출력되게 한겁니다.
질문1 제가 종가랑 일치할때 배열명에 올바르게 대입했다고 생각하는데 오차나는 이유는?
질문2 그리고 array로 방을 배분할때 음수 값은 인식이 안되는건가요? 전일 종가를
기준으로 하니까 음수값이 배분되었는데.. 인식 못하는듯 해서요
질문3, 제가 거래량 누적을 시 종가 틱단위로 하니까 누적거래량 높은순 3개로
매물벽 저항이나 지지로 잡으면.. 한두틱 차이로 선이 나올수도 있을듯 해서
이동평균 고점 3개 정도로 할려고 하는데 어려운 작업인가요??
질문4 . 제가 할려고 하는것 단순한듯도 한데..아닌가요?좀 도와 주시기 바랍니다.
도저히 힘드네요.. 이것도 4일째 공부하면서 하는중입니다. ㅠ.ㅠ
질문 5 .array 로 줄수있는 방수의 한계가 얼마인가요?? 높아지니 인식못하는듯 해서요
------------작업중인 수식--------
input : 기준기간(10),기준틱L(-200),기준틱H(200);
var : 저가(0),고가(0),hh(0),ll(0),고저차(0),TICK(1),arr(1),arro(1),arrc(1);
var : 호가수량(0),시가(0),전일종가(0),기준봉수(0),기준저가(0);
var : aaa(0),bbb(0),ccc(0),추가거래량(0), 행번호(0);
HH = Highest(H,기준기간);
LL = Lowest (L,기준기간);
시가=DayOpen(0);
전일종가=DayClose(1);
기준저가= 전일종가-(100*PriceScale);
호가수량= (hh-ll)/PriceScale;
기준봉수=(c-기준저가)/PriceScale;
bbb= 기준저가 +(기준봉수 * PriceScale);
Array : 기준가[1000](0);
Array : 기준거래량[1000](0);
행번호=0;
for 행번호 = 0 to 999 {기준가[0]=기준저가;
기준가[행번호+1]=기준가[행번호]+PriceScale;
}
행번호=0;
for 행번호 = 0 to 999 {
if 기준가[행번호]==bbb then (기준거래량[행번호]=기준거래량[행번호]+v);}
/*for 행번호 = 기준틱L to 기준틱H;
{
if 행번호 =기준봉수 then {
기준거래량[행번호]=기준거래량[행번호]+v;
}
}
*/
행번호=0;
for 행번호 = 180 to 200{
print("C:₩Documents and Settings₩Administrator₩바탕 화면₩test.cvc","%.2f,%.2f",기준가[행번호],기준거래량[행번호]);}
#ClearDebug();
MessageLog("%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f" ,기준가[102],기준가[103],행번호,기준봉수,c,bbb,기준거래량[기준봉수]);
Plot1(bbb,"종가");
Plot2(기준가[기준봉수],"기준봉수");
Plot3(기준거래량[기준봉수], "거래량");
- 1. image002.jpg (0.04 MB)
- 2. Untitled-1.jpg (0.21 MB)
답변 1
예스스탁 예스스탁 답변
2012-02-17 16:28:59
안녕하세요
예스스탁입니다.
1,
기존 기준봉수를 메세지로그로 출력해서 소숫점 15자리 정도 보시면
정수로 떨어져야 하는 값이 소숫점아래로 0.99999나 다른 값이 있는 것을 보실수 있습니다.
해당 사항은 랭귀지 자체의 오류는 아니며
컴퓨터의 실수연산시 발생하는 오류입니다.
이문제는 근본적으로 프로세서가 실수를 부동소수점형태의
테이터 표현방식을 사용함으로 인해서 소수를 이진수로 변환하는 과정에서 생기는 문제로
대부분의 컴퓨터에서 동일하게 일어나는 문제입니다.
이는 컴퓨터자체의 부동소숫점 계산 오류로
인터넷에서 해당 내용 검색하시면 여러 글들 보실 수 있습니다.
아래와 같이 처리하시면 됩니다.
기준봉수= round((c-기준저가)/PriceScale,0);
2.
배열방에 음수값은 지원되지 않습니다
모두 양수로 작성하셔야 합니다.
3.
말씀하신 내용만으로는 정확히 수식처리가 감이 잡히지 않습니다.
쉽게 처리가 되지는 않을 것 같습니다.
각 배열방 별로 누적횟수를 구해 평균내서 파악해 가야할것 같습니다.
수식 문의가 많아 장기간 소요되는 내용은 따로 답변을 드리기가 어렵습니다.
작성해 보시고 잘 안되시면 작성하신 내용포함해서 올려주시기 바랍니다.
4
배열의 방갯수 제한은 없습니다.
컴퓨터에 로드가 많이 걸리지 않도록 최대한 사용하시면 됩니다.
즐거운 하루되세요
> 사랑초 님이 쓴 글입니다.
> 제목 : 오차가 나는데 왜그런지 모르겠습니다.
>
-1 거래량 매물관련 지표를 만들고 있는 중입니다.
(저항대 지지대)
:가정: 봉의 시가 종가에만 에너기가 있다고 가정
과정: 지정수 만큼의 봉의 시가+종가 가격대에 거래량누적 통합
:출력 목표: 전일 종가대비 상하로 약100틱정도 안에 있는 지수대 에
거래량 누적 ,이동평균 고점 3개정도씩 의 지수선을
화면에 선으로 표시되게 하는것입이다..
**(참고 그림에서 나오는 녹색선만 화면에 나오게 하는게 목표)
나중에 그걸로 시스템을 한번 매매로직도 만들려고 하는데요
*참고 그림설명: 회색이 틱별로 거래량 누적
파랑선이 누적거래량 이동평균
녹색선 지지와 저항대 선(이동평균선 고점 3개)
------------------
일단 공부하면서 하는거라 많이 부족합니다.
첫째로 지수대별로 Array로 선언한 지수대를 배분을 하는것까지는 했는데
둘때로 분배한 함수랑 시가나 종가 일치시 거래량을 누적시키려는 과정에서
차트 그림에서 보면 자주색 선이 그날 종가값으로 나오게
선언한건데 종가랑 차이가 납니다.
종가자체가 제가 배분한값이랑 한틱정도씩 계속 오차가
나다가 안나다가 그러는데..
그래서 거래량 누적도 엉터리고..
도무지 수정이 안되내요
제힘으로 할려고 몇일동안 하다가 이유를 못찾아서.도움을 청합니다.
(여러 방법으로 한다고 정리가 안되서.수식이 좀 지저분합니다.)
지금 화면에 출력되게 해놓은것은.. 디버깅(?)할려고 출력되게 한겁니다.
질문1 제가 종가랑 일치할때 배열명에 올바르게 대입했다고 생각하는데 오차나는 이유는?
질문2 그리고 array로 방을 배분할때 음수 값은 인식이 안되는건가요? 전일 종가를
기준으로 하니까 음수값이 배분되었는데.. 인식 못하는듯 해서요
질문3, 제가 거래량 누적을 시 종가 틱단위로 하니까 누적거래량 높은순 3개로
매물벽 저항이나 지지로 잡으면.. 한두틱 차이로 선이 나올수도 있을듯 해서
이동평균 고점 3개 정도로 할려고 하는데 어려운 작업인가요??
질문4 . 제가 할려고 하는것 단순한듯도 한데..아닌가요?좀 도와 주시기 바랍니다.
도저히 힘드네요.. 이것도 4일째 공부하면서 하는중입니다. ㅠ.ㅠ
질문 5 .array 로 줄수있는 방수의 한계가 얼마인가요?? 높아지니 인식못하는듯 해서요
------------작업중인 수식--------
input : 기준기간(10),기준틱L(-200),기준틱H(200);
var : 저가(0),고가(0),hh(0),ll(0),고저차(0),TICK(1),arr(1),arro(1),arrc(1);
var : 호가수량(0),시가(0),전일종가(0),기준봉수(0),기준저가(0);
var : aaa(0),bbb(0),ccc(0),추가거래량(0), 행번호(0);
HH = Highest(H,기준기간);
LL = Lowest (L,기준기간);
시가=DayOpen(0);
전일종가=DayClose(1);
기준저가= 전일종가-(100*PriceScale);
호가수량= (hh-ll)/PriceScale;
기준봉수=(c-기준저가)/PriceScale;
bbb= 기준저가 +(기준봉수 * PriceScale);
Array : 기준가[1000](0);
Array : 기준거래량[1000](0);
행번호=0;
for 행번호 = 0 to 999 {기준가[0]=기준저가;
기준가[행번호+1]=기준가[행번호]+PriceScale;
}
행번호=0;
for 행번호 = 0 to 999 {
if 기준가[행번호]==bbb then (기준거래량[행번호]=기준거래량[행번호]+v);}
/*for 행번호 = 기준틱L to 기준틱H;
{
if 행번호 =기준봉수 then {
기준거래량[행번호]=기준거래량[행번호]+v;
}
}
*/
행번호=0;
for 행번호 = 180 to 200{
print("C:₩Documents and Settings₩Administrator₩바탕 화면₩test.cvc","%.2f,%.2f",기준가[행번호],기준거래량[행번호]);}
#ClearDebug();
MessageLog("%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f" ,기준가[102],기준가[103],행번호,기준봉수,c,bbb,기준거래량[기준봉수]);
Plot1(bbb,"종가");
Plot2(기준가[기준봉수],"기준봉수");
Plot3(기준거래량[기준봉수], "거래량");