커뮤니티

부탁 드립니다.

프로필 이미지
빈둥빈둥
2013-09-24 18:47:50
132
글번호 67774
답변완료
수고 많으십니다. 아래의 수식은 전에 게시판 답변에 나온 내용입니다. 주봉값을 기준으로 일봉에서 구현할수 있을지 문의 드립니다. 노고에 항상 감사드립니다. Var:j(0),행번호(0),단위가격(0),추가행(0),알파벳(0),최대개수(0),총개수(0),봉개수(0), 추정거래량(0),cnt(0),중앙가격(0),최대행(0),중심행(0),상위개수(0), 하위개수(0),시초범위상(0),시초범위하(0),가치영역상한(0),가치영역하한(0),누적개수(0), 위꼬리상한(0),위꼬리하한(0),아래꼬리상한(0),아래꼬리하한(0); Array:가격대[100](0),거래량[100](0),개수[100](0),프로파일[100](0), 가치영역상[10](0),가치영역하[10](0),중심가격[100](0); 단위가격 = 2 * PriceScale; if DayIndex()==0 then { //날짜 변경시점에 for j = 8 downto 0 { 중심가격[j+1] = 중심가격[j]; //전일 중심가격과 가치영역상[j+1] = 가치영역상[j]; //전일 가치영역 관리 가치영역하[j+1] = 가치영역하[j]; } for 행번호 = 0 to 99 { //0값으로 초기화 거래량[행번호] = 0; 개수[행번호] = 0; 프로파일[행번호] = 0; } 최대개수 = 0; 총개수 = 0; 시초범위상 = 0; //장 개시 후 1시간내의 가격범위 시초범위하 = 0; 가격대[0] = H + 단위가격 * 20; //20호가의 여유를 둠 for 행번호 = 0 to 98 { 가격대[행번호+1] = 가격대[행번호] - 단위가격; //가격대 배열에 가격 대입 } } if 가격대[0] <= H then { //고가가 가격대 배열 이상이 되면 추가행 = ceiling((H-가격대[0])/단위가격) + 5; //고가에 5호가 여유를 더 두어 재설정 for 행번호 = (99 - 추가행) downto 0 { 가격대[행번호+추가행] = 가격대[행번호]; //추가행만큼 뒤로 옮긴다 거래량[행번호+추가행] = 거래량[행번호]; 개수[행번호+추가행] = 개수[행번호]; 프로파일[행번호+추가행] = 프로파일[행번호]; } 가격대[0] = 가격대[0] + 단위가격 * 추가행; //추가된 행에 가격 재설정 for 행번호 = 0 to (추가행-1) { 가격대[행번호+1] = 가격대[행번호] - 단위가격; } for 행번호 = 0 to 추가행 { //추가된 행의 나머지 항목은 거래량[행번호] = 0; //0값으로 초기화 개수[행번호] = 0; 프로파일[행번호] = 0; } 중심행 = 중심행 + 추가행; //중심가격의 행번호도 뒤로 밀린다 } 알파벳 = DayIndex() + 1; //알파벳 대신 숫자 사용 중앙가격 = (DayHigh()+Daylow())/2; //전체가격폭의 중앙 if DayIndex() == 60/BarInterval-1 then { //장 개시 후 1시간내의 가격범위 시초범위상 = DayHigh(); 시초범위하 = DayLow(); } cnt = 0; for 행번호 = 0 to 99 { if L <= 가격대[행번호] and 가격대[행번호] <= H then { //현재 봉 가격대가 몇가격대에 cnt = cnt + 1; //걸쳐져 있는지 계산 } } 추정거래량 = V/cnt; //가격대별 배분할 거래량 for 행번호 = 0 to 99 { if L <= 가격대[행번호] and 가격대[행번호] <= H then { 거래량[행번호] = 거래량[행번호] + 추정거래량; 개수[행번호] = 개수[행번호] + 1; 프로파일[행번호] = 알파벳; 총개수 = 총개수 + 1; if 최대개수 < 개수[행번호] then { //신규 최빈값 나왔을 때 최대개수 = 개수[행번호]; 중심행 = 행번호; } else if 최대개수 == 개수[행번호] then { //최빈값과 동일하다면 if 거래량[중심행] < 거래량[행번호] then //거래량 많은 가격대를 중심행 = 행번호; else if 거래량[중심행] == 거래량[행번호] and //거래량도 동일하면 abs(중앙가격-가격대[중심행]) > //전체가격폭 중앙에 abs(중앙가격-가격대[행번호]) then //가까운 가격으로 중심행 = 행번호; } } } //알파벳 개수가 가장 많은 가격 봉개수 = 0; //단봉, 쌍봉, 삼봉 등 패턴파악용 for 행번호 = 1 to 99 { if 개수[행번호-1] < 개수[행번호] then { //개수가 올라가면 if 봉개수 == 0 then 봉개수 = 0.3; //x.3 else if 봉개수 == 1 then 봉개수 = 1.3; else if 봉개수 == 2 then 봉개수 = 2.3; else if 봉개수 == 3 then 봉개수 = 3.3; else if 봉개수 == 4 then 봉개수 = 4.3; } if 최대개수 * 0.8 < 개수[행번호] then { //꼭지에 도달하면 if 봉개수 == 0.3 then 봉개수 = 0.7; //x.7 else if 봉개수 == 1.3 then 봉개수 = 1.7; //낮은 봉은 배제하려고 else if 봉개수 == 2.3 then 봉개수 = 2.7; //최대개수의 80% 수준으로 설정 else if 봉개수 == 3.3 then 봉개수 = 3.7; else if 봉개수 == 4.3 then 봉개수 = 4.7; } if 개수[행번호-1] > 개수[행번호] then { //개수가 떨어지는데 if 봉개수 == 0.7 then 봉개수 = 1; //꼭지 찍고 내려오는 것은 else if 봉개수 == 1.7 then 봉개수 = 2; //1.0 else if 봉개수 == 2.7 then 봉개수 = 3; else if 봉개수 == 3.7 then 봉개수 = 4; else if 봉개수 == 4.7 then 봉개수 = 5; else if 봉개수 == 0.3 then 봉개수 = 0; //꼭지 못찍고 내려오면 else if 봉개수 == 1.3 then 봉개수 = 1; //원위치 else if 봉개수 == 2.3 then 봉개수 = 2; else if 봉개수 == 3.3 then 봉개수 = 3; else if 봉개수 == 4.3 then 봉개수 = 4; } } 중심가격[0] = 가격대[중심행]; plot1(중심가격[0]);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-09-25 11:12:49

안녕하세요 예스스탁입니다. 올려주신 수식은 계산 내용상 가능하지 않습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 빈둥빈둥 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 수고 많으십니다. 아래의 수식은 전에 게시판 답변에 나온 내용입니다. 주봉값을 기준으로 일봉에서 구현할수 있을지 문의 드립니다. 노고에 항상 감사드립니다. Var:j(0),행번호(0),단위가격(0),추가행(0),알파벳(0),최대개수(0),총개수(0),봉개수(0), 추정거래량(0),cnt(0),중앙가격(0),최대행(0),중심행(0),상위개수(0), 하위개수(0),시초범위상(0),시초범위하(0),가치영역상한(0),가치영역하한(0),누적개수(0), 위꼬리상한(0),위꼬리하한(0),아래꼬리상한(0),아래꼬리하한(0); Array:가격대[100](0),거래량[100](0),개수[100](0),프로파일[100](0), 가치영역상[10](0),가치영역하[10](0),중심가격[100](0); 단위가격 = 2 * PriceScale; if DayIndex()==0 then { //날짜 변경시점에 for j = 8 downto 0 { 중심가격[j+1] = 중심가격[j]; //전일 중심가격과 가치영역상[j+1] = 가치영역상[j]; //전일 가치영역 관리 가치영역하[j+1] = 가치영역하[j]; } for 행번호 = 0 to 99 { //0값으로 초기화 거래량[행번호] = 0; 개수[행번호] = 0; 프로파일[행번호] = 0; } 최대개수 = 0; 총개수 = 0; 시초범위상 = 0; //장 개시 후 1시간내의 가격범위 시초범위하 = 0; 가격대[0] = H + 단위가격 * 20; //20호가의 여유를 둠 for 행번호 = 0 to 98 { 가격대[행번호+1] = 가격대[행번호] - 단위가격; //가격대 배열에 가격 대입 } } if 가격대[0] <= H then { //고가가 가격대 배열 이상이 되면 추가행 = ceiling((H-가격대[0])/단위가격) + 5; //고가에 5호가 여유를 더 두어 재설정 for 행번호 = (99 - 추가행) downto 0 { 가격대[행번호+추가행] = 가격대[행번호]; //추가행만큼 뒤로 옮긴다 거래량[행번호+추가행] = 거래량[행번호]; 개수[행번호+추가행] = 개수[행번호]; 프로파일[행번호+추가행] = 프로파일[행번호]; } 가격대[0] = 가격대[0] + 단위가격 * 추가행; //추가된 행에 가격 재설정 for 행번호 = 0 to (추가행-1) { 가격대[행번호+1] = 가격대[행번호] - 단위가격; } for 행번호 = 0 to 추가행 { //추가된 행의 나머지 항목은 거래량[행번호] = 0; //0값으로 초기화 개수[행번호] = 0; 프로파일[행번호] = 0; } 중심행 = 중심행 + 추가행; //중심가격의 행번호도 뒤로 밀린다 } 알파벳 = DayIndex() + 1; //알파벳 대신 숫자 사용 중앙가격 = (DayHigh()+Daylow())/2; //전체가격폭의 중앙 if DayIndex() == 60/BarInterval-1 then { //장 개시 후 1시간내의 가격범위 시초범위상 = DayHigh(); 시초범위하 = DayLow(); } cnt = 0; for 행번호 = 0 to 99 { if L <= 가격대[행번호] and 가격대[행번호] <= H then { //현재 봉 가격대가 몇가격대에 cnt = cnt + 1; //걸쳐져 있는지 계산 } } 추정거래량 = V/cnt; //가격대별 배분할 거래량 for 행번호 = 0 to 99 { if L <= 가격대[행번호] and 가격대[행번호] <= H then { 거래량[행번호] = 거래량[행번호] + 추정거래량; 개수[행번호] = 개수[행번호] + 1; 프로파일[행번호] = 알파벳; 총개수 = 총개수 + 1; if 최대개수 < 개수[행번호] then { //신규 최빈값 나왔을 때 최대개수 = 개수[행번호]; 중심행 = 행번호; } else if 최대개수 == 개수[행번호] then { //최빈값과 동일하다면 if 거래량[중심행] < 거래량[행번호] then //거래량 많은 가격대를 중심행 = 행번호; else if 거래량[중심행] == 거래량[행번호] and //거래량도 동일하면 abs(중앙가격-가격대[중심행]) > //전체가격폭 중앙에 abs(중앙가격-가격대[행번호]) then //가까운 가격으로 중심행 = 행번호; } } } //알파벳 개수가 가장 많은 가격 봉개수 = 0; //단봉, 쌍봉, 삼봉 등 패턴파악용 for 행번호 = 1 to 99 { if 개수[행번호-1] < 개수[행번호] then { //개수가 올라가면 if 봉개수 == 0 then 봉개수 = 0.3; //x.3 else if 봉개수 == 1 then 봉개수 = 1.3; else if 봉개수 == 2 then 봉개수 = 2.3; else if 봉개수 == 3 then 봉개수 = 3.3; else if 봉개수 == 4 then 봉개수 = 4.3; } if 최대개수 * 0.8 < 개수[행번호] then { //꼭지에 도달하면 if 봉개수 == 0.3 then 봉개수 = 0.7; //x.7 else if 봉개수 == 1.3 then 봉개수 = 1.7; //낮은 봉은 배제하려고 else if 봉개수 == 2.3 then 봉개수 = 2.7; //최대개수의 80% 수준으로 설정 else if 봉개수 == 3.3 then 봉개수 = 3.7; else if 봉개수 == 4.3 then 봉개수 = 4.7; } if 개수[행번호-1] > 개수[행번호] then { //개수가 떨어지는데 if 봉개수 == 0.7 then 봉개수 = 1; //꼭지 찍고 내려오는 것은 else if 봉개수 == 1.7 then 봉개수 = 2; //1.0 else if 봉개수 == 2.7 then 봉개수 = 3; else if 봉개수 == 3.7 then 봉개수 = 4; else if 봉개수 == 4.7 then 봉개수 = 5; else if 봉개수 == 0.3 then 봉개수 = 0; //꼭지 못찍고 내려오면 else if 봉개수 == 1.3 then 봉개수 = 1; //원위치 else if 봉개수 == 2.3 then 봉개수 = 2; else if 봉개수 == 3.3 then 봉개수 = 3; else if 봉개수 == 4.3 then 봉개수 = 4; } } 중심가격[0] = 가격대[중심행]; plot1(중심가격[0]);