커뮤니티
문의합니다.
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일만 사용하고 있습니다.
좋은 답변 부탁드립니다.
감사합니다.