지수이동평균선의 기울기가 특정 기간동안 음수로 유지되고있다가 양수로 돌아서는 시점에 종목검색이 되게 하고싶습니다. 동일 코드로 지표도 만들었는데 지표는 잘 표시됨을 확인하였습니다만 종목검색이 제대로 되지 않습니다.
종목검색과 지표를 동일한 코드로 만들었기 때문에(맨 마지막의 plot과 find만 다름) 종목검색 결과에는 기준봉에 지표가 떠야한다고 생각하는데요,
의문점 : 지표와 관계없는 엉뚱한 종목도 검색됩니다.(8/23기준 셀트리온헬스케어)
- 따라서 제가 코딩한 조건에 맞는 종목이 누락되지 않나 하는 우려도 있습니다.
< 아래는 코드 >
input : eperiod(200), bowlperiod(13), n(10);
var : i(0), bowlpoint(0);
bowlpoint = 0;
For i = 1 to bowlperiod
if Ema(c, eperiod)[i] < Ema(c, eperiod)[i+1] Then bowlpoint = bowlpoint+1;
if bowlpoint >= n and Ema(c,eperiod)[0] > Ema(c,eperiod)[1] Then Find(m);
답변 2
예스스탁
예스스탁 답변
2021-08-24 10:23:06
안녕하세요
예스스탁입니다.
1
EP(평활계수) = 2/(기간 + 1)
EMA = 금일 종가 * EP + 전일의 지수 이동평균 * (1-EP)
지수이동평균은 과거봉수에 따라 현재값에 차이가 있는 지표입니다.
과거봉의 영향이 시간에 따라 차츰 소멸되므로
차트와 검색을 동일하게 봉수를 지정하고 검색하고 차트와 비교해 보셔야 합니다.
종목검색은 최대 500봉 까지 제공됩니다.
종목검색속성에서 검색에 필요한 최소기간에 500봉으로 설정하고
차트도 500봉만 조회하고 비교해 보시기 바랍니다.
2
수식에 작성시 동일계산을 하는 함수는 변수처리해서
한번만 계산하게 작성하는게 효율적입니다.
반복적으로 사용하면 식의 부하만 커지게 됩니다.
input : eperiod(200), bowlperiod(13), n(10);
var : Emav(0), i(0), bowlpoint(0);
Emav = Ema(c,eperiod);
bowlpoint = 0;
For i = 1 to bowlperiod
{
if emav[i] < emav[i+1] Then
bowlpoint = bowlpoint+1;
}
if bowlpoint >= n and Emav[0] > Emav[1] Then
Find(m);
3
위식은 아래와 같이 간단히 countif함수로 작성할수도 있습니다.
countif함수가 특정조건이 지정한 봉갯수 동안 몇번 만족했는지 리턴하는 함수입니다.
input : eperiod(200), bowlperiod(13), n(10);
var : Emav(0), bowlpoint(0);
Emav = Ema(c,eperiod);
bowlpoint = CountIf(Emav<Emav[1],bowlperiod);
if bowlpoint[1] >= n and Emav[0] > Emav[1] Then
Find(m);
즐거운 하루되세요
> yon 님이 쓴 글입니다.
> 제목 : 종목검색 오류문의
> 지수이동평균선의 기울기가 특정 기간동안 음수로 유지되고있다가 양수로 돌아서는 시점에 종목검색이 되게 하고싶습니다. 동일 코드로 지표도 만들었는데 지표는 잘 표시됨을 확인하였습니다만 종목검색이 제대로 되지 않습니다.
종목검색과 지표를 동일한 코드로 만들었기 때문에(맨 마지막의 plot과 find만 다름) 종목검색 결과에는 기준봉에 지표가 떠야한다고 생각하는데요,
의문점 : 지표와 관계없는 엉뚱한 종목도 검색됩니다.(8/23기준 셀트리온헬스케어)
- 따라서 제가 코딩한 조건에 맞는 종목이 누락되지 않나 하는 우려도 있습니다.
< 아래는 코드 >
input : eperiod(200), bowlperiod(13), n(10);
var : i(0), bowlpoint(0);
bowlpoint = 0;
For i = 1 to bowlperiod
if Ema(c, eperiod)[i] < Ema(c, eperiod)[i+1] Then bowlpoint = bowlpoint+1;
if bowlpoint >= n and Ema(c,eperiod)[0] > Ema(c,eperiod)[1] Then Find(m);