커뮤니티

문의합니다.

프로필 이미지
바블릭
2015-11-27 04:06:37
179
글번호 92831
답변완료
언제나 좋은 답변 감사드립니다. 다름이 아니라 nthghighestbar등을 이용하여 봉의 번호를 받아서 그 해당 봉의 값을 다시 받으려고 하니, 검색할 수 가 없다고 합니다. 아래는 수식의 일부입니다. d2maxval = NthHighest(1,emdisp2,50); d2minval = NthLowest(1,emdisp2,50); d3maxval = NthHighest(1,emdisp3,50); d3minval = NthLowest(1,emdisp3,50); d2maxno = NthHighestBar(1,emdisp2,50); d2minno = NthLowestBar(1,emdisp2,50); d3maxno = NthHighestBar(1,emdisp3,50); d3minno = NthLowestBar(1,emdisp3,50); nearno = int(NthMinList (1,d2maxno,d2minno,d3maxno,d3minno)); gapprev1 = d2maxno - d3minno; gapprev2 = d3maxno - d2minno; gap = int(max(gapprev1,gapprev2)); /* if (gapnow < gap && emdisp2[nearno] > emdisp3[nearno]) Then 점수 = 점수 + 3000; else if (gapnow < gap && emdisp3[nearno] > emdisp2[nearno]) Then 점수 = 점수 + 2000; */ 각 두 개의 라인 중 최대값과 최소값이 발생하는 4개의 구간을 비교하여 가장 현재와 가까이에 있는 값을 nearno에 넣었습니다. 혹시나 find(nearno)를 이용하여 출력하여 보니 예상보다 수량도 작게 나왔습니다. 그리고, 이 nearno변수를 이용하여 라인의 값을 찾기위해 emdisp2[nearno]를 하면 값이 나오질 않습니다. (10005번에러?) 혹시나 테스트로 emdisp2[45]이런식으로 입력하면 출력은 됩니다. 신호검색을 할 때 편집창에서 봉은 400봉정도 여유를 주었고 이동평균은 최대 120일만 사용하고 있습니다. 좋은 답변 부탁드립니다. 감사합니다.
종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-11-27 09:31:00

안녕하세요 예스스탁입니다. 1 종목검색은 다른식과 다르게 최초 실행시에 부하를 줄이기 위해 특정종목 한번 적용해 메모리를 산정하는데 해당 부분때문에 발생하는 내용일수 있습니다. NthHighest,NthLowest,NthHighestBar,NthLowestBar 위함수를 아래와 같이 풀어서 작성하시면 됩니다. 2 50봉중 가장큰값과 작은값이 현재봉이면 NthHighestBar과 NthLowestBar가 0이리턴됩니다. if조건을 만족하지 않은 종목에 0이 지정되어 제외되므로 find에 0이 지정되면 해당종목은 제외가 됩니다. 그러므로 0일 경우에는 0.01등을 할당해서 제외되지 않게 해주셔야 합니다. 3 아래는 각 함수를 풀어서 작성한 내용이고 현재봉을 1로 지정했습니다. input : P(50); var : cnt(0),emdisp2(0),emdisp3(0); var : d2maxval(0),d2minval(0),d2maxno(0),d2minno(0); var : d3maxval(0),d3minval(0),d3maxno(0),d3minno(0); var : nearno(0),gapprev1(0),gapprev2(0),gap(0); d2maxval = emdisp2; d2minval = emdisp2; d2maxno = 1; d2minno = 1; d3maxval = emdisp3; d3minval = emdisp3; d3maxno = 1; d3minno = 1; for cnt = 1 to P{ if emdisp2[cnt-1] > d2maxval Then{ d2maxval = emdisp2[cnt-1]; d2maxno = cnt; } if emdisp2[cnt-1] < d2minval Then{ d2minval = emdisp2[cnt-1]; d2minno = cnt; } if emdisp3[cnt-1] > d2maxval Then{ d2maxval = emdisp3[cnt-1]; d3maxno = cnt; } if emdisp3[cnt-1] < d2minval Then{ d2minval = emdisp3[cnt-1]; d3minno = cnt; } } nearno = int(NthMinList (1,d2maxno,d2minno,d3maxno,d3minno)); gapprev1 = d2maxno - d3minno; gapprev2 = d3maxno - d2minno; gap = int(max(gapprev1,gapprev2)); 즐거운 하루되세요 > 바블릭 님이 쓴 글입니다. > 제목 : 문의합니다. > 언제나 좋은 답변 감사드립니다. 다름이 아니라 nthghighestbar등을 이용하여 봉의 번호를 받아서 그 해당 봉의 값을 다시 받으려고 하니, 검색할 수 가 없다고 합니다. 아래는 수식의 일부입니다. d2maxval = NthHighest(1,emdisp2,50); d2minval = NthLowest(1,emdisp2,50); d3maxval = NthHighest(1,emdisp3,50); d3minval = NthLowest(1,emdisp3,50); d2maxno = NthHighestBar(1,emdisp2,50); d2minno = NthLowestBar(1,emdisp2,50); d3maxno = NthHighestBar(1,emdisp3,50); d3minno = NthLowestBar(1,emdisp3,50); nearno = int(NthMinList (1,d2maxno,d2minno,d3maxno,d3minno)); gapprev1 = d2maxno - d3minno; gapprev2 = d3maxno - d2minno; gap = int(max(gapprev1,gapprev2)); /* if (gapnow < gap && emdisp2[nearno] > emdisp3[nearno]) Then 점수 = 점수 + 3000; else if (gapnow < gap && emdisp3[nearno] > emdisp2[nearno]) Then 점수 = 점수 + 2000; */ 각 두 개의 라인 중 최대값과 최소값이 발생하는 4개의 구간을 비교하여 가장 현재와 가까이에 있는 값을 nearno에 넣었습니다. 혹시나 find(nearno)를 이용하여 출력하여 보니 예상보다 수량도 작게 나왔습니다. 그리고, 이 nearno변수를 이용하여 라인의 값을 찾기위해 emdisp2[nearno]를 하면 값이 나오질 않습니다. (10005번에러?) 혹시나 테스트로 emdisp2[45]이런식으로 입력하면 출력은 됩니다. 신호검색을 할 때 편집창에서 봉은 400봉정도 여유를 주었고 이동평균은 최대 120일만 사용하고 있습니다. 좋은 답변 부탁드립니다. 감사합니다.