예스스탁
예스스탁 답변
2020-09-10 18:05:49
안녕하세요
예스스탁입니다.
1
datep(250),k(25),n(500)
종목검색은 최대 500봉까지만 제공됩니다.
500봉 이상 요구되는 내용은 검색할수 없습니다.
sum을 계산하기 위해서 최소 과거 250개의 봉이 필요하고
다시 이 sum의 500개를 모아 최고와 최저를 계산하기 위해서는 총 750개의 봉이 필요합니다.
최대제공봉수가 500봉이므로 해당 봉수 감안해서 기간 지정하셔야 합니다.
아래 지표 적용해 보시면 계산에 필요한 최소봉개수를 지표로 보실수 있습니다.
Input : datep(250), n(500), k(25);
VAR : CNT(0), SUM(0),hh(0),hi(0),ll(0);
SUM = 0;
For cnt = 0 to datep
{
if c[cnt] > c[cnt+1] Then
sum = sum + v[cnt];
Else if c[cnt] < c[cnt+1] Then
sum = sum - v[cnt];
Else
sum = sum + 0 ;
}
IF abs(highest(sum,n)) >= abs(lowest(sum,n)) Then
var1 = abs(highest(sum,n));
Else
var1 = abs(lowest(sum,n));
IF abs(highest(sum,k)) >= abs(lowest(sum,k)) Then
var2 = abs(highest(sum,k));
Else
var2 = abs(lowest(sum,k));
Plot1(MaxBarsBack);
2
for문으로 작성되는 내용은 간단히 accumn함수로 대체해 드립니다.
기간은 좀 작게 설정해 드립니다.
최대제공 봉수인 500봉 감안하셔서 기간 지정하시기 바랍니다.
Input : datep1(20),datep2(18),datep3(12),n(100), k(25);
VAR : value(0),sum1(0),sum2(0),sum3(0),hh(0),hi(0),ll(0);
if c > c[1] Then
value = v;
Else if c < c[1] Then
value = -v;
Else
value = 0;
sum1 = AccumN(value,datep1+1);
sum2 = AccumN(value,datep2+1);
sum3 = AccumN(value,datep3+1);
IF abs(highest(sum1,n)) >= abs(lowest(sum1,n)) Then
var1 = abs(highest(sum1,n));
Else
var1 = abs(lowest(sum1,n));
IF abs(highest(sum1,k)) >= abs(lowest(sum1,k)) Then
var2 = abs(highest(sum1,k));
Else
var2 = abs(lowest(sum1,k));
IF abs(highest(sum2,n)) >= abs(lowest(sum2,n)) Then
var3 = abs(highest(sum2,n));
Else
var3 = abs(lowest(sum2,n));
IF abs(highest(sum2,k)) >= abs(lowest(sum2,k)) Then
var4 = abs(highest(sum2,k));
Else
var4 = abs(lowest(sum2,k));
IF abs(highest(sum3,n)) >= abs(lowest(sum3,n)) Then
var5 = abs(highest(sum3,n));
Else
var5 = abs(lowest(sum3,n));
IF abs(highest(sum3,k)) >= abs(lowest(sum3,k)) Then
var6 = abs(highest(sum3,k));
Else
var6 = abs(lowest(sum3,k));
If Var2 < Var1*0.3 and
Var4 < Var2*0.3 and
Var6 < Var5*0.3 Then
find(1);
3-1 특정일 지정
또한 기간은 좀 작게 설정해 드립니다. 최대제공 봉수인 500봉 감안하셔서 기간 지정하시기 바랍니다.
Input : datep(25), n(100), k(25),nd(20200831);
VAR : value(0), CNT(0), SUM(0),hh(0),hi(0),ll(0);
if c > c[1] Then
value = v;
Else if c < c[1] Then
value = -v;
Else
value = 0;
SUM = AccumN(value,datep+1);
IF abs(highest(sum,n)) >= abs(lowest(sum,n)) Then
var1 = abs(highest(sum,n));
Else
var1 = abs(lowest(sum,n));
IF abs(highest(sum,k)) >= abs(lowest(sum,k)) Then
var2 = abs(highest(sum,k));
Else
var2 = abs(lowest(sum,k));
If sDate == nd and Var2 < Var1*0.3 Then
Condition1 = true;
if Condition1 == true Then
find(1);
3-2 특정기간
Input : datep(250), n(500), k(25),sd(20200801),ed(20200831);
VAR : value(0), CNT(0), SUM(0),hh(0),hi(0),ll(0);
if c > c[1] Then
value = v;
Else if c < c[1] Then
value = -v;
Else
value = 0;
SUM = AccumN(value,datep+1);
IF abs(highest(sum,n)) >= abs(lowest(sum,n)) Then
var1 = abs(highest(sum,n));
Else
var1 = abs(lowest(sum,n));
IF abs(highest(sum,k)) >= abs(lowest(sum,k)) Then
var2 = abs(highest(sum,k));
Else
var2 = abs(lowest(sum,k));
If sDate >= SD AND sDate <= ED and Var2 < Var1*0.3 Then
Condition1 = true;
if Condition1 == true Then
find(1);
즐거운 하루되세요
> 개성상인 님이 쓴 글입니다.
> 제목 : 종목이 안나와요
> 아래의수식에서 250일동안의 누적인 sum값에 대해 # datep(250)
1.
25일 기간 위 sum값의 최고값의 절대값과 최저값의 절대값 중 큰 값이 # k(25)
500일 기간 위 sum값의 최고값의 절대값과 최저값의 절대값 중 큰 값의 # n(500)
30% 미만인 주식 종목 검색식인데요....
첨부와 같이 지표로 만들어 보면 많이 나오는데
종목이 검색이 되지를 않네요...???
2. 180일동안의 sum값과 120일동안의 sum값에 대해서도 # datep(250), datep(180), datep(120)
동시에 만족하는 종목을 검색하려면 어떻게 하나요?
3. 과거특정일에서 그 이전 데이타를 검색하는 수식도 부탁드립니다.
( 예를 들어 2020-08-31에 검색했을때의 검색값 )
과거특정일에서부터 N일 동안의 검색 데이타를 모두 검색되면 더욱 좋겠습니다.
( 예를 들어 2020-08-01 ~ 2020-08-31 한달 동안에 매일 검색했을때 나올
모든 검색값 N일 = 31일 )
Input : datep(250), n(500), k(25);
VAR : CNT(0), SUM(0),hh(0),hi(0),ll(0);
SUM = 0;
For cnt = 0 to datep
{ if c[cnt] > c[cnt+1] Then
sum = sum + v[cnt];
Else if c[cnt] < c[cnt+1] Then
sum = sum - v[cnt];
Else
sum = sum + 0 ; }
IF abs(highest(sum,n)) >= abs(lowest(sum,n)) Then
var1 = abs(highest(sum,n));
Else
var1 = abs(lowest(sum,n));
IF abs(highest(sum,k)) >= abs(lowest(sum,k)) Then
var2 = abs(highest(sum,k));
Else
var2 = abs(lowest(sum,k));
If Var2 < Var1*0.3
Then
find(1);